Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
890d482d
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
890d482d
编写于
7月 30, 2018
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
revive path urls
上级
6a128060
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
64 addition
and
12 deletion
+64
-12
src/vs/platform/windows/common/windows.ts
src/vs/platform/windows/common/windows.ts
+28
-5
src/vs/platform/windows/common/windowsIpc.ts
src/vs/platform/windows/common/windowsIpc.ts
+1
-0
src/vs/workbench/electron-browser/main.ts
src/vs/workbench/electron-browser/main.ts
+31
-3
src/vs/workbench/electron-browser/window.ts
src/vs/workbench/electron-browser/window.ts
+4
-4
未找到文件。
src/vs/platform/windows/common/windows.ts
浏览文件 @
890d482d
...
...
@@ -309,11 +309,28 @@ export interface IPathsToWaitFor {
waitMarkerFilePath
:
string
;
}
export
interface
IPathData
{
// the file path to open within a Code instance
fileUri
?:
UriComponents
;
// the line number in the file path to open
lineNumber
?:
number
;
// the column number in the file path to open
columnNumber
?:
number
;
}
export
interface
IPathsToWaitForData
{
paths
:
IPathData
[];
waitMarkerFilePath
:
string
;
}
export
interface
IOpenFileRequest
{
filesToOpen
?:
IPath
[];
filesToCreate
?:
IPath
[];
filesToDiff
?:
IPath
[];
filesToWait
?:
IPathsToWaitFor
;
filesToOpen
?:
IPath
Data
[];
filesToCreate
?:
IPath
Data
[];
filesToDiff
?:
IPath
Data
[];
filesToWait
?:
IPathsToWaitFor
Data
;
termProgram
?:
string
;
}
...
...
@@ -321,7 +338,7 @@ export interface IAddFoldersRequest {
foldersToAdd
:
UriComponents
[];
}
export
interface
IWindowConfiguration
extends
ParsedArgs
,
IOpenFileRequest
{
export
interface
IWindowConfiguration
extends
ParsedArgs
{
machineId
:
string
;
windowId
:
number
;
logLevel
:
LogLevel
;
...
...
@@ -351,6 +368,12 @@ export interface IWindowConfiguration extends ParsedArgs, IOpenFileRequest {
perfStartTime
?:
number
;
perfAppReady
?:
number
;
perfWindowLoadTime
?:
number
;
filesToOpen
?:
IPath
[];
filesToCreate
?:
IPath
[];
filesToDiff
?:
IPath
[];
filesToWait
?:
IPathsToWaitFor
;
termProgram
?:
string
;
}
export
interface
IRunActionInWindowRequest
{
...
...
src/vs/platform/windows/common/windowsIpc.ts
浏览文件 @
890d482d
...
...
@@ -278,6 +278,7 @@ export class WindowsChannelClient implements IWindowsService {
return
this
.
channel
.
call
(
'
getRecentlyOpened
'
,
windowId
)
.
then
(
recentlyOpened
=>
{
recentlyOpened
.
workspaces
=
recentlyOpened
.
workspaces
.
map
(
workspace
=>
isWorkspaceIdentifier
(
workspace
)
?
workspace
:
URI
.
revive
(
workspace
));
recentlyOpened
.
files
=
recentlyOpened
.
files
.
map
(
URI
.
revive
);
return
recentlyOpened
;
});
}
...
...
src/vs/workbench/electron-browser/main.ts
浏览文件 @
890d482d
...
...
@@ -15,7 +15,7 @@ import * as errors from 'vs/base/common/errors';
import
*
as
comparer
from
'
vs/base/common/comparers
'
;
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
*
as
paths
from
'
vs/base/common/paths
'
;
import
uri
from
'
vs/base/common/uri
'
;
import
uri
,
{
UriComponents
}
from
'
vs/base/common/uri
'
;
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
{
IWorkspaceContextService
,
Workspace
,
WorkbenchState
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
WorkspaceService
}
from
'
vs/workbench/services/configuration/node/configurationService
'
;
...
...
@@ -55,6 +55,8 @@ gracefulFs.gracefulify(fs); // enable gracefulFs
export
function
startup
(
configuration
:
IWindowConfiguration
):
TPromise
<
void
>
{
revive
(
configuration
);
// Ensure others can listen to zoom level changes
browser
.
setZoomFactor
(
webFrame
.
getZoomFactor
());
...
...
@@ -75,6 +77,33 @@ export function startup(configuration: IWindowConfiguration): TPromise<void> {
return
openWorkbench
(
configuration
);
}
function
revive
(
workbench
:
IWindowConfiguration
)
{
if
(
workbench
.
folderUri
)
{
workbench
.
folderUri
=
uri
.
revive
(
workbench
.
folderUri
);
}
function
reviveFileUri
(
path
:
{
fileUri
?:
UriComponents
})
{
if
(
path
.
fileUri
)
{
path
.
fileUri
=
uri
.
revive
(
path
.
fileUri
);
}
}
const
filesToOpen
=
workbench
.
filesToOpen
;
if
(
Array
.
isArray
(
filesToOpen
))
{
filesToOpen
.
forEach
(
reviveFileUri
);
}
const
filesToCreate
=
workbench
.
filesToCreate
;
if
(
Array
.
isArray
(
filesToCreate
))
{
filesToCreate
.
forEach
(
reviveFileUri
);
}
const
filesToDiff
=
workbench
.
filesToDiff
;
if
(
Array
.
isArray
(
filesToDiff
))
{
filesToDiff
.
forEach
(
reviveFileUri
);
}
const
filesToWait
=
workbench
.
filesToWait
;
if
(
filesToWait
&&
Array
.
isArray
(
filesToWait
.
paths
))
{
filesToWait
.
paths
.
forEach
(
reviveFileUri
);
}
}
function
openWorkbench
(
configuration
:
IWindowConfiguration
):
TPromise
<
void
>
{
const
mainProcessClient
=
new
ElectronIPCClient
(
`window:
${
configuration
.
windowId
}
`
);
const
mainServices
=
createMainProcessServices
(
mainProcessClient
,
configuration
);
...
...
@@ -116,8 +145,7 @@ function openWorkbench(configuration: IWindowConfiguration): TPromise<void> {
}
function
createAndInitializeWorkspaceService
(
configuration
:
IWindowConfiguration
,
environmentService
:
EnvironmentService
):
TPromise
<
WorkspaceService
>
{
const
folderUri
=
configuration
.
folderUri
?
uri
.
revive
(
configuration
.
folderUri
)
:
null
;
return
validateFolderUri
(
folderUri
,
configuration
.
verbose
).
then
(
validatedFolderUri
=>
{
return
validateFolderUri
(
configuration
.
folderUri
,
configuration
.
verbose
).
then
(
validatedFolderUri
=>
{
const
workspaceService
=
new
WorkspaceService
(
environmentService
);
...
...
src/vs/workbench/electron-browser/window.ts
浏览文件 @
890d482d
...
...
@@ -18,7 +18,7 @@ import { toResource, IUntitledResourceInput } from 'vs/workbench/common/editor';
import
{
IEditorService
,
IResourceEditor
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IWorkspaceConfigurationService
}
from
'
vs/workbench/services/configuration/common/configuration
'
;
import
{
IWindowsService
,
IWindowService
,
IWindowSettings
,
I
Path
,
IOpenFileRequest
,
IWindowsConfiguration
,
IAddFoldersRequest
,
IRunActionInWindowRequest
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IWindowsService
,
IWindowService
,
IWindowSettings
,
I
OpenFileRequest
,
IWindowsConfiguration
,
IAddFoldersRequest
,
IRunActionInWindowRequest
,
IPathData
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
ITitleService
}
from
'
vs/workbench/services/title/common/titleService
'
;
import
{
IWorkbenchThemeService
,
VS_HC_THEME
,
VS_DARK_THEME
}
from
'
vs/workbench/services/themes/common/workbenchThemeService
'
;
...
...
@@ -401,7 +401,7 @@ export class ElectronWindow extends Themable {
// In wait mode, listen to changes to the editors and wait until the files
// are closed that the user wants to wait for. When this happens we delete
// the wait marker file to signal to the outside that editing is done.
const
resourcesToWaitFor
=
request
.
filesToWait
.
paths
.
map
(
p
=>
p
.
fileUri
);
const
resourcesToWaitFor
=
request
.
filesToWait
.
paths
.
map
(
p
=>
URI
.
revive
(
p
.
fileUri
)
);
const
waitMarkerFile
=
URI
.
file
(
request
.
filesToWait
.
waitMarkerFilePath
);
const
unbind
=
this
.
editorService
.
onDidCloseEditor
(()
=>
{
if
(
resourcesToWaitFor
.
every
(
resource
=>
!
this
.
editorService
.
isOpen
({
resource
})))
{
...
...
@@ -430,9 +430,9 @@ export class ElectronWindow extends Themable {
});
}
private
toInputs
(
paths
:
IPath
[],
isNew
:
boolean
):
IResourceEditor
[]
{
private
toInputs
(
paths
:
IPath
Data
[],
isNew
:
boolean
):
IResourceEditor
[]
{
return
paths
.
map
(
p
=>
{
const
resource
=
p
.
fileUri
;
const
resource
=
URI
.
revive
(
p
.
fileUri
)
;
let
input
:
IResourceInput
|
IUntitledResourceInput
;
if
(
isNew
)
{
input
=
{
filePath
:
resource
.
fsPath
,
options
:
{
pinned
:
true
}
}
as
IUntitledResourceInput
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录