Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
8f343b7b
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,发现更多精彩内容 >>
未验证
提交
8f343b7b
编写于
8月 23, 2018
作者:
I
Isidor Nikolic
提交者:
GitHub
8月 23, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #57022 from Microsoft/isidorn/getWorkspaceLabel
UriLabelService.getWorkspaceLabel
上级
18c3630d
1b07ac78
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
147 addition
and
128 deletion
+147
-128
src/vs/code/electron-main/menubar.ts
src/vs/code/electron-main/menubar.ts
+3
-3
src/vs/code/electron-main/menus.ts
src/vs/code/electron-main/menus.ts
+3
-3
src/vs/editor/standalone/browser/simpleServices.ts
src/vs/editor/standalone/browser/simpleServices.ts
+5
-1
src/vs/platform/history/electron-main/historyMainService.ts
src/vs/platform/history/electron-main/historyMainService.ts
+2
-4
src/vs/platform/uriLabel/common/uriLabel.ts
src/vs/platform/uriLabel/common/uriLabel.ts
+36
-3
src/vs/platform/uriLabel/test/uriLabel.test.ts
src/vs/platform/uriLabel/test/uriLabel.test.ts
+2
-2
src/vs/platform/workspace/common/workspace.ts
src/vs/platform/workspace/common/workspace.ts
+1
-17
src/vs/platform/workspace/test/common/testWorkspace.ts
src/vs/platform/workspace/test/common/testWorkspace.ts
+1
-2
src/vs/platform/workspace/test/common/workspace.test.ts
src/vs/platform/workspace/test/common/workspace.test.ts
+4
-4
src/vs/platform/workspaces/common/workspaces.ts
src/vs/platform/workspaces/common/workspaces.ts
+16
-36
src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts
src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts
+10
-2
src/vs/workbench/api/node/extHost.api.impl.ts
src/vs/workbench/api/node/extHost.api.impl.ts
+1
-1
src/vs/workbench/api/node/extHostWorkspace.ts
src/vs/workbench/api/node/extHostWorkspace.ts
+10
-2
src/vs/workbench/browser/parts/titlebar/menubarControl.ts
src/vs/workbench/browser/parts/titlebar/menubarControl.ts
+3
-5
src/vs/workbench/browser/parts/titlebar/titlebarPart.ts
src/vs/workbench/browser/parts/titlebar/titlebarPart.ts
+1
-1
src/vs/workbench/electron-browser/actions.ts
src/vs/workbench/electron-browser/actions.ts
+3
-3
src/vs/workbench/electron-browser/shell.ts
src/vs/workbench/electron-browser/shell.ts
+3
-0
src/vs/workbench/electron-browser/workbench.ts
src/vs/workbench/electron-browser/workbench.ts
+1
-2
src/vs/workbench/parts/files/electron-browser/views/emptyView.ts
...workbench/parts/files/electron-browser/views/emptyView.ts
+1
-1
src/vs/workbench/parts/files/electron-browser/views/explorerView.ts
...kbench/parts/files/electron-browser/views/explorerView.ts
+4
-2
src/vs/workbench/parts/logs/electron-browser/logsActions.ts
src/vs/workbench/parts/logs/electron-browser/logsActions.ts
+10
-5
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
...s/workbench/parts/search/test/common/queryBuilder.test.ts
+1
-1
src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts
...kbench/parts/welcome/page/electron-browser/welcomePage.ts
+3
-6
src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts
...es/backup/test/electron-browser/backupFileService.test.ts
+1
-1
src/vs/workbench/services/configuration/node/configurationService.ts
...bench/services/configuration/node/configurationService.ts
+4
-11
src/vs/workbench/services/configuration/test/common/configurationModels.test.ts
...ces/configuration/test/common/configurationModels.test.ts
+1
-1
src/vs/workbench/services/extensions/electron-browser/extensionHost.ts
...nch/services/extensions/electron-browser/extensionHost.ts
+11
-3
src/vs/workbench/services/files/test/electron-browser/fileService.test.ts
.../services/files/test/electron-browser/fileService.test.ts
+4
-4
src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts
...eybinding/test/electron-browser/keybindingEditing.test.ts
+1
-1
src/vs/workbench/test/browser/parts/editor/breadcrumbModel.test.ts
...rkbench/test/browser/parts/editor/breadcrumbModel.test.ts
+1
-1
未找到文件。
src/vs/code/electron-main/menubar.ts
浏览文件 @
8f343b7b
...
...
@@ -19,7 +19,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import
{
mnemonicMenuLabel
as
baseMnemonicLabel
,
unmnemonicLabel
}
from
'
vs/base/common/labels
'
;
import
{
IWindowsMainService
,
IWindowsCountChangedEvent
}
from
'
vs/platform/windows/electron-main/windows
'
;
import
{
IHistoryMainService
}
from
'
vs/platform/history/common/history
'
;
import
{
IWorkspaceIdentifier
,
getWorkspaceLabel
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IMenubarData
,
IMenubarKeybinding
,
MenubarMenuItem
,
isMenubarMenuItemSeparator
,
isMenubarMenuItemSubmenu
,
isMenubarMenuItemAction
}
from
'
vs/platform/menubar/common/menubar
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
...
...
@@ -563,10 +563,10 @@ export class Menubar {
let
label
:
string
;
let
uri
:
URI
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspaceOrFile
)
&&
!
isFile
)
{
label
=
unmnemonicLabel
(
getWorkspaceLabel
(
workspaceOrFile
,
this
.
environmentService
,
this
.
uriLabelServic
e
,
{
verbose
:
true
}));
label
=
unmnemonicLabel
(
this
.
uriLabelService
.
getWorkspaceLabel
(
workspaceOrFil
e
,
{
verbose
:
true
}));
uri
=
workspaceOrFile
;
}
else
if
(
isWorkspaceIdentifier
(
workspaceOrFile
))
{
label
=
getWorkspaceLabel
(
workspaceOrFile
,
this
.
environmentService
,
this
.
uriLabelServic
e
,
{
verbose
:
true
});
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspaceOrFil
e
,
{
verbose
:
true
});
uri
=
URI
.
file
(
workspaceOrFile
.
configPath
);
}
else
{
label
=
unmnemonicLabel
(
this
.
uriLabelService
.
getLabel
(
workspaceOrFile
));
...
...
src/vs/code/electron-main/menus.ts
浏览文件 @
8f343b7b
...
...
@@ -22,7 +22,7 @@ import { mnemonicMenuLabel as baseMnemonicLabel, unmnemonicLabel } from 'vs/base
import
{
KeybindingsResolver
}
from
'
vs/code/electron-main/keyboard
'
;
import
{
IWindowsMainService
,
IWindowsCountChangedEvent
}
from
'
vs/platform/windows/electron-main/windows
'
;
import
{
IHistoryMainService
}
from
'
vs/platform/history/common/history
'
;
import
{
IWorkspaceIdentifier
,
getWorkspaceLabel
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
...
...
@@ -491,10 +491,10 @@ export class CodeMenu {
let
label
:
string
;
let
uri
:
URI
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
label
=
unmnemonicLabel
(
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
,
{
verbose
:
true
}));
label
=
unmnemonicLabel
(
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
,
{
verbose
:
true
}));
uri
=
workspace
;
}
else
if
(
isWorkspaceIdentifier
(
workspace
))
{
label
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
,
{
verbose
:
true
});
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
,
{
verbose
:
true
});
uri
=
URI
.
file
(
workspace
.
configPath
);
}
else
{
uri
=
URI
.
file
(
workspace
);
...
...
src/vs/editor/standalone/browser/simpleServices.ts
浏览文件 @
8f343b7b
...
...
@@ -508,7 +508,7 @@ export class SimpleWorkspaceContextService implements IWorkspaceContextService {
constructor
()
{
const
resource
=
URI
.
from
({
scheme
:
SimpleWorkspaceContextService
.
SCHEME
,
authority
:
'
model
'
,
path
:
'
/
'
});
this
.
workspace
=
{
id
:
'
4064f6ec-cb38-4ad0-af64-ee6467e63c82
'
,
folders
:
[
new
WorkspaceFolder
({
uri
:
resource
,
name
:
''
,
index
:
0
})]
,
name
:
resource
.
fsPath
};
this
.
workspace
=
{
id
:
'
4064f6ec-cb38-4ad0-af64-ee6467e63c82
'
,
folders
:
[
new
WorkspaceFolder
({
uri
:
resource
,
name
:
''
,
index
:
0
})]
};
}
public
getWorkspace
():
IWorkspace
{
...
...
@@ -609,6 +609,10 @@ export class SimpleUriLabelService implements IUriLabelService {
return
resource
.
path
;
}
public
getWorkspaceLabel
(
workspace
:
IWorkspaceIdentifier
|
URI
|
IWorkspace
,
options
?:
{
verbose
:
boolean
;
}):
string
{
return
''
;
}
public
registerFormater
(
schema
:
string
,
formater
:
UriLabelRules
):
IDisposable
{
throw
new
Error
(
'
Not implemented
'
);
}
...
...
src/vs/platform/history/electron-main/historyMainService.ts
浏览文件 @
8f343b7b
...
...
@@ -14,9 +14,8 @@ import { getBaseLabel } from 'vs/base/common/labels';
import
{
IPath
}
from
'
vs/platform/windows/common/windows
'
;
import
{
Event
as
CommonEvent
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
isWindows
,
isMacintosh
,
isLinux
}
from
'
vs/base/common/platform
'
;
import
{
IWorkspaceIdentifier
,
IWorkspacesMainService
,
getWorkspaceLabel
,
IWorkspaceSavedEvent
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
IWorkspacesMainService
,
IWorkspaceSavedEvent
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IHistoryMainService
,
IRecentlyOpened
}
from
'
vs/platform/history/common/history
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
isEqual
}
from
'
vs/base/common/paths
'
;
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
{
getComparisonKey
,
isEqual
as
areResourcesEqual
,
dirname
}
from
'
vs/base/common/resources
'
;
...
...
@@ -52,7 +51,6 @@ export class HistoryMainService implements IHistoryMainService {
@
IStateService
private
stateService
:
IStateService
,
@
ILogService
private
logService
:
ILogService
,
@
IWorkspacesMainService
private
workspacesMainService
:
IWorkspacesMainService
,
@
IEnvironmentService
private
environmentService
:
IEnvironmentService
,
@
IUriLabelService
private
uriLabelService
:
IUriLabelService
)
{
this
.
macOSRecentDocumentsUpdater
=
new
RunOnceScheduler
(()
=>
this
.
updateMacOSRecentDocuments
(),
800
);
...
...
@@ -368,7 +366,7 @@ export class HistoryMainService implements IHistoryMainService {
type
:
'
custom
'
,
name
:
nls
.
localize
(
'
recentFolders
'
,
"
Recent Workspaces
"
),
items
:
this
.
getRecentlyOpened
().
workspaces
.
slice
(
0
,
7
/* limit number of entries here */
).
map
(
workspace
=>
{
const
title
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
);
const
title
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
);
let
description
;
let
args
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
...
...
src/vs/platform/uriLabel/common/uriLabel.ts
浏览文件 @
8f343b7b
...
...
@@ -7,16 +7,21 @@ import URI from 'vs/base/common/uri';
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
isEqual
,
basenameOrAuthority
}
from
'
vs/base/common/resources
'
;
import
{
isLinux
,
isWindows
}
from
'
vs/base/common/platform
'
;
import
{
tildify
,
getPathLabel
}
from
'
vs/base/common/labels
'
;
import
{
ltrim
}
from
'
vs/base/common/strings
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
WORKSPACE_EXTENSION
,
toWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
isParent
}
from
'
vs/platform/files/common/files
'
;
import
{
basename
,
dirname
,
join
}
from
'
vs/base/common/paths
'
;
export
interface
IUriLabelService
{
_serviceBrand
:
any
;
getLabel
(
resource
:
URI
,
relative
?:
boolean
,
forceNoTildify
?:
boolean
):
string
;
getWorkspaceLabel
(
workspace
:
(
IWorkspaceIdentifier
|
ISingleFolderWorkspaceIdentifier
|
IWorkspace
),
options
?:
{
verbose
:
boolean
}):
string
;
registerFormater
(
schema
:
string
,
formater
:
UriLabelRules
):
IDisposable
;
onDidRegisterFormater
:
Event
<
{
scheme
:
string
,
formater
:
UriLabelRules
}
>
;
}
...
...
@@ -47,12 +52,11 @@ export class UriLabelService implements IUriLabelService {
@
IWorkspaceContextService
private
contextService
:
IWorkspaceContextService
)
{
}
get
onDidRegisterFormater
():
Event
<
{
scheme
:
string
,
formater
:
UriLabelRules
}
>
{
return
this
.
_onDidRegisterFormater
.
event
;
}
getLabel
(
resource
:
URI
,
relative
:
boolean
,
forceNoTildify
?:
boolean
):
string
{
getLabel
(
resource
:
URI
,
relative
?
:
boolean
,
forceNoTildify
?:
boolean
):
string
{
if
(
!
resource
)
{
return
undefined
;
}
...
...
@@ -85,6 +89,35 @@ export class UriLabelService implements IUriLabelService {
return
this
.
formatUri
(
resource
,
formater
,
forceNoTildify
);
}
getWorkspaceLabel
(
workspace
:
(
IWorkspaceIdentifier
|
ISingleFolderWorkspaceIdentifier
|
IWorkspace
),
options
?:
{
verbose
:
boolean
}):
string
{
if
(
!
isWorkspaceIdentifier
(
workspace
)
&&
!
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
workspace
=
toWorkspaceIdentifier
(
workspace
);
if
(
!
workspace
)
{
return
''
;
}
}
// Workspace: Single Folder
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
// Folder on disk
return
options
&&
options
.
verbose
?
this
.
getLabel
(
workspace
)
:
basenameOrAuthority
(
workspace
);
}
// Workspace: Untitled
if
(
isParent
(
workspace
.
configPath
,
this
.
environmentService
.
workspacesHome
,
!
isLinux
/* ignore case */
))
{
return
localize
(
'
untitledWorkspace
'
,
"
Untitled (Workspace)
"
);
}
// Workspace: Saved
const
filename
=
basename
(
workspace
.
configPath
);
const
workspaceName
=
filename
.
substr
(
0
,
filename
.
length
-
WORKSPACE_EXTENSION
.
length
-
1
);
if
(
options
&&
options
.
verbose
)
{
return
localize
(
'
workspaceNameVerbose
'
,
"
{0} (Workspace)
"
,
this
.
getLabel
(
URI
.
file
(
join
(
dirname
(
workspace
.
configPath
),
workspaceName
))));
}
return
localize
(
'
workspaceName
'
,
"
{0} (Workspace)
"
,
workspaceName
);
}
registerFormater
(
scheme
:
string
,
formater
:
UriLabelRules
):
IDisposable
{
this
.
formaters
.
set
(
scheme
,
formater
);
this
.
_onDidRegisterFormater
.
fire
({
scheme
,
formater
});
...
...
src/vs/platform/uriLabel/test/uriLabel.test.ts
浏览文件 @
8f343b7b
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
IUriLabelService
,
UriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
import
{
UriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
import
{
TestEnvironmentService
,
TestContextService
}
from
'
vs/workbench/test/workbenchTestServices
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
TestWorkspace
}
from
'
vs/platform/workspace/test/common/testWorkspace
'
;
...
...
@@ -14,7 +14,7 @@ import { isWindows } from 'vs/base/common/platform';
suite
(
'
URI Label
'
,
()
=>
{
let
uriLabelService
:
I
UriLabelService
;
let
uriLabelService
:
UriLabelService
;
setup
(()
=>
{
uriLabelService
=
new
UriLabelService
(
TestEnvironmentService
,
new
TestContextService
());
...
...
src/vs/platform/workspace/common/workspace.ts
浏览文件 @
8f343b7b
...
...
@@ -81,7 +81,6 @@ export namespace IWorkspace {
export
function
isIWorkspace
(
thing
:
any
):
thing
is
IWorkspace
{
return
thing
&&
typeof
thing
===
'
object
'
&&
typeof
(
thing
as
IWorkspace
).
id
===
'
string
'
&&
typeof
(
thing
as
IWorkspace
).
name
===
'
string
'
&&
Array
.
isArray
((
thing
as
IWorkspace
).
folders
);
}
}
...
...
@@ -93,11 +92,6 @@ export interface IWorkspace {
*/
readonly
id
:
string
;
/**
* the name of the workspace.
*/
readonly
name
:
string
;
/**
* Folders in the workspace.
*/
...
...
@@ -151,7 +145,6 @@ export class Workspace implements IWorkspace {
constructor
(
private
_id
:
string
,
private
_name
:
string
=
''
,
folders
:
WorkspaceFolder
[]
=
[],
private
_configuration
:
URI
=
null
,
private
_ctime
?:
number
...
...
@@ -161,7 +154,6 @@ export class Workspace implements IWorkspace {
update
(
workspace
:
Workspace
)
{
this
.
_id
=
workspace
.
id
;
this
.
_name
=
workspace
.
name
;
this
.
_configuration
=
workspace
.
configuration
;
this
.
_ctime
=
workspace
.
ctime
;
this
.
folders
=
workspace
.
folders
;
...
...
@@ -184,14 +176,6 @@ export class Workspace implements IWorkspace {
return
this
.
_ctime
;
}
get
name
():
string
{
return
this
.
_name
;
}
set
name
(
name
:
string
)
{
this
.
_name
=
name
;
}
get
configuration
():
URI
{
return
this
.
_configuration
;
}
...
...
@@ -216,7 +200,7 @@ export class Workspace implements IWorkspace {
}
toJSON
():
IWorkspace
{
return
{
id
:
this
.
id
,
folders
:
this
.
folders
,
name
:
this
.
name
,
configuration
:
this
.
configuration
};
return
{
id
:
this
.
id
,
folders
:
this
.
folders
,
configuration
:
this
.
configuration
};
}
}
...
...
src/vs/platform/workspace/test/common/testWorkspace.ts
浏览文件 @
8f343b7b
...
...
@@ -13,7 +13,6 @@ export const TestWorkspace = testWorkspace(wsUri);
export
function
testWorkspace
(
resource
:
URI
):
Workspace
{
return
new
Workspace
(
resource
.
toString
(),
resource
.
fsPath
,
toWorkspaceFolders
([{
path
:
resource
.
fsPath
}])
);
}
\ No newline at end of file
}
src/vs/platform/workspace/test/common/workspace.test.ts
浏览文件 @
8f343b7b
...
...
@@ -14,7 +14,7 @@ suite('Workspace', () => {
test
(
'
getFolder returns the folder with given uri
'
,
()
=>
{
const
expected
=
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/test
'
),
name
:
''
,
index
:
2
});
let
testObject
=
new
Workspace
(
''
,
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
0
}),
expected
,
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
2
})]);
let
testObject
=
new
Workspace
(
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
0
}),
expected
,
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
2
})]);
const
actual
=
testObject
.
getFolder
(
expected
.
uri
);
...
...
@@ -23,7 +23,7 @@ suite('Workspace', () => {
test
(
'
getFolder returns the folder if the uri is sub
'
,
()
=>
{
const
expected
=
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/test
'
),
name
:
''
,
index
:
0
});
let
testObject
=
new
Workspace
(
''
,
''
,
[
expected
,
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
1
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
2
})]);
let
testObject
=
new
Workspace
(
''
,
[
expected
,
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
1
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
2
})]);
const
actual
=
testObject
.
getFolder
(
URI
.
file
(
'
/src/test/a
'
));
...
...
@@ -32,7 +32,7 @@ suite('Workspace', () => {
test
(
'
getFolder returns the closest folder if the uri is sub
'
,
()
=>
{
const
expected
=
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/test
'
),
name
:
''
,
index
:
2
});
let
testObject
=
new
Workspace
(
''
,
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
0
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
1
}),
expected
]);
let
testObject
=
new
Workspace
(
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/main
'
),
name
:
''
,
index
:
0
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
1
}),
expected
]);
const
actual
=
testObject
.
getFolder
(
URI
.
file
(
'
/src/test/a
'
));
...
...
@@ -40,7 +40,7 @@ suite('Workspace', () => {
});
test
(
'
getFolder returns null if the uri is not sub
'
,
()
=>
{
let
testObject
=
new
Workspace
(
''
,
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/test
'
),
name
:
''
,
index
:
0
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
1
})]);
let
testObject
=
new
Workspace
(
''
,
[
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/test
'
),
name
:
''
,
index
:
0
}),
new
WorkspaceFolder
({
uri
:
URI
.
file
(
'
/src/code
'
),
name
:
''
,
index
:
1
})]);
const
actual
=
testObject
.
getFolder
(
URI
.
file
(
'
/src/main/a
'
));
...
...
src/vs/platform/workspaces/common/workspaces.ts
浏览文件 @
8f343b7b
...
...
@@ -7,17 +7,10 @@
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
isParent
}
from
'
vs/platform/files/common/files
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
basename
,
dirname
,
join
}
from
'
vs/base/common/paths
'
;
import
{
isLinux
}
from
'
vs/base/common/platform
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
getBaseLabel
}
from
'
vs/base/common/labels
'
;
import
{
IWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceFolder
,
IWorkspace
}
from
'
vs/platform/workspace/common/workspace
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
export
const
IWorkspacesMainService
=
createDecorator
<
IWorkspacesMainService
>
(
'
workspacesMainService
'
);
export
const
IWorkspacesService
=
createDecorator
<
IWorkspacesService
>
(
'
workspacesService
'
);
...
...
@@ -113,34 +106,6 @@ export interface IWorkspacesService {
createWorkspace
(
folders
?:
IWorkspaceFolderCreationData
[]):
TPromise
<
IWorkspaceIdentifier
>
;
}
export
function
getWorkspaceLabel
(
workspace
:
(
IWorkspaceIdentifier
|
ISingleFolderWorkspaceIdentifier
),
environmentService
:
IEnvironmentService
,
uriLabelService
:
IUriLabelService
,
options
?:
{
verbose
:
boolean
}):
string
{
// Workspace: Single Folder
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
// Folder on disk
if
(
workspace
.
scheme
===
Schemas
.
file
)
{
return
options
&&
options
.
verbose
?
uriLabelService
.
getLabel
(
workspace
)
:
getBaseLabel
(
workspace
);
}
// Remote folder
return
options
&&
options
.
verbose
?
uriLabelService
.
getLabel
(
workspace
)
:
`
${
getBaseLabel
(
workspace
)}
(
${
workspace
.
scheme
}
)`
;
}
// Workspace: Untitled
if
(
isParent
(
workspace
.
configPath
,
environmentService
.
workspacesHome
,
!
isLinux
/* ignore case */
))
{
return
localize
(
'
untitledWorkspace
'
,
"
Untitled (Workspace)
"
);
}
// Workspace: Saved
const
filename
=
basename
(
workspace
.
configPath
);
const
workspaceName
=
filename
.
substr
(
0
,
filename
.
length
-
WORKSPACE_EXTENSION
.
length
-
1
);
if
(
options
&&
options
.
verbose
)
{
return
localize
(
'
workspaceNameVerbose
'
,
"
{0} (Workspace)
"
,
uriLabelService
.
getLabel
(
URI
.
file
(
join
(
dirname
(
workspace
.
configPath
),
workspaceName
))));
}
return
localize
(
'
workspaceName
'
,
"
{0} (Workspace)
"
,
workspaceName
);
}
export
function
isSingleFolderWorkspaceIdentifier
(
obj
:
any
):
obj
is
ISingleFolderWorkspaceIdentifier
{
return
obj
instanceof
URI
;
}
...
...
@@ -150,3 +115,18 @@ export function isWorkspaceIdentifier(obj: any): obj is IWorkspaceIdentifier {
return
workspaceIdentifier
&&
typeof
workspaceIdentifier
.
id
===
'
string
'
&&
typeof
workspaceIdentifier
.
configPath
===
'
string
'
;
}
export
function
toWorkspaceIdentifier
(
workspace
:
IWorkspace
):
IWorkspaceIdentifier
|
ISingleFolderWorkspaceIdentifier
|
undefined
{
if
(
workspace
.
configuration
)
{
return
{
configPath
:
workspace
.
configuration
.
fsPath
,
id
:
workspace
.
id
};
}
if
(
workspace
.
folders
.
length
===
1
)
{
return
workspace
.
folders
[
0
].
uri
;
}
// Empty workspace
return
undefined
;
}
src/vs/workbench/api/electron-browser/mainThreadWorkspace.ts
浏览文件 @
8f343b7b
...
...
@@ -23,6 +23,7 @@ import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
areSameExtensions
}
from
'
vs/platform/extensionManagement/common/extensionManagementUtil
'
;
import
{
IWindowService
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
@
extHostNamedCustomer
(
MainContext
.
MainThreadWorkspace
)
export
class
MainThreadWorkspace
implements
MainThreadWorkspaceShape
{
...
...
@@ -40,6 +41,7 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
@
IWorkspaceEditingService
private
readonly
_workspaceEditingService
:
IWorkspaceEditingService
,
@
IStatusbarService
private
readonly
_statusbarService
:
IStatusbarService
,
@
IInstantiationService
private
readonly
_instantiationService
:
IInstantiationService
,
@
IUriLabelService
private
readonly
_uriLabelService
:
IUriLabelService
)
{
this
.
_proxy
=
extHostContext
.
getProxy
(
ExtHostContext
.
ExtHostWorkspace
);
this
.
_contextService
.
onDidChangeWorkspaceFolders
(
this
.
_onDidChangeWorkspace
,
this
,
this
.
_toDispose
);
...
...
@@ -99,7 +101,13 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
}
private
_onDidChangeWorkspace
():
void
{
this
.
_proxy
.
$acceptWorkspaceData
(
this
.
_contextService
.
getWorkbenchState
()
===
WorkbenchState
.
EMPTY
?
null
:
this
.
_contextService
.
getWorkspace
());
const
workspace
=
this
.
_contextService
.
getWorkbenchState
()
===
WorkbenchState
.
EMPTY
?
null
:
this
.
_contextService
.
getWorkspace
();
this
.
_proxy
.
$acceptWorkspaceData
(
workspace
?
{
configuration
:
workspace
.
configuration
,
folders
:
workspace
.
folders
,
id
:
workspace
.
id
,
name
:
this
.
_uriLabelService
.
getWorkspaceLabel
(
workspace
)
}
:
null
);
}
// --- search ---
...
...
@@ -230,4 +238,4 @@ CommandsRegistry.registerCommand('_workbench.enterWorkspace', async function (ac
}
return
workspaceEditingService
.
enterWorkspace
(
workspace
.
fsPath
);
});
\ No newline at end of file
});
src/vs/workbench/api/node/extHost.api.impl.ts
浏览文件 @
8f343b7b
...
...
@@ -485,7 +485,7 @@ export function createApiFactory(
return
extHostWorkspace
.
getWorkspaceFolders
();
},
get
name
()
{
return
extHostWorkspace
.
workspace
?
extHostWorkspace
.
workspace
.
name
:
undefined
;
return
extHostWorkspace
.
name
;
},
set
name
(
value
)
{
throw
errors
.
readonly
();
...
...
src/vs/workbench/api/node/extHostWorkspace.ts
浏览文件 @
8f343b7b
...
...
@@ -107,8 +107,8 @@ class ExtHostWorkspaceImpl extends Workspace {
private
readonly
_workspaceFolders
:
vscode
.
WorkspaceFolder
[]
=
[];
private
readonly
_structure
=
TernarySearchTree
.
forPaths
<
vscode
.
WorkspaceFolder
>
();
private
constructor
(
id
:
string
,
name
:
string
,
folders
:
vscode
.
WorkspaceFolder
[])
{
super
(
id
,
name
,
folders
.
map
(
f
=>
new
WorkspaceFolder
(
f
)));
private
constructor
(
id
:
string
,
private
_
name
:
string
,
folders
:
vscode
.
WorkspaceFolder
[])
{
super
(
id
,
folders
.
map
(
f
=>
new
WorkspaceFolder
(
f
)));
// setup the workspace folder data structure
folders
.
forEach
(
folder
=>
{
...
...
@@ -117,6 +117,10 @@ class ExtHostWorkspaceImpl extends Workspace {
});
}
get
name
():
string
{
return
this
.
_name
;
}
get
workspaceFolders
():
vscode
.
WorkspaceFolder
[]
{
return
this
.
_workspaceFolders
.
slice
(
0
);
}
...
...
@@ -166,6 +170,10 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
return
this
.
_actualWorkspace
;
}
get
name
():
string
{
return
this
.
_actualWorkspace
?
this
.
_actualWorkspace
.
name
:
undefined
;
}
private
get
_actualWorkspace
():
ExtHostWorkspaceImpl
{
return
this
.
_unconfirmedWorkspace
||
this
.
_confirmedWorkspace
;
}
...
...
src/vs/workbench/browser/parts/titlebar/menubarControl.ts
浏览文件 @
8f343b7b
...
...
@@ -25,8 +25,7 @@ import { Event, Emitter } from 'vs/base/common/event';
import
{
IDisposable
,
Disposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
domEvent
}
from
'
vs/base/browser/event
'
;
import
{
IRecentlyOpened
}
from
'
vs/platform/history/common/history
'
;
import
{
IWorkspaceIdentifier
,
getWorkspaceLabel
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
{
MENUBAR_SELECTION_FOREGROUND
,
MENUBAR_SELECTION_BACKGROUND
,
MENUBAR_SELECTION_BORDER
,
TITLE_BAR_ACTIVE_FOREGROUND
,
TITLE_BAR_INACTIVE_FOREGROUND
,
MENU_BACKGROUND
,
MENU_FOREGROUND
,
MENU_SELECTION_BACKGROUND
,
MENU_SELECTION_FOREGROUND
,
MENU_SELECTION_BORDER
}
from
'
vs/workbench/common/theme
'
;
import
URI
from
'
vs/base/common/uri
'
;
...
...
@@ -122,7 +121,6 @@ export class MenubarControl extends Disposable {
@
IContextKeyService
private
contextKeyService
:
IContextKeyService
,
@
IKeybindingService
private
keybindingService
:
IKeybindingService
,
@
IConfigurationService
private
configurationService
:
IConfigurationService
,
@
IEnvironmentService
private
environmentService
:
IEnvironmentService
,
@
IUriLabelService
private
uriLabelService
:
IUriLabelService
,
@
IUpdateService
private
updateService
:
IUpdateService
)
{
...
...
@@ -533,10 +531,10 @@ export class MenubarControl extends Disposable {
let
uri
:
URI
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
)
&&
!
isFile
)
{
label
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
,
{
verbose
:
true
});
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
,
{
verbose
:
true
});
uri
=
workspace
;
}
else
if
(
isWorkspaceIdentifier
(
workspace
))
{
label
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
,
{
verbose
:
true
});
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
,
{
verbose
:
true
});
uri
=
URI
.
file
(
workspace
.
configPath
);
}
else
{
uri
=
workspace
;
...
...
src/vs/workbench/browser/parts/titlebar/titlebarPart.ts
浏览文件 @
8f343b7b
...
...
@@ -243,7 +243,7 @@ export class TitlebarPart extends Part implements ITitleService {
const
activeEditorShort
=
editor
?
editor
.
getTitle
(
Verbosity
.
SHORT
)
:
''
;
const
activeEditorMedium
=
editor
?
editor
.
getTitle
(
Verbosity
.
MEDIUM
)
:
activeEditorShort
;
const
activeEditorLong
=
editor
?
editor
.
getTitle
(
Verbosity
.
LONG
)
:
activeEditorMedium
;
const
rootName
=
workspace
.
name
;
const
rootName
=
root
?
this
.
uriLabelService
.
getWorkspaceLabel
(
root
)
:
''
;
const
rootPath
=
root
?
this
.
uriLabelService
.
getLabel
(
root
)
:
''
;
const
folderName
=
folder
?
folder
.
name
:
''
;
const
folderPath
=
folder
?
this
.
uriLabelService
.
getLabel
(
folder
.
uri
)
:
''
;
...
...
src/vs/workbench/electron-browser/actions.ts
浏览文件 @
8f343b7b
...
...
@@ -29,7 +29,7 @@ import { webFrame, shell } from 'electron';
import
{
getBaseLabel
}
from
'
vs/base/common/labels
'
;
import
{
IViewlet
}
from
'
vs/workbench/common/viewlet
'
;
import
{
IPanel
}
from
'
vs/workbench/common/panel
'
;
import
{
IWorkspaceIdentifier
,
getWorkspaceLabel
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
FileKind
}
from
'
vs/platform/files/common/files
'
;
import
{
IssueType
}
from
'
vs/platform/issue/common/issue
'
;
import
{
domEvent
}
from
'
vs/base/browser/event
'
;
...
...
@@ -441,11 +441,11 @@ export abstract class BaseOpenRecentAction extends Action {
let
description
:
string
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
)
&&
fileKind
!==
FileKind
.
FILE
)
{
resource
=
workspace
;
label
=
getWorkspaceLabel
(
workspace
,
environmentService
,
uriLabelServi
ce
);
label
=
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
);
description
=
uriLabelService
.
getLabel
(
dirname
(
resource
));
}
else
if
(
isWorkspaceIdentifier
(
workspace
))
{
resource
=
URI
.
file
(
workspace
.
configPath
);
label
=
getWorkspaceLabel
(
workspace
,
environmentService
,
uriLabelServi
ce
);
label
=
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
);
description
=
uriLabelService
.
getLabel
(
dirname
(
resource
));
}
else
{
resource
=
workspace
;
...
...
src/vs/workbench/electron-browser/shell.ts
浏览文件 @
8f343b7b
...
...
@@ -98,6 +98,7 @@ import { ExtensionManagementServerService } from 'vs/workbench/services/extensio
import
{
DownloadServiceChannel
}
from
'
vs/platform/download/node/downloadIpc
'
;
import
{
DefaultURITransformer
}
from
'
vs/base/common/uriIpc
'
;
import
{
ExtensionGalleryService
}
from
'
vs/platform/extensionManagement/node/extensionGalleryService
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
/**
* Services that we require for the Shell
...
...
@@ -117,6 +118,7 @@ export interface ICoreServices {
export
class
WorkbenchShell
extends
Disposable
{
private
storageService
:
IStorageService
;
private
environmentService
:
IEnvironmentService
;
private
uriLabelService
:
IUriLabelService
;
private
logService
:
ILogService
;
private
configurationService
:
IConfigurationService
;
private
contextService
:
IWorkspaceContextService
;
...
...
@@ -316,6 +318,7 @@ export class WorkbenchShell extends Disposable {
serviceCollection
.
set
(
IWorkspaceContextService
,
this
.
contextService
);
serviceCollection
.
set
(
IConfigurationService
,
this
.
configurationService
);
serviceCollection
.
set
(
IEnvironmentService
,
this
.
environmentService
);
serviceCollection
.
set
(
IUriLabelService
,
this
.
uriLabelService
);
serviceCollection
.
set
(
ILogService
,
this
.
_register
(
this
.
logService
));
serviceCollection
.
set
(
IStorageService
,
this
.
storageService
);
...
...
src/vs/workbench/electron-browser/workbench.ts
浏览文件 @
8f343b7b
...
...
@@ -116,7 +116,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
{
TelemetryService
}
from
'
vs/platform/telemetry/common/telemetryService
'
;
import
{
WorkbenchThemeService
}
from
'
vs/workbench/services/themes/electron-browser/workbenchThemeService
'
;
import
{
IWorkbenchThemeService
}
from
'
vs/workbench/services/themes/common/workbenchThemeService
'
;
import
{
IUriLabelService
,
UriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
import
{
UriLabelService
,
I
UriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
interface
WorkbenchParams
{
configuration
:
IWindowConfiguration
;
...
...
@@ -339,7 +339,6 @@ export class Workbench extends Disposable implements IPartService {
// Uri Display
const
uriLabelService
=
new
UriLabelService
(
this
.
environmentService
,
this
.
contextService
);
serviceCollection
.
set
(
IUriLabelService
,
uriLabelService
);
this
.
configurationService
.
acquireUriLabelService
(
uriLabelService
);
// Status bar
this
.
statusbarPart
=
this
.
instantiationService
.
createInstance
(
StatusbarPart
,
Identifiers
.
STATUSBAR_PART
);
...
...
src/vs/workbench/parts/files/electron-browser/views/emptyView.ts
浏览文件 @
8f343b7b
...
...
@@ -103,7 +103,7 @@ export class EmptyView extends ViewletPanel {
if
(
this
.
button
)
{
this
.
button
.
label
=
nls
.
localize
(
'
addFolder
'
,
"
Add Folder
"
);
}
this
.
titleDiv
.
text
(
this
.
contextService
.
getWorkspace
().
name
);
this
.
titleDiv
.
text
(
EmptyView
.
NAME
);
}
else
{
this
.
messageDiv
.
text
(
nls
.
localize
(
'
noFolderHelp
'
,
"
You have not yet opened a folder.
"
));
if
(
this
.
button
)
{
...
...
src/vs/workbench/parts/files/electron-browser/views/explorerView.ts
浏览文件 @
8f343b7b
...
...
@@ -43,6 +43,7 @@ import { Schemas } from 'vs/base/common/network';
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
IEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IViewletPanelOptions
}
from
'
vs/workbench/browser/parts/views/panelViewlet
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
export
interface
IExplorerViewOptions
extends
IViewletViewOptions
{
viewletState
:
FileViewletState
;
...
...
@@ -94,7 +95,8 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView
@
IKeybindingService
keybindingService
:
IKeybindingService
,
@
IContextKeyService
contextKeyService
:
IContextKeyService
,
@
IConfigurationService
configurationService
:
IConfigurationService
,
@
IDecorationsService
decorationService
:
IDecorationsService
@
IDecorationsService
decorationService
:
IDecorationsService
,
@
IUriLabelService
private
uriLabelService
:
IUriLabelService
)
{
super
({
...(
options
as
IViewletPanelOptions
),
ariaHeaderLabel
:
nls
.
localize
(
'
explorerSection
'
,
"
Files Explorer Section
"
)
},
keybindingService
,
contextMenuService
,
configurationService
);
...
...
@@ -147,7 +149,7 @@ export class ExplorerView extends TreeViewsViewletPanel implements IExplorerView
}
public
get
name
():
string
{
return
this
.
contextService
.
getWorkspace
().
name
;
return
this
.
uriLabelService
.
getWorkspaceLabel
(
this
.
contextService
.
getWorkspace
())
;
}
public
get
title
():
string
{
...
...
src/vs/workbench/parts/logs/electron-browser/logsActions.ts
浏览文件 @
8f343b7b
...
...
@@ -16,6 +16,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
import
URI
from
'
vs/base/common/uri
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IQuickPickItem
,
IQuickInputService
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
export
class
OpenLogsFolderAction
extends
Action
{
...
...
@@ -42,14 +43,16 @@ export class ShowLogsAction extends Action {
constructor
(
id
:
string
,
label
:
string
,
@
IQuickInputService
private
quickInputService
:
IQuickInputService
,
@
IOutputService
private
outputService
:
IOutputService
,
@
IWorkspaceContextService
private
contextService
:
IWorkspaceContextService
@
IWorkspaceContextService
private
contextService
:
IWorkspaceContextService
,
@
IUriLabelService
private
uriLabelService
:
IUriLabelService
)
{
super
(
id
,
label
);
}
run
():
TPromise
<
void
>
{
const
workspaceName
=
this
.
uriLabelService
.
getWorkspaceLabel
(
this
.
contextService
.
getWorkspace
());
const
entries
:
IQuickPickItem
[]
=
[
{
id
:
Constants
.
rendererLogChannelId
,
label
:
this
.
contextService
.
getWorkspace
().
name
?
nls
.
localize
(
'
rendererProcess
'
,
"
Window ({0})
"
,
this
.
contextService
.
getWorkspace
().
n
ame
)
:
nls
.
localize
(
'
emptyWindow
'
,
"
Window
"
)
},
{
id
:
Constants
.
rendererLogChannelId
,
label
:
workspaceName
?
nls
.
localize
(
'
rendererProcess
'
,
"
Window ({0})
"
,
workspaceN
ame
)
:
nls
.
localize
(
'
emptyWindow
'
,
"
Window
"
)
},
{
id
:
Constants
.
extHostLogChannelId
,
label
:
nls
.
localize
(
'
extensionHost
'
,
"
Extension Host
"
)
},
{
id
:
Constants
.
sharedLogChannelId
,
label
:
nls
.
localize
(
'
sharedProcess
'
,
"
Shared
"
)
},
{
id
:
Constants
.
mainLogChannelId
,
label
:
nls
.
localize
(
'
mainProcess
'
,
"
Main
"
)
}
...
...
@@ -75,14 +78,16 @@ export class OpenLogFileAction extends Action {
@
IEnvironmentService
private
environmentService
:
IEnvironmentService
,
@
ICommandService
private
commandService
:
ICommandService
,
@
IWindowService
private
windowService
:
IWindowService
,
@
IWorkspaceContextService
private
contextService
:
IWorkspaceContextService
@
IWorkspaceContextService
private
contextService
:
IWorkspaceContextService
,
@
IUriLabelService
private
uriLabelService
:
IUriLabelService
)
{
super
(
id
,
label
);
}
run
():
TPromise
<
void
>
{
const
workspaceName
=
this
.
uriLabelService
.
getWorkspaceLabel
(
this
.
contextService
.
getWorkspace
());
const
entries
:
IQuickPickItem
[]
=
[
{
id
:
URI
.
file
(
paths
.
join
(
this
.
environmentService
.
logsPath
,
`renderer
${
this
.
windowService
.
getCurrentWindowId
()}
.log`
)).
fsPath
,
label
:
this
.
contextService
.
getWorkspace
().
name
?
nls
.
localize
(
'
rendererProcess
'
,
"
Window ({0})
"
,
this
.
contextService
.
getWorkspace
().
n
ame
)
:
nls
.
localize
(
'
emptyWindow
'
,
"
Window
"
)
},
{
id
:
URI
.
file
(
paths
.
join
(
this
.
environmentService
.
logsPath
,
`renderer
${
this
.
windowService
.
getCurrentWindowId
()}
.log`
)).
fsPath
,
label
:
workspaceName
?
nls
.
localize
(
'
rendererProcess
'
,
"
Window ({0})
"
,
workspaceN
ame
)
:
nls
.
localize
(
'
emptyWindow
'
,
"
Window
"
)
},
{
id
:
URI
.
file
(
paths
.
join
(
this
.
environmentService
.
logsPath
,
`exthost
${
this
.
windowService
.
getCurrentWindowId
()}
.log`
)).
fsPath
,
label
:
nls
.
localize
(
'
extensionHost
'
,
"
Extension Host
"
)
},
{
id
:
URI
.
file
(
paths
.
join
(
this
.
environmentService
.
logsPath
,
`sharedprocess.log`
)).
fsPath
,
label
:
nls
.
localize
(
'
sharedProcess
'
,
"
Shared
"
)
},
{
id
:
URI
.
file
(
paths
.
join
(
this
.
environmentService
.
logsPath
,
`main.log`
)).
fsPath
,
label
:
nls
.
localize
(
'
mainProcess
'
,
"
Main
"
)
},
...
...
@@ -142,4 +147,4 @@ export class SetLogLevelAction extends Action {
}
return
void
0
;
}
}
\ No newline at end of file
}
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
浏览文件 @
8f343b7b
...
...
@@ -41,7 +41,7 @@ suite('QueryBuilder', () => {
instantiationService
.
stub
(
IConfigurationService
,
mockConfigService
);
mockContextService
=
new
TestContextService
();
mockWorkspace
=
new
Workspace
(
'
workspace
'
,
'
workspace
'
,
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
}]));
mockWorkspace
=
new
Workspace
(
'
workspace
'
,
toWorkspaceFolders
([{
path
:
ROOT_1_URI
.
fsPath
}]));
mockContextService
.
setWorkspace
(
mockWorkspace
);
instantiationService
.
stub
(
IWorkspaceContextService
,
mockContextService
);
...
...
src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts
浏览文件 @
8f343b7b
...
...
@@ -33,8 +33,7 @@ import { registerThemingParticipant } from 'vs/platform/theme/common/themeServic
import
{
registerColor
,
focusBorder
,
textLinkForeground
,
textLinkActiveForeground
,
foreground
,
descriptionForeground
,
contrastBorder
,
activeContrastBorder
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
getExtraColor
}
from
'
vs/workbench/parts/welcome/walkThrough/node/walkThroughUtils
'
;
import
{
IExtensionsWorkbenchService
}
from
'
vs/workbench/parts/extensions/common/extensions
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IWorkspaceIdentifier
,
getWorkspaceLabel
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
isWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IEditorInputFactory
,
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
getIdAndVersionFromLocalExtensionId
}
from
'
vs/platform/extensionManagement/node/extensionManagementUtil
'
;
import
{
INotificationService
,
Severity
}
from
'
vs/platform/notification/common/notification
'
;
...
...
@@ -55,9 +54,7 @@ export class WelcomePageContribution implements IWorkbenchContribution {
@
IConfigurationService
configurationService
:
IConfigurationService
,
@
IEditorService
editorService
:
IEditorService
,
@
IBackupFileService
backupFileService
:
IBackupFileService
,
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
ILifecycleService
lifecycleService
:
ILifecycleService
,
@
IStorageService
storageService
:
IStorageService
)
{
const
enabled
=
isWelcomePageEnabled
(
configurationService
);
if
(
enabled
&&
lifecycleService
.
startupKind
!==
StartupKind
.
ReloadedWindow
)
{
...
...
@@ -283,9 +280,9 @@ class WelcomePage {
let
resource
:
URI
;
if
(
isSingleFolderWorkspaceIdentifier
(
workspace
))
{
resource
=
workspace
;
label
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
);
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
);
}
else
if
(
isWorkspaceIdentifier
(
workspace
))
{
label
=
getWorkspaceLabel
(
workspace
,
this
.
environmentService
,
this
.
uriLabelServi
ce
);
label
=
this
.
uriLabelService
.
getWorkspaceLabel
(
workspa
ce
);
resource
=
URI
.
file
(
workspace
.
configPath
);
}
else
{
label
=
getBaseLabel
(
workspace
);
...
...
src/vs/workbench/services/backup/test/electron-browser/backupFileService.test.ts
浏览文件 @
8f343b7b
...
...
@@ -39,7 +39,7 @@ const untitledBackupPath = path.join(workspaceBackupPath, 'untitled', crypto.cre
class
TestBackupFileService
extends
BackupFileService
{
constructor
(
workspace
:
Uri
,
backupHome
:
string
,
workspacesJsonPath
:
string
)
{
const
fileService
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
workspace
.
fsPath
,
workspace
.
fsPath
,
toWorkspaceFolders
([{
path
:
workspace
.
fsPath
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
new
TestLifecycleService
(),
new
TestStorageService
(),
new
TestNotificationService
(),
{
disableWatcher
:
true
});
const
fileService
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
workspace
.
fsPath
,
toWorkspaceFolders
([{
path
:
workspace
.
fsPath
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
new
TestLifecycleService
(),
new
TestStorageService
(),
new
TestNotificationService
(),
{
disableWatcher
:
true
});
super
(
workspaceBackupPath
,
fileService
);
}
...
...
src/vs/workbench/services/configuration/node/configurationService.ts
浏览文件 @
8f343b7b
...
...
@@ -26,7 +26,7 @@ import { IWorkspaceConfigurationService, FOLDER_CONFIG_FOLDER_NAME, defaultSetti
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IConfigurationNode
,
IConfigurationRegistry
,
Extensions
,
IConfigurationPropertySchema
,
allSettings
,
windowSettings
,
resourceSettings
,
applicationSettings
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
createHash
}
from
'
crypto
'
;
import
{
getWorkspaceLabel
,
IWorkspaceIdentifier
,
isWorkspaceIdentifier
,
IStoredWorkspaceFolder
,
isStoredWorkspaceFolder
,
IWorkspaceFolderCreationData
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWorkspaceIdentifier
,
isWorkspaceIdentifier
,
IStoredWorkspaceFolder
,
isStoredWorkspaceFolder
,
IWorkspaceFolderCreationData
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IWindowConfiguration
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
...
...
@@ -41,7 +41,6 @@ import { UserConfiguration } from 'vs/platform/configuration/node/configuration'
import
{
IJSONSchema
,
IJSONSchemaMap
}
from
'
vs/base/common/jsonSchema
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
isEqual
}
from
'
vs/base/common/resources
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
export
class
WorkspaceService
extends
Disposable
implements
IWorkspaceConfigurationService
,
IWorkspaceContextService
{
...
...
@@ -69,7 +68,6 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
public
readonly
onDidChangeWorkbenchState
:
Event
<
WorkbenchState
>
=
this
.
_onDidChangeWorkbenchState
.
event
;
private
fileService
:
IFileService
;
private
uriLabelService
:
IUriLabelService
;
private
configurationEditingService
:
ConfigurationEditingService
;
private
jsonEditingService
:
JSONEditingService
;
...
...
@@ -319,10 +317,6 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
});
}
acquireUriLabelService
(
uriLabelService
:
IUriLabelService
):
void
{
this
.
uriLabelService
=
uriLabelService
;
}
acquireInstantiationService
(
instantiationService
:
IInstantiationService
):
void
{
this
.
configurationEditingService
=
instantiationService
.
createInstance
(
ConfigurationEditingService
);
this
.
jsonEditingService
=
instantiationService
.
createInstance
(
JSONEditingService
);
...
...
@@ -346,8 +340,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
.
then
(()
=>
{
const
workspaceFolders
=
toWorkspaceFolders
(
this
.
workspaceConfiguration
.
getFolders
(),
URI
.
file
(
dirname
(
workspaceConfigPath
.
fsPath
)));
const
workspaceId
=
workspaceIdentifier
.
id
;
const
workspaceName
=
getWorkspaceLabel
({
id
:
workspaceId
,
configPath
:
workspaceConfigPath
.
fsPath
},
this
.
environmentService
,
this
.
uriLabelService
);
return
new
Workspace
(
workspaceId
,
workspaceName
,
workspaceFolders
,
workspaceConfigPath
);
return
new
Workspace
(
workspaceId
,
workspaceFolders
,
workspaceConfigPath
);
});
}
...
...
@@ -369,11 +362,11 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
}
const
id
=
createHash
(
'
md5
'
).
update
(
folder
.
fsPath
).
update
(
ctime
?
String
(
ctime
)
:
''
).
digest
(
'
hex
'
);
return
new
Workspace
(
id
,
getWorkspaceLabel
(
folder
,
this
.
environmentService
,
this
.
uriLabelService
),
toWorkspaceFolders
([{
path
:
folder
.
fsPath
}]),
null
,
ctime
);
return
new
Workspace
(
id
,
toWorkspaceFolders
([{
path
:
folder
.
fsPath
}]),
null
,
ctime
);
});
}
else
{
const
id
=
createHash
(
'
md5
'
).
update
(
folder
.
toString
()).
digest
(
'
hex
'
);
return
TPromise
.
as
(
new
Workspace
(
id
,
getWorkspaceLabel
(
folder
,
this
.
environmentService
,
this
.
uriLabelService
),
toWorkspaceFolders
([{
uri
:
folder
.
toString
()
}]),
null
));
return
TPromise
.
as
(
new
Workspace
(
id
,
toWorkspaceFolders
([{
uri
:
folder
.
toString
()
}]),
null
));
}
}
...
...
src/vs/workbench/services/configuration/test/common/configurationModels.test.ts
浏览文件 @
8f343b7b
...
...
@@ -115,7 +115,7 @@ suite('WorkspaceConfigurationChangeEvent', () => {
configurationChangeEvent
.
change
([
'
window.restoreWindows
'
],
URI
.
file
(
'
folder2
'
));
configurationChangeEvent
.
telemetryData
(
ConfigurationTarget
.
WORKSPACE
,
{});
let
testObject
=
new
WorkspaceConfigurationChangeEvent
(
configurationChangeEvent
,
new
Workspace
(
'
id
'
,
'
name
'
,
let
testObject
=
new
WorkspaceConfigurationChangeEvent
(
configurationChangeEvent
,
new
Workspace
(
'
id
'
,
[
new
WorkspaceFolder
({
index
:
0
,
name
:
'
1
'
,
uri
:
URI
.
file
(
'
folder1
'
)
}),
new
WorkspaceFolder
({
index
:
1
,
name
:
'
2
'
,
uri
:
URI
.
file
(
'
folder2
'
)
}),
new
WorkspaceFolder
({
index
:
2
,
name
:
'
3
'
,
uri
:
URI
.
file
(
'
folder3
'
)
})]));
...
...
src/vs/workbench/services/extensions/electron-browser/extensionHost.ts
浏览文件 @
8f343b7b
...
...
@@ -23,7 +23,7 @@ import { IMessagePassingProtocol } from 'vs/base/parts/ipc/node/ipc';
import
{
generateRandomPipeName
,
Protocol
}
from
'
vs/base/parts/ipc/node/ipc.net
'
;
import
{
createServer
,
Server
,
Socket
}
from
'
net
'
;
import
{
Event
,
Emitter
,
debounceEvent
,
mapEvent
,
anyEvent
,
fromNodeEventEmitter
}
from
'
vs/base/common/event
'
;
import
{
IInitData
,
I
WorkspaceData
,
I
ConfigurationInitData
}
from
'
vs/workbench/api/node/extHost.protocol
'
;
import
{
IInitData
,
IConfigurationInitData
}
from
'
vs/workbench/api/node/extHost.protocol
'
;
import
{
IExtensionDescription
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IWorkspaceConfigurationService
}
from
'
vs/workbench/services/configuration/common/configuration
'
;
import
{
ICrashReporterService
}
from
'
vs/workbench/services/crashReporter/electron-browser/crashReporterService
'
;
...
...
@@ -38,6 +38,7 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/
import
{
getPathFromAmdModule
}
from
'
vs/base/common/amd
'
;
import
{
timeout
}
from
'
vs/base/common/async
'
;
import
{
isMessageOfType
,
MessageType
,
createMessageOfType
}
from
'
vs/workbench/common/extensionHostProtocol
'
;
import
{
IUriLabelService
}
from
'
vs/platform/uriLabel/common/uriLabel
'
;
export
interface
IExtensionHostStarter
{
readonly
onCrashed
:
Event
<
[
number
,
string
]
>
;
...
...
@@ -81,7 +82,8 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
@
IWorkspaceConfigurationService
private
readonly
_configurationService
:
IWorkspaceConfigurationService
,
@
ITelemetryService
private
readonly
_telemetryService
:
ITelemetryService
,
@
ICrashReporterService
private
readonly
_crashReporterService
:
ICrashReporterService
,
@
ILogService
private
readonly
_logService
:
ILogService
@
ILogService
private
readonly
_logService
:
ILogService
,
@
IUriLabelService
private
readonly
_uriLabelService
:
IUriLabelService
)
{
// handle extension host lifecycle a bit special when we know we are developing an extension that runs inside
this
.
_isExtensionDevHost
=
this
.
_environmentService
.
isExtensionDevelopment
;
...
...
@@ -371,6 +373,7 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
private
_createExtHostInitData
():
TPromise
<
IInitData
>
{
return
TPromise
.
join
([
this
.
_telemetryService
.
getTelemetryInfo
(),
this
.
_extensions
]).
then
(([
telemetryInfo
,
extensionDescriptions
])
=>
{
const
configurationData
:
IConfigurationInitData
=
{
...
this
.
_configurationService
.
getConfigurationData
(),
configurationScopes
:
{}
};
const
workspace
=
this
.
_contextService
.
getWorkspace
();
const
r
:
IInitData
=
{
parentPid
:
process
.
pid
,
environment
:
{
...
...
@@ -380,7 +383,12 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
extensionDevelopmentPath
:
this
.
_environmentService
.
extensionDevelopmentPath
,
extensionTestsPath
:
this
.
_environmentService
.
extensionTestsPath
},
workspace
:
this
.
_contextService
.
getWorkbenchState
()
===
WorkbenchState
.
EMPTY
?
null
:
<
IWorkspaceData
>
this
.
_contextService
.
getWorkspace
(),
workspace
:
this
.
_contextService
.
getWorkbenchState
()
===
WorkbenchState
.
EMPTY
?
null
:
{
configuration
:
workspace
.
configuration
,
folders
:
workspace
.
folders
,
id
:
workspace
.
id
,
name
:
this
.
_uriLabelService
.
getWorkspaceLabel
(
workspace
)
},
extensions
:
extensionDescriptions
,
// Send configurations scopes only in development mode.
configuration
:
!
this
.
_environmentService
.
isBuilt
||
this
.
_environmentService
.
isExtensionDevelopment
?
{
...
configurationData
,
configurationScopes
:
getScopes
()
}
:
configurationData
,
...
...
src/vs/workbench/services/files/test/electron-browser/fileService.test.ts
浏览文件 @
8f343b7b
...
...
@@ -37,7 +37,7 @@ suite('FileService', () => {
const
sourceDir
=
getPathFromAmdModule
(
require
,
'
./fixtures/service
'
);
return
pfs
.
copy
(
sourceDir
,
testDir
).
then
(()
=>
{
service
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
testDir
,
t
estDir
,
t
oWorkspaceFolders
([{
path
:
testDir
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
new
TestLifecycleService
(),
new
TestStorageService
(),
new
TestNotificationService
(),
{
disableWatcher
:
true
});
service
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
testDir
,
toWorkspaceFolders
([{
path
:
testDir
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
new
TestLifecycleService
(),
new
TestStorageService
(),
new
TestNotificationService
(),
{
disableWatcher
:
true
});
});
});
...
...
@@ -853,7 +853,7 @@ suite('FileService', () => {
const
textResourceConfigurationService
=
new
TestTextResourceConfigurationService
(
configurationService
);
const
_service
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
_testDir
,
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
new
TestContextService
(
new
Workspace
(
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
TestEnvironmentService
,
textResourceConfigurationService
,
configurationService
,
...
...
@@ -898,7 +898,7 @@ suite('FileService', () => {
const
textResourceConfigurationService
=
new
TestTextResourceConfigurationService
(
configurationService
);
const
_service
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
_testDir
,
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
new
TestContextService
(
new
Workspace
(
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
TestEnvironmentService
,
textResourceConfigurationService
,
configurationService
,
...
...
@@ -932,7 +932,7 @@ suite('FileService', () => {
const
resource
=
uri
.
file
(
path
.
join
(
testDir
,
'
index.html
'
));
const
_service
=
new
FileService
(
new
TestContextService
(
new
Workspace
(
_testDir
,
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
new
TestContextService
(
new
Workspace
(
_testDir
,
toWorkspaceFolders
([{
path
:
_testDir
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
...
...
src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts
浏览文件 @
8f343b7b
...
...
@@ -86,7 +86,7 @@ suite('KeybindingsEditing', () => {
instantiationService
.
stub
(
ILogService
,
new
TestLogService
());
instantiationService
.
stub
(
IModelService
,
instantiationService
.
createInstance
(
ModelServiceImpl
));
instantiationService
.
stub
(
IFileService
,
new
FileService
(
new
TestContextService
(
new
Workspace
(
testDir
,
t
estDir
,
t
oWorkspaceFolders
([{
path
:
testDir
}]))),
new
TestContextService
(
new
Workspace
(
testDir
,
toWorkspaceFolders
([{
path
:
testDir
}]))),
TestEnvironmentService
,
new
TestTextResourceConfigurationService
(),
new
TestConfigurationService
(),
...
...
src/vs/workbench/test/browser/parts/editor/breadcrumbModel.test.ts
浏览文件 @
8f343b7b
...
...
@@ -16,7 +16,7 @@ import { FileKind } from 'vs/platform/files/common/files';
suite
(
'
Breadcrumb Model
'
,
function
()
{
const
workspaceService
=
new
TestContextService
(
new
Workspace
(
'
ffff
'
,
'
Test
'
,
[
new
WorkspaceFolder
({
uri
:
URI
.
parse
(
'
foo:/bar/baz/ws
'
),
name
:
'
ws
'
,
index
:
0
})]));
const
workspaceService
=
new
TestContextService
(
new
Workspace
(
'
ffff
'
,
[
new
WorkspaceFolder
({
uri
:
URI
.
parse
(
'
foo:/bar/baz/ws
'
),
name
:
'
ws
'
,
index
:
0
})]));
const
configService
=
new
class
extends
TestConfigurationService
{
getValue
(...
args
:
any
[])
{
if
(
args
[
0
]
===
'
breadcrumbs.filePath
'
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录