Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
9b4aa065
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,发现更多精彩内容 >>
提交
9b4aa065
编写于
5月 27, 2016
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Open: Cmd + click opens in new window (fixes #6956)
上级
4c813d8b
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
91 addition
and
79 deletion
+91
-79
src/vs/base/parts/quickopen/browser/quickOpenWidget.ts
src/vs/base/parts/quickopen/browser/quickOpenWidget.ts
+10
-4
src/vs/base/parts/quickopen/common/quickOpen.ts
src/vs/base/parts/quickopen/common/quickOpen.ts
+3
-2
src/vs/base/parts/quickopen/common/quickOpenPaging.ts
src/vs/base/parts/quickopen/common/quickOpenPaging.ts
+2
-2
src/vs/workbench/browser/parts/editor/editorPicker.ts
src/vs/workbench/browser/parts/editor/editorPicker.ts
+3
-3
src/vs/workbench/browser/parts/quickopen/editorHistoryModel.ts
...s/workbench/browser/parts/quickopen/editorHistoryModel.ts
+4
-5
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
.../workbench/browser/parts/quickopen/quickOpenController.ts
+25
-23
src/vs/workbench/browser/quickopen.ts
src/vs/workbench/browser/quickopen.ts
+5
-5
src/vs/workbench/electron-browser/actions.ts
src/vs/workbench/electron-browser/actions.ts
+14
-11
src/vs/workbench/parts/extensions/electron-browser/extensionsQuickOpen.ts
.../parts/extensions/electron-browser/extensionsQuickOpen.ts
+2
-2
src/vs/workbench/parts/quickopen/browser/commandsHandler.ts
src/vs/workbench/parts/quickopen/browser/commandsHandler.ts
+4
-4
src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts
src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts
+5
-5
src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts
...vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts
+5
-5
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
+2
-2
src/vs/workbench/parts/quickopen/browser/markersHandler.ts
src/vs/workbench/parts/quickopen/browser/markersHandler.ts
+2
-2
src/vs/workbench/services/quickopen/common/quickOpenService.ts
...s/workbench/services/quickopen/common/quickOpenService.ts
+2
-1
src/vs/workbench/test/browser/parts/quickOpen/quickopen.test.ts
.../workbench/test/browser/parts/quickOpen/quickopen.test.ts
+3
-3
未找到文件。
src/vs/base/parts/quickopen/browser/quickOpenWidget.ts
浏览文件 @
9b4aa065
...
...
@@ -13,7 +13,7 @@ import {EventType} from 'vs/base/common/events';
import
types
=
require
(
'
vs/base/common/types
'
);
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
uuid
=
require
(
'
vs/base/common/uuid
'
);
import
{
IQuickNavigateConfiguration
,
IAutoFocus
,
IContext
,
IModel
,
Mode
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
IQuickNavigateConfiguration
,
IAutoFocus
,
I
EntryRun
Context
,
IModel
,
Mode
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Filter
,
Renderer
,
DataSource
,
IModelProvider
,
AccessibilityProvider
}
from
'
vs/base/parts/quickopen/browser/quickOpenViewer
'
;
import
{
Dimension
,
Builder
,
$
}
from
'
vs/base/browser/builder
'
;
import
{
ISelectionEvent
,
IFocusEvent
,
ITree
,
ContextMenuEvent
}
from
'
vs/base/parts/tree/browser/tree
'
;
...
...
@@ -25,7 +25,7 @@ import {StandardKeyboardEvent} from 'vs/base/browser/keyboardEvent';
import
{
DefaultController
,
ClickBehavior
}
from
'
vs/base/parts/tree/browser/treeDefaults
'
;
import
DOM
=
require
(
'
vs/base/browser/dom
'
);
import
{
IActionProvider
}
from
'
vs/base/parts/tree/browser/actionsRenderer
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
,
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
ScrollbarVisibility
}
from
'
vs/base/browser/ui/scrollbar/scrollableElementOptions
'
;
...
...
@@ -395,7 +395,7 @@ export class QuickOpenWidget implements IModelProvider {
// ARIA
this
.
inputElement
.
setAttribute
(
'
aria-activedescendant
'
,
this
.
treeElement
.
getAttribute
(
'
aria-activedescendant
'
));
const
context
:
I
Context
=
{
event
:
event
,
quickNavigateConfiguration
:
this
.
quickNavigateConfiguration
};
const
context
:
I
EntryRunContext
=
{
event
:
event
,
keymods
:
this
.
extractKeyMods
(
event
)
,
quickNavigateConfiguration
:
this
.
quickNavigateConfiguration
};
this
.
model
.
runner
.
run
(
value
,
Mode
.
PREVIEW
,
context
);
}
...
...
@@ -404,7 +404,7 @@ export class QuickOpenWidget implements IModelProvider {
// Trigger open of element on selection
if
(
this
.
isVisible
())
{
const
context
:
I
Context
=
{
event
:
event
,
quickNavigateConfiguration
:
this
.
quickNavigateConfiguration
};
const
context
:
I
EntryRunContext
=
{
event
:
event
,
keymods
:
this
.
extractKeyMods
(
event
)
,
quickNavigateConfiguration
:
this
.
quickNavigateConfiguration
};
hide
=
this
.
model
.
runner
.
run
(
value
,
Mode
.
OPEN
,
context
);
}
...
...
@@ -422,6 +422,12 @@ export class QuickOpenWidget implements IModelProvider {
}
}
private
extractKeyMods
(
event
:
any
):
number
[]
{
const
isCtrlCmd
=
event
&&
(
event
.
ctrlKey
||
event
.
metaKey
||
(
event
.
payload
&&
event
.
payload
.
originalEvent
&&
(
event
.
payload
.
originalEvent
.
ctrlKey
||
event
.
payload
.
originalEvent
.
metaKey
)));
return
isCtrlCmd
?
[
KeyMod
.
CtrlCmd
]
:
[];
}
public
show
(
prefix
:
string
,
options
?:
IShowOptions
):
void
;
public
show
(
input
:
IModel
<
any
>
,
options
?:
IShowOptions
):
void
;
public
show
(
param
:
any
,
options
?:
IShowOptions
):
void
{
...
...
src/vs/base/parts/quickopen/common/quickOpen.ts
浏览文件 @
9b4aa065
...
...
@@ -41,8 +41,9 @@ export enum Mode {
OPEN
}
export
interface
IContext
{
export
interface
I
EntryRun
Context
{
event
:
any
;
keymods
:
number
[];
quickNavigateConfiguration
:
IQuickNavigateConfiguration
;
}
...
...
@@ -71,7 +72,7 @@ export interface IAccessiblityProvider<T> {
}
export
interface
IRunner
<
T
>
{
run
(
entry
:
T
,
mode
:
Mode
,
context
:
IContext
):
boolean
;
run
(
entry
:
T
,
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
;
}
export
interface
IModel
<
T
>
{
...
...
src/vs/base/parts/quickopen/common/quickOpenPaging.ts
浏览文件 @
9b4aa065
...
...
@@ -5,7 +5,7 @@
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
PagedModel
}
from
'
vs/base/common/paging
'
;
import
{
Mode
,
IModel
,
IDataSource
,
IRenderer
,
IRunner
,
IContext
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
IModel
,
IDataSource
,
IRenderer
,
IRunner
,
I
EntryRun
Context
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
interface
IStubTemplateData
<
T
>
{
data
:
T
;
...
...
@@ -80,7 +80,7 @@ class PagedRunner<T> implements IRunner<IStub> {
private
runner
:
IRunner
<
T
>
)
{}
run
({
index
}:
IStub
,
mode
:
Mode
,
context
:
IContext
):
boolean
{
run
({
index
}:
IStub
,
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
this
.
model
.
isResolved
(
index
))
{
return
this
.
runner
.
run
(
this
.
model
.
get
(
index
),
mode
,
context
);
}
...
...
src/vs/workbench/browser/parts/editor/editorPicker.ts
浏览文件 @
9b4aa065
...
...
@@ -11,7 +11,7 @@ import labels = require('vs/base/common/labels');
import
URI
from
'
vs/base/common/uri
'
;
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
strings
=
require
(
'
vs/base/common/strings
'
);
import
{
IAutoFocus
,
Mode
,
IContext
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
IAutoFocus
,
Mode
,
I
EntryRun
Context
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenModel
,
QuickOpenEntry
,
QuickOpenEntryGroup
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
scorer
=
require
(
'
vs/base/common/scorer
'
);
import
{
QuickOpenHandler
}
from
'
vs/workbench/browser/quickopen
'
;
...
...
@@ -65,7 +65,7 @@ export class EditorPickerEntry extends QuickOpenEntryGroup {
return
this
.
_group
.
isPreview
(
this
.
editor
)
?
'
editor-preview
'
:
''
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
return
this
.
runOpen
(
context
);
}
...
...
@@ -73,7 +73,7 @@ export class EditorPickerEntry extends QuickOpenEntryGroup {
return
super
.
run
(
mode
,
context
);
}
private
runOpen
(
context
:
IContext
):
boolean
{
private
runOpen
(
context
:
I
EntryRun
Context
):
boolean
{
this
.
editorService
.
openEditor
(
this
.
editor
,
null
,
this
.
stacks
.
positionOfGroup
(
this
.
group
)).
done
(
null
,
errors
.
onUnexpectedError
);
return
true
;
...
...
src/vs/workbench/browser/parts/quickopen/editorHistoryModel.ts
浏览文件 @
9b4aa065
...
...
@@ -14,11 +14,12 @@ import URI from 'vs/base/common/uri';
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
labels
=
require
(
'
vs/base/common/labels
'
);
import
{
EventType
}
from
'
vs/base/common/events
'
;
import
{
Mode
,
IContext
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
I
EntryRun
Context
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntry
,
QuickOpenModel
,
IHighlight
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
EditorInput
,
getUntitledOrFileResource
}
from
'
vs/workbench/common/editor
'
;
import
{
IEditorRegistry
,
Extensions
}
from
'
vs/workbench/browser/parts/editor/baseEditor
'
;
import
{
EditorQuickOpenEntry
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
...
...
@@ -90,11 +91,9 @@ export class EditorHistoryEntry extends EditorQuickOpenEntry {
return
this
.
input
.
matches
(
input
);
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
let
event
=
context
.
event
;
let
ctrlMetaKeyPressed
=
event
&&
(
event
.
ctrlKey
||
event
.
metaKey
||
(
event
.
payload
&&
event
.
payload
.
originalEvent
&&
(
event
.
payload
.
originalEvent
.
ctrlKey
||
event
.
payload
.
originalEvent
.
metaKey
)));
let
sideBySide
=
!
context
.
quickNavigateConfiguration
&&
ctrlMetaKeyPressed
;
let
sideBySide
=
!
context
.
quickNavigateConfiguration
&&
context
.
keymods
.
indexOf
(
KeyMod
.
CtrlCmd
)
>=
0
;
this
.
editorService
.
openEditor
(
this
.
input
,
null
,
sideBySide
).
done
(()
=>
{
if
(
!
this
.
input
.
matches
(
this
.
editorService
.
getActiveEditorInput
()))
{
this
.
model
.
remove
(
this
.
input
);
// Automatically clean up stale history entries when the input can not be opened
...
...
src/vs/workbench/browser/parts/quickopen/quickOpenController.ts
浏览文件 @
9b4aa065
...
...
@@ -13,7 +13,7 @@ import strings = require('vs/base/common/strings');
import
filters
=
require
(
'
vs/base/common/filters
'
);
import
uuid
=
require
(
'
vs/base/common/uuid
'
);
import
types
=
require
(
'
vs/base/common/types
'
);
import
{
Mode
,
IContext
,
IAutoFocus
,
IQuickNavigateConfiguration
,
IModel
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
I
EntryRun
Context
,
IAutoFocus
,
IQuickNavigateConfiguration
,
IModel
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntryItem
,
QuickOpenEntry
,
QuickOpenModel
,
QuickOpenEntryGroup
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
QuickOpenWidget
}
from
'
vs/base/parts/quickopen/browser/quickOpenWidget
'
;
import
{
ContributableActionProvider
}
from
'
vs/workbench/browser/actionBarRegistry
'
;
...
...
@@ -270,9 +270,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
return
item
&&
isAboutStrings
?
item
.
label
:
item
;
}
this
.
doPick
(
entryPromise
,
options
).
then
(
item
=>
resolve
(
onItem
(
item
)),
err
=>
reject
(
err
),
item
=>
progress
(
onItem
(
item
)));
this
.
doPick
(
entryPromise
,
options
).
then
(
item
=>
resolve
(
onItem
(
item
)),
err
=>
reject
(
err
),
item
=>
progress
(
onItem
(
item
)));
});
}
...
...
@@ -334,7 +332,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
let
picksPromiseDone
=
false
;
// Resolve picks
picksPromise
.
then
(
(
picks
)
=>
{
picksPromise
.
then
(
picks
=>
{
if
(
this
.
currentPickerToken
!==
currentPickerToken
)
{
return
;
// Return if another request came after
}
...
...
@@ -364,19 +362,26 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Handlers
this
.
pickOpenWidget
.
setCallbacks
({
onOk
:
()
=>
{
if
(
picks
.
length
===
0
)
{
return
complete
(
null
);
}
let
index
=
-
1
;
let
context
:
IEntryRunContext
;
entries
.
forEach
((
entry
,
i
)
=>
{
if
(
entry
.
s
elected
)
{
if
(
entry
.
s
houldRunWithContext
)
{
index
=
i
;
context
=
entry
.
shouldRunWithContext
;
}
});
complete
(
picks
[
index
]
||
null
);
const
selectedPick
=
picks
[
index
];
if
(
typeof
selectedPick
.
run
===
'
function
'
)
{
selectedPick
.
run
(
context
);
}
complete
(
selectedPick
||
null
);
},
onCancel
:
()
=>
complete
(
void
0
),
onFocusLost
:
()
=>
options
.
ignoreFocusLost
,
...
...
@@ -406,11 +411,8 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
else
{
entries
.
forEach
((
entry
)
=>
{
let
labelHighlights
=
filters
.
matchesFuzzy
(
value
,
entry
.
getLabel
());
let
descriptionHighlights
=
options
.
matchOnDescription
&&
filters
.
matchesFuzzy
(
value
,
entry
.
getDescription
());
let
detailHighlights
=
options
.
matchOnDetail
&&
entry
.
getDetail
()
&&
filters
.
matchesFuzzy
(
value
,
entry
.
getDetail
());
let
descriptionHighlights
=
options
.
matchOnDescription
&&
filters
.
matchesFuzzy
(
value
,
entry
.
getDescription
());
let
detailHighlights
=
options
.
matchOnDetail
&&
entry
.
getDetail
()
&&
filters
.
matchesFuzzy
(
value
,
entry
.
getDetail
());
if
(
labelHighlights
||
descriptionHighlights
||
detailHighlights
)
{
entry
.
setHighlights
(
labelHighlights
,
descriptionHighlights
,
detailHighlights
);
...
...
@@ -918,7 +920,7 @@ class PlaceholderQuickOpenEntry extends QuickOpenEntryGroup {
}
class
PickOpenEntry
extends
PlaceholderQuickOpenEntry
{
private
_s
elected
:
boolean
;
private
_s
houldRunWithContext
:
IEntryRunContext
;
private
description
:
string
;
private
detail
:
string
;
...
...
@@ -929,8 +931,8 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
this
.
detail
=
detail
;
}
public
get
s
elected
():
boolean
{
return
this
.
_s
elected
;
public
get
s
houldRunWithContext
():
IEntryRunContext
{
return
this
.
_s
houldRunWithContext
;
}
public
getDescription
():
string
{
...
...
@@ -949,9 +951,9 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
return
this
.
separatorLabel
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
this
.
_s
elected
=
true
;
this
.
_s
houldRunWithContext
=
context
;
return
true
;
}
...
...
@@ -965,7 +967,7 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
}
class
PickOpenItem
extends
QuickOpenEntryItem
{
private
_s
elected
:
boolean
;
private
_s
houldRunWithContext
:
IEntryRunContext
;
constructor
(
private
label
:
string
,
private
description
:
string
,
private
height
:
number
,
private
renderFn
:
(
tree
:
ITree
,
container
:
HTMLElement
,
previousCleanupFn
:
IElementCallback
)
=>
IElementCallback
,
private
onPreview
?:
()
=>
void
)
{
super
();
...
...
@@ -979,8 +981,8 @@ class PickOpenItem extends QuickOpenEntryItem {
return
this
.
renderFn
(
tree
,
container
,
previousCleanupFn
);
}
public
get
s
elected
():
boolean
{
return
this
.
_s
elected
;
public
get
s
houldRunWithContext
():
IEntryRunContext
{
return
this
.
_s
houldRunWithContext
;
}
public
getLabel
():
string
{
...
...
@@ -991,9 +993,9 @@ class PickOpenItem extends QuickOpenEntryItem {
return
this
.
description
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
this
.
_s
elected
=
true
;
this
.
_s
houldRunWithContext
=
context
;
return
true
;
}
...
...
src/vs/workbench/browser/quickopen.ts
浏览文件 @
9b4aa065
...
...
@@ -13,7 +13,8 @@ import types = require('vs/base/common/types');
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
{
Registry
}
from
'
vs/platform/platform
'
;
import
{
Action
}
from
'
vs/base/common/actions
'
;
import
{
Mode
,
IContext
,
IAutoFocus
,
IModel
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
Mode
,
IEntryRunContext
,
IAutoFocus
,
IModel
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntry
,
IHighlight
,
QuickOpenEntryGroup
,
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
EditorOptions
,
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
IResourceInput
}
from
'
vs/platform/editor/common/editor
'
;
...
...
@@ -232,10 +233,9 @@ export class EditorQuickOpenEntry extends QuickOpenEntry implements IEditorQuick
return
null
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
let
event
=
context
.
event
;
let
sideBySide
=
(
event
&&
(
event
.
ctrlKey
||
event
.
metaKey
||
(
event
.
payload
&&
event
.
payload
.
originalEvent
&&
(
event
.
payload
.
originalEvent
.
ctrlKey
||
event
.
payload
.
originalEvent
.
metaKey
))));
let
sideBySide
=
context
.
keymods
.
indexOf
(
KeyMod
.
CtrlCmd
)
>=
0
;
let
input
=
this
.
getInput
();
if
(
input
instanceof
EditorInput
)
{
...
...
@@ -293,7 +293,7 @@ class CommandEntry extends QuickOpenEntry {
return
nls
.
localize
(
'
entryAriaLabel
'
,
"
{0}, command
"
,
this
.
getLabel
());
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
PREVIEW
)
{
return
false
;
}
...
...
src/vs/workbench/electron-browser/actions.ts
浏览文件 @
9b4aa065
...
...
@@ -18,7 +18,8 @@ import nls = require('vs/nls');
import
{
IMessageService
,
Severity
}
from
'
vs/platform/message/common/message
'
;
import
{
IWindowConfiguration
}
from
'
vs/workbench/electron-browser/window
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IQuickOpenService
}
from
'
vs/workbench/services/quickopen/common/quickOpenService
'
;
import
{
IQuickOpenService
,
IPickOpenEntry
}
from
'
vs/workbench/services/quickopen/common/quickOpenService
'
;
import
{
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
KeybindingsRegistry
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
ServicesAccessor
}
from
'
vs/platform/instantiation/common/instantiation
'
;
...
...
@@ -385,21 +386,23 @@ export class OpenRecentAction extends Action {
const
recentFolders
=
this
.
contextService
.
getConfiguration
().
env
.
recentFolders
;
const
recentFiles
=
this
.
contextService
.
getConfiguration
().
env
.
recentFiles
;
let
folderPicks
=
recentFolders
.
map
((
p
,
index
)
=>
{
let
folderPicks
:
IPickOpenEntry
[]
=
recentFolders
.
map
((
p
,
index
)
=>
{
return
{
label
:
paths
.
basename
(
p
),
description
:
paths
.
dirname
(
p
),
path
:
p
,
separator
:
index
===
0
?
{
label
:
nls
.
localize
(
'
folders
'
,
"
folders
"
)
}
:
void
0
separator
:
index
===
0
?
{
label
:
nls
.
localize
(
'
folders
'
,
"
folders
"
)
}
:
void
0
,
run
:
(
context
)
=>
this
.
runPick
(
p
,
context
)
};
});
let
filePicks
=
recentFiles
.
map
((
p
,
index
)
=>
{
let
filePicks
:
IPickOpenEntry
[]
=
recentFiles
.
map
((
p
,
index
)
=>
{
return
{
label
:
paths
.
basename
(
p
),
description
:
paths
.
dirname
(
p
),
path
:
p
,
separator
:
index
===
0
?
{
label
:
nls
.
localize
(
'
files
'
,
"
files
"
),
border
:
true
}
:
void
0
separator
:
index
===
0
?
{
label
:
nls
.
localize
(
'
files
'
,
"
files
"
),
border
:
true
}
:
void
0
,
run
:
(
context
)
=>
this
.
runPick
(
p
,
context
)
};
});
...
...
@@ -409,13 +412,13 @@ export class OpenRecentAction extends Action {
autoFocus
:
{
autoFocusFirstEntry
:
!
hasWorkspace
,
autoFocusSecondEntry
:
hasWorkspace
},
placeHolder
:
nls
.
localize
(
'
openRecentPlaceHolder
'
,
"
Select a path to open
"
),
matchOnDescription
:
true
}).
then
(
p
=>
{
if
(
p
)
{
ipc
.
send
(
'
vscode:windowOpen
'
,
[
p
.
path
]);
}
}).
then
(
p
=>
true
);
}
return
true
;
});
private
runPick
(
path
,
context
):
void
{
let
newWindow
=
context
.
keymods
.
indexOf
(
KeyMod
.
CtrlCmd
)
>=
0
;
ipc
.
send
(
'
vscode:windowOpen
'
,
[
path
],
newWindow
);
}
}
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsQuickOpen.ts
浏览文件 @
9b4aa065
...
...
@@ -12,7 +12,7 @@ import { ThrottledDelayer } from 'vs/base/common/async';
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
IAutoFocus
,
Mode
,
IModel
,
IDataSource
,
IRenderer
,
IRunner
,
IContext
,
IAccessiblityProvider
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
IAutoFocus
,
Mode
,
IModel
,
IDataSource
,
IRenderer
,
IRunner
,
I
EntryRun
Context
,
IAccessiblityProvider
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenPagedModel
,
IPagedRenderer
}
from
'
vs/base/parts/quickopen/common/quickOpenPaging
'
;
import
{
matchesContiguousSubString
}
from
'
vs/base/common/filters
'
;
import
{
QuickOpenHandler
}
from
'
vs/workbench/browser/quickopen
'
;
...
...
@@ -157,7 +157,7 @@ class InstallRunner implements IRunner<IExtensionEntry> {
@
IInstantiationService
private
instantiationService
:
IInstantiationService
)
{}
run
(
entry
:
IExtensionEntry
,
mode
:
Mode
,
context
:
IContext
):
boolean
{
run
(
entry
:
IExtensionEntry
,
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
PREVIEW
)
{
return
false
;
}
...
...
src/vs/workbench/parts/quickopen/browser/commandsHandler.ts
浏览文件 @
9b4aa065
...
...
@@ -14,7 +14,7 @@ import {language, LANGUAGE_DEFAULT} from 'vs/base/common/platform';
import
strings
=
require
(
'
vs/base/common/strings
'
);
import
{
IAction
,
Action
}
from
'
vs/base/common/actions
'
;
import
{
toErrorMessage
}
from
'
vs/base/common/errors
'
;
import
{
Mode
,
IContext
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
I
EntryRun
Context
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntryGroup
,
IHighlight
,
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
SyncActionDescriptor
,
IActionsService
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IWorkbenchActionRegistry
,
Extensions
as
ActionExtensions
}
from
'
vs/workbench/common/actionRegistry
'
;
...
...
@@ -148,7 +148,7 @@ class CommandEntry extends BaseCommandEntry {
this
.
actionDescriptor
=
actionDescriptor
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
let
action
=
<
Action
>
this
.
instantiationService
.
createInstance
(
this
.
actionDescriptor
.
syncDescriptor
);
this
.
runAction
(
action
);
...
...
@@ -180,7 +180,7 @@ class EditorActionCommandEntry extends BaseCommandEntry {
this
.
action
=
action
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
this
.
runAction
(
this
.
action
);
...
...
@@ -211,7 +211,7 @@ class ActionCommandEntry extends BaseCommandEntry {
this
.
action
=
action
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
this
.
runAction
(
this
.
action
);
...
...
src/vs/workbench/parts/quickopen/browser/gotoLineHandler.ts
浏览文件 @
9b4aa065
...
...
@@ -8,8 +8,9 @@ import {TPromise} from 'vs/base/common/winjs.base';
import
nls
=
require
(
'
vs/nls
'
);
import
types
=
require
(
'
vs/base/common/types
'
);
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
{
IContext
,
Mode
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
I
EntryRun
Context
,
Mode
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
QuickOpenHandler
,
EditorQuickOpenEntry
,
QuickOpenAction
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
TextEditorOptions
,
EditorOptions
,
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
{
BaseTextEditor
}
from
'
vs/workbench/browser/parts/editor/textEditor
'
;
...
...
@@ -79,7 +80,7 @@ class GotoLineEntry extends EditorQuickOpenEntry {
return
model
&&
types
.
isFunction
((
<
ITextModel
>
model
).
getLineCount
)
?
(
<
ITextModel
>
model
).
getLineCount
()
:
-
1
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
return
this
.
runOpen
(
context
);
}
...
...
@@ -99,7 +100,7 @@ class GotoLineEntry extends EditorQuickOpenEntry {
return
options
;
}
public
runOpen
(
context
:
IContext
):
boolean
{
public
runOpen
(
context
:
I
EntryRun
Context
):
boolean
{
// No-op if range is not valid
if
(
this
.
invalidRange
())
{
...
...
@@ -107,8 +108,7 @@ class GotoLineEntry extends EditorQuickOpenEntry {
}
// Check for sideBySide use
let
event
=
context
.
event
;
let
sideBySide
=
(
event
&&
(
event
.
ctrlKey
||
event
.
metaKey
||
(
event
.
payload
&&
event
.
payload
.
originalEvent
&&
(
event
.
payload
.
originalEvent
.
ctrlKey
||
event
.
payload
.
originalEvent
.
metaKey
))));
let
sideBySide
=
context
.
keymods
.
indexOf
(
KeyMod
.
CtrlCmd
)
>=
0
;
if
(
sideBySide
)
{
this
.
editorService
.
openEditor
(
this
.
getInput
(),
this
.
getOptions
(),
true
).
done
(
null
,
errors
.
onUnexpectedError
);
}
...
...
src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts
浏览文件 @
9b4aa065
...
...
@@ -11,12 +11,13 @@ import nls = require('vs/nls');
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
types
=
require
(
'
vs/base/common/types
'
);
import
strings
=
require
(
'
vs/base/common/strings
'
);
import
{
IContext
,
Mode
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
I
EntryRun
Context
,
Mode
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenModel
,
IHighlight
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
QuickOpenHandler
,
EditorQuickOpenEntryGroup
,
QuickOpenAction
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
BaseTextEditor
}
from
'
vs/workbench/browser/parts/editor/textEditor
'
;
import
{
TextEditorOptions
,
EditorOptions
,
EditorInput
}
from
'
vs/workbench/common/editor
'
;
import
filters
=
require
(
'
vs/base/common/filters
'
);
import
{
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IEditor
,
IModelDecorationsChangeAccessor
,
OverviewRulerLane
,
IModelDeltaDecoration
,
IRange
,
IModel
,
ITokenizedModel
,
IDiffEditorModel
,
IEditorViewState
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IQuickOpenService
}
from
'
vs/workbench/services/quickopen/common/quickOpenService
'
;
...
...
@@ -299,7 +300,7 @@ class SymbolEntry extends EditorQuickOpenEntryGroup {
return
options
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
)
{
return
this
.
runOpen
(
context
);
}
...
...
@@ -307,11 +308,10 @@ class SymbolEntry extends EditorQuickOpenEntryGroup {
return
this
.
runPreview
();
}
private
runOpen
(
context
:
IContext
):
boolean
{
private
runOpen
(
context
:
I
EntryRun
Context
):
boolean
{
// Check for sideBySide use
let
event
=
context
.
event
;
let
sideBySide
=
(
event
&&
(
event
.
ctrlKey
||
event
.
metaKey
||
(
event
.
payload
&&
event
.
payload
.
originalEvent
&&
(
event
.
payload
.
originalEvent
.
ctrlKey
||
event
.
payload
.
originalEvent
.
metaKey
))));
let
sideBySide
=
context
.
keymods
.
indexOf
(
KeyMod
.
CtrlCmd
)
>=
0
;
if
(
sideBySide
)
{
this
.
editorService
.
openEditor
(
this
.
getInput
(),
this
.
getOptions
(),
true
).
done
(
null
,
errors
.
onUnexpectedError
);
}
...
...
src/vs/workbench/parts/quickopen/browser/helpHandler.ts
浏览文件 @
9b4aa065
...
...
@@ -9,7 +9,7 @@ import nls = require('vs/nls');
import
{
Builder
,
$
}
from
'
vs/base/browser/builder
'
;
import
types
=
require
(
'
vs/base/common/types
'
);
import
{
Registry
}
from
'
vs/platform/platform
'
;
import
{
Mode
,
IContext
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
I
EntryRun
Context
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntryItem
,
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
ITree
,
IElementCallback
}
from
'
vs/base/parts/tree/browser/tree
'
;
import
{
IQuickOpenRegistry
,
Extensions
,
QuickOpenHandler
}
from
'
vs/workbench/browser/quickopen
'
;
...
...
@@ -106,7 +106,7 @@ class HelpEntry extends QuickOpenEntryItem {
return
null
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
if
(
mode
===
Mode
.
OPEN
||
this
.
openOnPreview
)
{
this
.
quickOpenService
.
show
(
this
.
prefix
);
}
...
...
src/vs/workbench/parts/quickopen/browser/markersHandler.ts
浏览文件 @
9b4aa065
...
...
@@ -17,7 +17,7 @@ import {ITree, IElementCallback} from 'vs/base/parts/tree/browser/tree';
import
Severity
from
'
vs/base/common/severity
'
;
import
{
QuickOpenHandler
,
QuickOpenAction
}
from
'
vs/workbench/browser/quickopen
'
;
import
{
BaseTextEditor
}
from
'
vs/workbench/browser/parts/editor/textEditor
'
;
import
{
Mode
,
IContext
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
Mode
,
I
EntryRun
Context
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
QuickOpenEntryItem
,
QuickOpenModel
}
from
'
vs/base/parts/quickopen/browser/quickOpenModel
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IMarkerService
,
IMarker
}
from
'
vs/platform/markers/common/markers
'
;
...
...
@@ -102,7 +102,7 @@ class MarkerEntry extends QuickOpenEntryItem {
return
;
}
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
public
run
(
mode
:
Mode
,
context
:
I
EntryRun
Context
):
boolean
{
switch
(
mode
)
{
case
Mode
.
OPEN
:
this
.
_open
();
...
...
src/vs/workbench/services/quickopen/common/quickOpenService.ts
浏览文件 @
9b4aa065
...
...
@@ -6,7 +6,7 @@
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
Event
from
'
vs/base/common/event
'
;
import
{
IQuickNavigateConfiguration
,
IAutoFocus
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
IQuickNavigateConfiguration
,
IAutoFocus
,
IEntryRunContext
}
from
'
vs/base/parts/quickopen/common/quickOpen
'
;
import
{
createDecorator
,
ServiceIdentifier
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IEditorInput
}
from
'
vs/platform/editor/common/editor
'
;
...
...
@@ -16,6 +16,7 @@ export interface IPickOpenEntry {
description
?:
string
;
detail
?:
string
;
separator
?:
ISeparator
;
run
?:
(
context
:
IEntryRunContext
)
=>
void
;
}
export
interface
ISeparator
{
...
...
src/vs/workbench/test/browser/parts/quickOpen/quickopen.test.ts
浏览文件 @
9b4aa065
...
...
@@ -71,8 +71,8 @@ suite('Workbench QuickOpen', () => {
assert
(
!
entry1
.
matches
(
entry2
.
getInput
()));
assert
(
entry1
.
matches
(
entry1
.
getInput
()));
assert
(
entry1
.
run
(
Mode
.
OPEN
,
{
event
:
null
,
quickNavigateConfiguration
:
null
}));
assert
(
!
entry2
.
run
(
Mode
.
PREVIEW
,
{
event
:
null
,
quickNavigateConfiguration
:
null
}));
assert
(
entry1
.
run
(
Mode
.
OPEN
,
{
event
:
null
,
quickNavigateConfiguration
:
null
,
keymods
:
[]
}));
assert
(
!
entry2
.
run
(
Mode
.
PREVIEW
,
{
event
:
null
,
quickNavigateConfiguration
:
null
,
keymods
:
[]
}));
});
test
(
'
EditorHistoryEntry is removed when open fails
'
,
()
=>
{
...
...
@@ -88,7 +88,7 @@ suite('Workbench QuickOpen', () => {
assert
.
equal
(
1
,
model
.
getEntries
().
length
);
assert
(
model
.
getEntries
()[
0
].
run
(
Mode
.
OPEN
,
{
event
:
null
,
quickNavigateConfiguration
:
null
}));
assert
(
model
.
getEntries
()[
0
].
run
(
Mode
.
OPEN
,
{
event
:
null
,
quickNavigateConfiguration
:
null
,
keymods
:
[]
}));
assert
.
equal
(
0
,
model
.
getEntries
().
length
);
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录