Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c19a86f9
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,发现更多精彩内容 >>
提交
c19a86f9
编写于
1月 12, 2018
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove root folders multi select aware and move helpr commandArgument methods to files.ts
上级
d85071de
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
70 addition
and
49 deletion
+70
-49
src/vs/workbench/browser/actions/workspaceCommands.ts
src/vs/workbench/browser/actions/workspaceCommands.ts
+0
-11
src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts
...arts/execution/electron-browser/execution.contribution.ts
+1
-1
src/vs/workbench/parts/files/browser/files.ts
src/vs/workbench/parts/files/browser/files.ts
+46
-0
src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
.../parts/files/electron-browser/fileActions.contribution.ts
+2
-2
src/vs/workbench/parts/files/electron-browser/fileCommands.ts
...vs/workbench/parts/files/electron-browser/fileCommands.ts
+20
-34
src/vs/workbench/parts/search/electron-browser/search.contribution.ts
...ench/parts/search/electron-browser/search.contribution.ts
+1
-1
未找到文件。
src/vs/workbench/browser/actions/workspaceCommands.ts
浏览文件 @
c19a86f9
...
...
@@ -27,9 +27,6 @@ import { isLinux } from 'vs/base/common/platform';
export
const
ADD_ROOT_FOLDER_COMMAND_ID
=
'
workbench.command.addRootFolder
'
;
export
const
ADD_ROOT_FOLDER_LABEL
=
nls
.
localize
(
'
addFolderToWorkspace
'
,
"
Add Folder to Workspace...
"
);
export
const
REMOVE_ROOT_FOLDER_COMMAND_ID
=
'
workbench.command.removeRootFolder
'
;
export
const
REMOVE_ROOT_FOLDER_LABEL
=
nls
.
localize
(
'
removeFolderFromWorkspace
'
,
"
Remove Folder from Workspace
"
);
export
const
PICK_WORKSPACE_FOLDER_COMMAND_ID
=
'
_workbench.pickWorkspaceFolder
'
;
function
pickFolders
(
buttonLabel
:
string
,
title
:
string
,
windowService
:
IWindowService
,
contextService
:
IWorkspaceContextService
,
historyService
:
IHistoryService
):
TPromise
<
string
[]
>
{
...
...
@@ -158,14 +155,6 @@ CommandsRegistry.registerCommand({
}
});
CommandsRegistry
.
registerCommand
({
id
:
REMOVE_ROOT_FOLDER_COMMAND_ID
,
handler
:
(
accessor
,
resource
:
URI
)
=>
{
const
workspaceEditingService
=
accessor
.
get
(
IWorkspaceEditingService
);
return
workspaceEditingService
.
removeFolders
([
resource
]);
}
});
CommandsRegistry
.
registerCommand
(
PICK_WORKSPACE_FOLDER_COMMAND_ID
,
function
(
accessor
,
args
?:
[
IPickOptions
,
CancellationToken
])
{
const
contextService
=
accessor
.
get
(
IWorkspaceContextService
);
const
quickOpenService
=
accessor
.
get
(
IQuickOpenService
);
...
...
src/vs/workbench/parts/execution/electron-browser/execution.contribution.ts
浏览文件 @
c19a86f9
...
...
@@ -25,7 +25,7 @@ import { ResourceContextKey } from 'vs/workbench/common/resources';
import
{
KeybindingsRegistry
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
IListService
}
from
'
vs/platform/list/browser/listService
'
;
import
{
getResourceForCommand
}
from
'
vs/workbench/parts/files/
electron-browser/fileCommand
s
'
;
import
{
getResourceForCommand
}
from
'
vs/workbench/parts/files/
browser/file
s
'
;
if
(
env
.
isWindows
)
{
registerSingleton
(
ITerminalService
,
WinTerminalService
);
...
...
src/vs/workbench/parts/files/browser/files.ts
0 → 100644
浏览文件 @
c19a86f9
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
IListService
}
from
'
vs/platform/list/browser/listService
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
FileStat
,
OpenEditor
}
from
'
vs/workbench/parts/files/common/explorerModel
'
;
import
{
toResource
}
from
'
vs/workbench/common/editor
'
;
import
{
Tree
}
from
'
vs/base/parts/tree/browser/treeImpl
'
;
// Commands can get exeucted from a command pallete, from a context menu or from some list using a keybinding
// To cover all these cases we need to properly compute the resource on which the command is being executed
export
function
getResourceForCommand
(
resource
:
URI
,
listService
:
IListService
,
editorService
:
IWorkbenchEditorService
):
URI
{
if
(
URI
.
isUri
(
resource
))
{
return
resource
;
}
const
list
=
listService
.
lastFocusedList
;
if
(
list
&&
list
.
isDOMFocused
())
{
const
focus
=
list
.
getFocus
();
if
(
focus
instanceof
FileStat
)
{
return
focus
.
resource
;
}
else
if
(
focus
instanceof
OpenEditor
)
{
return
focus
.
editorInput
.
getResource
();
}
}
return
toResource
(
editorService
.
getActiveEditorInput
(),
{
supportSideBySide
:
true
});
}
export
function
getResourcesForCommand
(
resource
:
URI
,
listService
:
IListService
,
editorService
:
IWorkbenchEditorService
):
URI
[]
{
const
list
=
listService
.
lastFocusedList
;
if
(
list
&&
list
.
isDOMFocused
()
&&
list
instanceof
Tree
)
{
const
selection
=
list
.
getSelection
();
if
(
selection
&&
selection
.
length
>
1
)
{
return
selection
.
map
(
fs
=>
fs
.
resource
);
}
}
const
result
=
getResourceForCommand
(
resource
,
listService
,
editorService
);
return
!!
result
?
[
result
]
:
[];
}
src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts
浏览文件 @
c19a86f9
...
...
@@ -11,13 +11,13 @@ import { revertLocalChangesCommand, acceptLocalChangesCommand, CONFLICT_RESOLUTI
import
{
SyncActionDescriptor
,
MenuId
,
MenuRegistry
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IWorkbenchActionRegistry
,
Extensions
as
ActionExtensions
}
from
'
vs/workbench/common/actions
'
;
import
{
KeyMod
,
KeyChord
,
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
openWindowCommand
,
REVEAL_IN_OS_COMMAND_ID
,
COPY_PATH_COMMAND_ID
,
REVEAL_IN_EXPLORER_COMMAND_ID
,
OPEN_TO_SIDE_COMMAND_ID
,
REVERT_FILE_COMMAND_ID
,
SAVE_FILE_COMMAND_ID
,
SAVE_FILE_LABEL
,
SAVE_FILE_AS_COMMAND_ID
,
SAVE_FILE_AS_LABEL
,
SAVE_ALL_IN_GROUP_COMMAND_ID
,
OpenEditorsGroupContext
,
COMPARE_WITH_SAVED_COMMAND_ID
,
COMPARE_RESOURCE_COMMAND_ID
,
SELECT_FOR_COMPARE_COMMAND_ID
,
ResourceSelectedForCompareContext
,
REVEAL_IN_OS_LABEL
,
DirtyEditorContext
,
COMPARE_SELECTED_COMMAND_ID
}
from
'
vs/workbench/parts/files/electron-browser/fileCommands
'
;
import
{
openWindowCommand
,
REVEAL_IN_OS_COMMAND_ID
,
COPY_PATH_COMMAND_ID
,
REVEAL_IN_EXPLORER_COMMAND_ID
,
OPEN_TO_SIDE_COMMAND_ID
,
REVERT_FILE_COMMAND_ID
,
SAVE_FILE_COMMAND_ID
,
SAVE_FILE_LABEL
,
SAVE_FILE_AS_COMMAND_ID
,
SAVE_FILE_AS_LABEL
,
SAVE_ALL_IN_GROUP_COMMAND_ID
,
OpenEditorsGroupContext
,
COMPARE_WITH_SAVED_COMMAND_ID
,
COMPARE_RESOURCE_COMMAND_ID
,
SELECT_FOR_COMPARE_COMMAND_ID
,
ResourceSelectedForCompareContext
,
REVEAL_IN_OS_LABEL
,
DirtyEditorContext
,
COMPARE_SELECTED_COMMAND_ID
,
REMOVE_ROOT_FOLDER_COMMAND_ID
,
REMOVE_ROOT_FOLDER_LABEL
}
from
'
vs/workbench/parts/files/electron-browser/fileCommands
'
;
import
{
CommandsRegistry
,
ICommandHandler
}
from
'
vs/platform/commands/common/commands
'
;
import
{
ContextKeyExpr
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
KeybindingsRegistry
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
isWindows
,
isMacintosh
}
from
'
vs/base/common/platform
'
;
import
{
FilesExplorerFocusCondition
,
ExplorerRootContext
,
ExplorerFolderContext
}
from
'
vs/workbench/parts/files/common/files
'
;
import
{
ADD_ROOT_FOLDER_COMMAND_ID
,
ADD_ROOT_FOLDER_LABEL
,
REMOVE_ROOT_FOLDER_COMMAND_ID
,
REMOVE_ROOT_FOLDER_LABEL
}
from
'
vs/workbench/browser/actions/workspaceCommands
'
;
import
{
ADD_ROOT_FOLDER_COMMAND_ID
,
ADD_ROOT_FOLDER_LABEL
}
from
'
vs/workbench/browser/actions/workspaceCommands
'
;
import
{
CLOSE_UNMODIFIED_EDITORS_COMMAND_ID
,
CLOSE_EDITORS_IN_GROUP_COMMAND_ID
,
CLOSE_EDITOR_COMMAND_ID
,
CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID
}
from
'
vs/workbench/browser/parts/editor/editorCommands
'
;
import
{
OPEN_FOLDER_SETTINGS_COMMAND
,
OPEN_FOLDER_SETTINGS_LABEL
}
from
'
vs/workbench/parts/preferences/browser/preferencesActions
'
;
import
{
AutoSaveContext
}
from
'
vs/workbench/services/textfile/common/textfiles
'
;
...
...
src/vs/workbench/parts/files/electron-browser/fileCommands.ts
浏览文件 @
c19a86f9
...
...
@@ -38,8 +38,9 @@ import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRe
import
{
KeyMod
,
KeyCode
,
KeyChord
}
from
'
vs/base/common/keyCodes
'
;
import
{
isWindows
,
isMacintosh
}
from
'
vs/base/common/platform
'
;
import
{
ITextModelService
}
from
'
vs/editor/common/services/resolverService
'
;
import
{
FileStat
,
OpenEditor
}
from
'
vs/workbench/parts/files/common/explorerModel
'
;
import
{
sequence
}
from
'
vs/base/common/async
'
;
import
{
getResourceForCommand
,
getResourcesForCommand
}
from
'
vs/workbench/parts/files/browser/files
'
;
import
{
IWorkspaceEditingService
}
from
'
vs/workbench/services/workspace/common/workspaceEditing
'
;
// Commands
...
...
@@ -72,44 +73,14 @@ export const OpenEditorsGroupContext = new RawContextKey<boolean>('groupFocusedI
export
const
DirtyEditorContext
=
new
RawContextKey
<
boolean
>
(
'
dirtyEditor
'
,
false
);
export
const
ResourceSelectedForCompareContext
=
new
RawContextKey
<
boolean
>
(
'
resourceSelectedForCompare
'
,
false
);
export
const
REMOVE_ROOT_FOLDER_COMMAND_ID
=
'
workbench.command.removeRootFolder
'
;
export
const
REMOVE_ROOT_FOLDER_LABEL
=
nls
.
localize
(
'
removeFolderFromWorkspace
'
,
"
Remove Folder from Workspace
"
);
export
const
openWindowCommand
=
(
accessor
:
ServicesAccessor
,
paths
:
string
[],
forceNewWindow
:
boolean
)
=>
{
const
windowsService
=
accessor
.
get
(
IWindowsService
);
windowsService
.
openWindow
(
paths
,
{
forceNewWindow
});
};
// Commands can get exeucted from a command pallete, from a context menu or from some list using a keybinding
// To cover all these cases we need to properly compute the resource on which the command is being executed
export
function
getResourceForCommand
(
resource
:
URI
,
listService
:
IListService
,
editorService
:
IWorkbenchEditorService
):
URI
{
if
(
URI
.
isUri
(
resource
))
{
return
resource
;
}
const
list
=
listService
.
lastFocusedList
;
if
(
list
&&
list
.
isDOMFocused
())
{
const
focus
=
list
.
getFocus
();
if
(
focus
instanceof
FileStat
)
{
return
focus
.
resource
;
}
else
if
(
focus
instanceof
OpenEditor
)
{
return
focus
.
editorInput
.
getResource
();
}
}
return
toResource
(
editorService
.
getActiveEditorInput
(),
{
supportSideBySide
:
true
});
}
export
function
getResourcesForCommand
(
resource
:
URI
,
listService
:
IListService
,
editorService
:
IWorkbenchEditorService
):
URI
[]
{
const
list
=
listService
.
lastFocusedList
;
if
(
list
&&
list
.
isDOMFocused
()
&&
list
instanceof
Tree
)
{
const
selection
=
list
.
getSelection
();
if
(
selection
&&
selection
.
length
>
1
)
{
return
selection
.
map
(
fs
=>
fs
.
resource
);
}
}
const
result
=
getResourceForCommand
(
resource
,
listService
,
editorService
);
return
!!
result
?
[
result
]
:
[];
}
function
save
(
resource
:
URI
,
isSaveAs
:
boolean
,
editorService
:
IWorkbenchEditorService
,
fileService
:
IFileService
,
untitledEditorService
:
IUntitledEditorService
,
textFileService
:
ITextFileService
,
editorGroupService
:
IEditorGroupService
):
TPromise
<
any
>
{
...
...
@@ -542,3 +513,18 @@ CommandsRegistry.registerCommand({
return
saveAll
(
false
,
accessor
.
get
(
IWorkbenchEditorService
),
accessor
.
get
(
IUntitledEditorService
),
accessor
.
get
(
ITextFileService
),
accessor
.
get
(
IEditorGroupService
));
}
});
CommandsRegistry
.
registerCommand
({
id
:
REMOVE_ROOT_FOLDER_COMMAND_ID
,
handler
:
(
accessor
,
resource
:
URI
)
=>
{
const
workspaceEditingService
=
accessor
.
get
(
IWorkspaceEditingService
);
const
contextService
=
accessor
.
get
(
IWorkspaceContextService
);
const
workspace
=
contextService
.
getWorkspace
();
const
resources
=
getResourcesForCommand
(
resource
,
accessor
.
get
(
IListService
),
accessor
.
get
(
IWorkbenchEditorService
)).
filter
(
r
=>
// Need to verify resources are workspaces since multi selection can trigger this command on some non workspace resources
workspace
.
folders
.
some
(
f
=>
f
.
uri
.
toString
()
===
r
.
toString
())
);
return
workspaceEditingService
.
removeFolders
(
resources
);
}
});
src/vs/workbench/parts/search/electron-browser/search.contribution.ts
浏览文件 @
c19a86f9
...
...
@@ -47,10 +47,10 @@ import URI from 'vs/base/common/uri';
import
{
relative
}
from
'
path
'
;
import
{
dirname
}
from
'
vs/base/common/resources
'
;
import
{
ResourceContextKey
}
from
'
vs/workbench/common/resources
'
;
import
{
getResourcesForCommand
}
from
'
vs/workbench/parts/files/electron-browser/fileCommands
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
distinct
}
from
'
vs/base/common/arrays
'
;
import
{
getResourcesForCommand
}
from
'
vs/workbench/parts/files/browser/files
'
;
registerSingleton
(
ISearchWorkbenchService
,
SearchWorkbenchService
);
replaceContributions
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录