Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6fdc79d8
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 搜索 >>
提交
6fdc79d8
编写于
11月 20, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
env - set timeout back to 10s but show warning when it takes long
上级
6541e52b
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
56 addition
and
33 deletion
+56
-33
src/vs/base/parts/sandbox/electron-browser/preload.js
src/vs/base/parts/sandbox/electron-browser/preload.js
+0
-8
src/vs/code/electron-browser/workbench/workbench.js
src/vs/code/electron-browser/workbench/workbench.js
+1
-1
src/vs/code/electron-main/app.ts
src/vs/code/electron-main/app.ts
+22
-7
src/vs/code/node/cli.ts
src/vs/code/node/cli.ts
+0
-4
src/vs/code/node/shellEnv.ts
src/vs/code/node/shellEnv.ts
+10
-6
src/vs/platform/environment/common/argv.ts
src/vs/platform/environment/common/argv.ts
+1
-1
src/vs/platform/environment/node/argv.ts
src/vs/platform/environment/node/argv.ts
+1
-1
src/vs/platform/windows/electron-main/windows.ts
src/vs/platform/windows/electron-main/windows.ts
+2
-1
src/vs/platform/windows/electron-main/windowsMainService.ts
src/vs/platform/windows/electron-main/windowsMainService.ts
+10
-1
src/vs/workbench/electron-sandbox/window.ts
src/vs/workbench/electron-sandbox/window.ts
+9
-3
未找到文件。
src/vs/base/parts/sandbox/electron-browser/preload.js
浏览文件 @
6fdc79d8
...
...
@@ -203,15 +203,7 @@
*/
function
resolveEnv
()
{
return
new
Promise
(
function
(
resolve
)
{
const
handle
=
setTimeout
(
function
()
{
console
.
warn
(
'
Preload: Unable to resolve shell environment in a reasonable time
'
);
// It took too long to fetch the shell environment, return
resolve
();
},
3000
);
ipcRenderer
.
once
(
'
vscode:acceptShellEnv
'
,
function
(
event
,
shellEnv
)
{
clearTimeout
(
handle
);
// Assign all keys of the shell environment to our process environment
Object
.
assign
(
process
.
env
,
shellEnv
);
...
...
src/vs/code/electron-browser/workbench/workbench.js
浏览文件 @
6fdc79d8
...
...
@@ -187,5 +187,5 @@
}
//#endregion
}());
src/vs/code/electron-main/app.ts
浏览文件 @
6fdc79d8
...
...
@@ -263,17 +263,32 @@ export class CodeApplication extends Disposable {
ipc
.
on
(
'
vscode:fetchShellEnv
'
,
async
(
event
:
IpcMainEvent
)
=>
{
const
webContents
=
event
.
sender
;
const
window
=
this
.
windowsMainService
?.
getWindowByWebContents
(
event
.
sender
);
if
(
!
window
)
{
return
;
}
try
{
const
shellEnv
=
await
getShellEnvironment
(
this
.
logService
,
this
.
environmentService
);
let
replied
=
false
;
function
acceptShellEnv
(
env
:
NodeJS
.
ProcessEnv
):
void
{
clearTimeout
(
shellEnvTimeoutWarningHandle
);
if
(
!
webContents
.
isDestroyed
())
{
webContents
.
send
(
'
vscode:acceptShellEnv
'
,
shellEnv
);
if
(
!
replied
)
{
webContents
.
send
(
'
vscode:acceptShellEnv
'
,
env
);
replied
=
true
;
}
}
const
shellEnvTimeoutWarningHandle
=
setTimeout
(
function
()
{
window
.
sendWhenReady
(
'
vscode:showShellEnvTimeoutWarningMessage
'
);
acceptShellEnv
({});
},
10000
);
try
{
const
shellEnv
=
await
getShellEnvironment
(
this
.
logService
,
this
.
environmentService
);
acceptShellEnv
(
shellEnv
);
}
catch
(
error
)
{
if
(
!
webContents
.
isDestroyed
())
{
webContents
.
send
(
'
vscode:acceptShellEnv
'
,
{});
}
acceptShellEnv
({});
this
.
logService
.
error
(
'
Error fetching shell env
'
,
error
);
}
...
...
src/vs/code/node/cli.ts
浏览文件 @
6fdc79d8
...
...
@@ -123,10 +123,6 @@ export async function main(argv: string[]): Promise<any> {
'
ELECTRON_NO_ATTACH_CONSOLE
'
:
'
1
'
};
if
(
args
[
'
force-user-env
'
])
{
env
[
'
VSCODE_FORCE_USER_ENV
'
]
=
'
1
'
;
}
delete
env
[
'
ELECTRON_RUN_AS_NODE
'
];
const
processCallbacks
:
((
child
:
ChildProcess
)
=>
Promise
<
void
>
)[]
=
[];
...
...
src/vs/code/node/shellEnv.ts
浏览文件 @
6fdc79d8
...
...
@@ -91,17 +91,21 @@ let shellEnvPromise: Promise<typeof process.env> | undefined = undefined;
*/
export
function
getShellEnvironment
(
logService
:
ILogService
,
environmentService
:
INativeEnvironmentService
):
Promise
<
typeof
process
.
env
>
{
if
(
!
shellEnvPromise
)
{
if
(
environmentService
.
args
[
'
disable-user-env-probe
'
])
{
logService
.
trace
(
'
getShellEnvironment
: disable-user-env-probe set, skipping
'
);
if
(
environmentService
.
args
[
'
force-disable-user-env
'
])
{
logService
.
trace
(
'
getShellEnvironment
(): skipped (--force-disable-user-env)
'
);
shellEnvPromise
=
Promise
.
resolve
({});
}
else
if
(
isWindows
)
{
logService
.
trace
(
'
getShellEnvironment
: running on Windows, skipping
'
);
logService
.
trace
(
'
getShellEnvironment
(): skipped (Windows)
'
);
shellEnvPromise
=
Promise
.
resolve
({});
}
else
if
(
process
.
env
[
'
VSCODE_CLI
'
]
===
'
1
'
&&
process
.
env
[
'
VSCODE_FORCE_USER_ENV
'
]
!==
'
1
'
)
{
logService
.
trace
(
'
getShellEnvironment
: running on CLI, skipping
'
);
}
else
if
(
process
.
env
[
'
VSCODE_CLI
'
]
===
'
1
'
&&
!
environmentService
.
args
[
'
force-user-env
'
]
)
{
logService
.
trace
(
'
getShellEnvironment
(): skipped (VSCODE_CLI is set)
'
);
shellEnvPromise
=
Promise
.
resolve
({});
}
else
{
logService
.
trace
(
'
getShellEnvironment: running on Unix
'
);
if
(
process
.
env
[
'
VSCODE_CLI
'
]
===
'
1
'
)
{
logService
.
trace
(
'
getShellEnvironment(): running (--force-user-env)
'
);
}
else
{
logService
.
trace
(
'
getShellEnvironment(): running (macOS/Linux)
'
);
}
shellEnvPromise
=
getUnixShellEnvironment
(
logService
);
}
}
...
...
src/vs/platform/environment/common/argv.ts
浏览文件 @
6fdc79d8
...
...
@@ -72,10 +72,10 @@ export interface NativeParsedArgs {
'
driver
'
?:
string
;
'
driver-verbose
'
?:
boolean
;
'
remote
'
?:
string
;
'
disable-user-env-probe
'
?:
boolean
;
'
force
'
?:
boolean
;
'
do-not-sync
'
?:
boolean
;
'
force-user-env
'
?:
boolean
;
'
force-disable-user-env
'
?:
boolean
;
'
sync
'
?:
'
on
'
|
'
off
'
;
'
__sandbox
'
?:
boolean
;
'
logsPath
'
?:
string
;
...
...
src/vs/platform/environment/node/argv.ts
浏览文件 @
6fdc79d8
...
...
@@ -97,7 +97,6 @@ export const OPTIONS: OptionDescriptions<Required<NativeParsedArgs>> = {
'
disable-crash-reporter
'
:
{
type
:
'
boolean
'
},
'
crash-reporter-directory
'
:
{
type
:
'
string
'
},
'
crash-reporter-id
'
:
{
type
:
'
string
'
},
'
disable-user-env-probe
'
:
{
type
:
'
boolean
'
},
'
skip-add-to-recently-opened
'
:
{
type
:
'
boolean
'
},
'
unity-launch
'
:
{
type
:
'
boolean
'
},
'
open-url
'
:
{
type
:
'
boolean
'
},
...
...
@@ -111,6 +110,7 @@ export const OPTIONS: OptionDescriptions<Required<NativeParsedArgs>> = {
'
trace-category-filter
'
:
{
type
:
'
string
'
},
'
trace-options
'
:
{
type
:
'
string
'
},
'
force-user-env
'
:
{
type
:
'
boolean
'
},
'
force-disable-user-env
'
:
{
type
:
'
boolean
'
},
'
open-devtools
'
:
{
type
:
'
boolean
'
},
'
__sandbox
'
:
{
type
:
'
boolean
'
},
'
logsPath
'
:
{
type
:
'
string
'
},
...
...
src/vs/platform/windows/electron-main/windows.ts
浏览文件 @
6fdc79d8
...
...
@@ -12,7 +12,7 @@ import { IProcessEnvironment } from 'vs/base/common/platform';
import
{
IWorkspaceIdentifier
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
ISerializableCommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
Rectangle
,
BrowserWindow
}
from
'
electron
'
;
import
{
Rectangle
,
BrowserWindow
,
WebContents
}
from
'
electron
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
export
interface
IWindowState
{
...
...
@@ -113,6 +113,7 @@ export interface IWindowsMainService {
getLastActiveWindow
():
ICodeWindow
|
undefined
;
getWindowById
(
windowId
:
number
):
ICodeWindow
|
undefined
;
getWindowByWebContents
(
webContents
:
WebContents
):
ICodeWindow
|
undefined
;
getWindows
():
ICodeWindow
[];
getWindowCount
():
number
;
}
...
...
src/vs/platform/windows/electron-main/windowsMainService.ts
浏览文件 @
6fdc79d8
...
...
@@ -14,7 +14,7 @@ import { IEnvironmentMainService } from 'vs/platform/environment/electron-main/e
import
{
NativeParsedArgs
}
from
'
vs/platform/environment/common/argv
'
;
import
{
IStateService
}
from
'
vs/platform/state/node/state
'
;
import
{
CodeWindow
,
defaultWindowState
}
from
'
vs/code/electron-main/window
'
;
import
{
screen
,
BrowserWindow
,
MessageBoxOptions
,
Display
,
app
}
from
'
electron
'
;
import
{
screen
,
BrowserWindow
,
MessageBoxOptions
,
Display
,
app
,
WebContents
}
from
'
electron
'
;
import
{
ILifecycleMainService
,
UnloadReason
,
LifecycleMainService
,
LifecycleMainPhase
}
from
'
vs/platform/lifecycle/electron-main/lifecycleMainService
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
...
...
@@ -1700,6 +1700,15 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic
return
arrays
.
firstOrDefault
(
res
);
}
getWindowByWebContents
(
webContents
:
WebContents
):
ICodeWindow
|
undefined
{
const
browserWindow
=
BrowserWindow
.
fromWebContents
(
webContents
);
if
(
!
browserWindow
)
{
return
undefined
;
}
return
this
.
getWindowById
(
browserWindow
.
id
);
}
getWindows
():
ICodeWindow
[]
{
return
WindowsMainService
.
WINDOWS
;
}
...
...
src/vs/workbench/electron-sandbox/window.ts
浏览文件 @
6fdc79d8
...
...
@@ -185,9 +185,15 @@ export class NativeWindow extends Disposable {
ipcRenderer
.
on
(
'
vscode:addFolders
'
,
(
event
:
unknown
,
request
:
IAddFoldersRequest
)
=>
this
.
onAddFoldersRequest
(
request
));
// Message support
ipcRenderer
.
on
(
'
vscode:showInfoMessage
'
,
(
event
:
unknown
,
message
:
string
)
=>
{
this
.
notificationService
.
info
(
message
);
});
ipcRenderer
.
on
(
'
vscode:showInfoMessage
'
,
(
event
:
unknown
,
message
:
string
)
=>
this
.
notificationService
.
info
(
message
));
ipcRenderer
.
on
(
'
vscode:showShellEnvTimeoutWarningMessage
'
,
()
=>
this
.
notificationService
.
prompt
(
Severity
.
Warning
,
nls
.
localize
(
'
shellEnvTimeoutWarning
'
,
"
It took more than 10s to resolve your shell environment. Please review your shell configuration.
"
),
[{
label
:
nls
.
localize
(
'
learnMode
'
,
"
Learn More
"
),
run
:
()
=>
this
.
openerService
.
open
(
'
https://go.microsoft.com/fwlink/?linkid=2149667
'
)
}]
));
// Display change events
ipcRenderer
.
on
(
'
vscode:displayChanged
'
,
()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录