Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5349bf1f
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,发现更多精彩内容 >>
提交
5349bf1f
编写于
3月 20, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
quick access - allow to open in background for local symbols and go to line too
上级
3f684395
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
38 addition
and
16 deletion
+38
-16
src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts
...editor/contrib/quickAccess/editorNavigationQuickAccess.ts
+13
-2
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
+9
-3
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
+10
-7
src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts
...rib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts
+3
-2
src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts
...b/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts
+3
-2
未找到文件。
src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.ts
浏览文件 @
5349bf1f
...
...
@@ -22,6 +22,10 @@ interface IEditorLineDecoration {
overviewRulerDecorationId
:
string
;
}
export
interface
IEditorNavigationQuickAccessOptions
{
canAcceptInBackground
?:
boolean
;
}
/**
* A reusable quick access provider for the editor with support
* for adding decorations for navigating in the currently active file
...
...
@@ -29,11 +33,16 @@ interface IEditorLineDecoration {
*/
export
abstract
class
AbstractEditorNavigationQuickAccessProvider
implements
IQuickAccessProvider
{
constructor
(
protected
options
?:
IEditorNavigationQuickAccessOptions
)
{
}
//#region Provider methods
provide
(
picker
:
IQuickPick
<
IQuickPickItem
>
,
token
:
CancellationToken
):
IDisposable
{
const
disposables
=
new
DisposableStore
();
// Apply options if any
picker
.
canAcceptInBackground
=
!!
this
.
options
?.
canAcceptInBackground
;
// Disable filtering & sorting, we control the results
picker
.
matchOnLabel
=
picker
.
matchOnDescription
=
picker
.
matchOnDetail
=
picker
.
sortByLabel
=
false
;
...
...
@@ -110,11 +119,13 @@ export abstract class AbstractEditorNavigationQuickAccessProvider implements IQu
*/
protected
abstract
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IQuickPickItem
>
,
token
:
CancellationToken
):
IDisposable
;
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
}):
void
{
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
,
preserveFocus
?:
boolean
}):
void
{
editor
.
setSelection
(
options
.
range
);
editor
.
revealRangeInCenter
(
options
.
range
,
ScrollType
.
Smooth
);
if
(
!
options
.
preserveFocus
)
{
editor
.
focus
();
}
}
protected
getModel
(
editor
:
IEditor
|
IDiffEditor
):
ITextModel
|
undefined
{
return
isDiffEditor
(
editor
)
?
...
...
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
浏览文件 @
5349bf1f
...
...
@@ -18,6 +18,10 @@ export abstract class AbstractGotoLineQuickAccessProvider extends AbstractEditor
static
PREFIX
=
'
:
'
;
constructor
()
{
super
({
canAcceptInBackground
:
true
});
}
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoLineQuickPickItem
>
):
IDisposable
{
const
label
=
localize
(
'
cannotRunGotoLine
'
,
"
Open a text editor first to go to a line.
"
);
...
...
@@ -31,17 +35,19 @@ export abstract class AbstractGotoLineQuickAccessProvider extends AbstractEditor
const
disposables
=
new
DisposableStore
();
// Goto line once picked
disposables
.
add
(
picker
.
onDidAccept
(
()
=>
{
disposables
.
add
(
picker
.
onDidAccept
(
event
=>
{
const
[
item
]
=
picker
.
selectedItems
;
if
(
item
)
{
if
(
!
this
.
isValidLineNumber
(
editor
,
item
.
lineNumber
))
{
return
;
}
this
.
gotoLocation
(
editor
,
{
range
:
this
.
toRange
(
item
.
lineNumber
,
item
.
column
),
keyMods
:
picker
.
keyMods
});
this
.
gotoLocation
(
editor
,
{
range
:
this
.
toRange
(
item
.
lineNumber
,
item
.
column
),
keyMods
:
picker
.
keyMods
,
preserveFocus
:
event
.
inBackground
});
if
(
!
event
.
inBackground
)
{
picker
.
hide
();
}
}
}));
// React to picker changes
...
...
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
浏览文件 @
5349bf1f
...
...
@@ -10,12 +10,13 @@ import { DisposableStore, IDisposable, Disposable } from 'vs/base/common/lifecyc
import
{
IEditor
,
ScrollType
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ITextModel
}
from
'
vs/editor/common/model
'
;
import
{
IRange
,
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
AbstractEditorNavigationQuickAccessProvider
}
from
'
vs/editor/contrib/quickAccess/editorNavigationQuickAccess
'
;
import
{
AbstractEditorNavigationQuickAccessProvider
,
IEditorNavigationQuickAccessOptions
}
from
'
vs/editor/contrib/quickAccess/editorNavigationQuickAccess
'
;
import
{
DocumentSymbol
,
SymbolKinds
,
SymbolTag
,
DocumentSymbolProviderRegistry
,
SymbolKind
}
from
'
vs/editor/common/modes
'
;
import
{
OutlineModel
,
OutlineElement
}
from
'
vs/editor/contrib/documentSymbols/outlineModel
'
;
import
{
values
}
from
'
vs/base/common/collections
'
;
import
{
trim
,
format
}
from
'
vs/base/common/strings
'
;
import
{
fuzzyScore
,
FuzzyScore
,
createMatches
}
from
'
vs/base/common/filters
'
;
import
{
assign
}
from
'
vs/base/common/objects
'
;
interface
IGotoSymbolQuickPickItem
extends
IQuickPickItem
{
kind
:
SymbolKind
,
...
...
@@ -24,7 +25,7 @@ interface IGotoSymbolQuickPickItem extends IQuickPickItem {
range
?:
{
decoration
:
IRange
,
selection
:
IRange
},
}
export
interface
IGotoSymbolQuickAccessProviderOptions
{
export
interface
IGotoSymbolQuickAccessProviderOptions
extends
IEditorNavigationQuickAccessOptions
{
openSideBySideDirection
:
()
=>
undefined
|
'
right
'
|
'
down
'
}
...
...
@@ -34,8 +35,8 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
static
SCOPE_PREFIX
=
'
:
'
;
static
PREFIX_BY_CATEGORY
=
`
${
AbstractGotoSymbolQuickAccessProvider
.
PREFIX
}${
AbstractGotoSymbolQuickAccessProvider
.
SCOPE_PREFIX
}
`
;
constructor
(
pr
ivate
options
?:
IGotoSymbolQuickAccessProviderOptions
)
{
super
();
constructor
(
pr
otected
options
?:
IGotoSymbolQuickAccessProviderOptions
)
{
super
(
assign
(
options
,
{
canAcceptInBackground
:
true
})
);
}
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoSymbolQuickPickItem
>
):
IDisposable
{
...
...
@@ -92,13 +93,15 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
const
disposables
=
new
DisposableStore
();
// Goto symbol once picked
disposables
.
add
(
picker
.
onDidAccept
(
()
=>
{
disposables
.
add
(
picker
.
onDidAccept
(
event
=>
{
const
[
item
]
=
picker
.
selectedItems
;
if
(
item
&&
item
.
range
)
{
this
.
gotoLocation
(
editor
,
{
range
:
item
.
range
.
selection
,
keyMods
:
picker
.
keyMods
});
this
.
gotoLocation
(
editor
,
{
range
:
item
.
range
.
selection
,
keyMods
:
picker
.
keyMods
,
preserveFocus
:
event
.
inBackground
});
if
(
!
event
.
inBackground
)
{
picker
.
hide
();
}
}
}));
// Goto symbol side by side if enabled
...
...
src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.ts
浏览文件 @
5349bf1f
...
...
@@ -37,13 +37,14 @@ export class GotoLineQuickAccessProvider extends AbstractGotoLineQuickAccessProv
return
this
.
editorService
.
activeTextEditorControl
;
}
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
}):
void
{
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
,
preserveFocus
?:
boolean
}):
void
{
// Check for sideBySide use
if
((
options
.
keyMods
.
ctrlCmd
||
options
.
forceSideBySide
)
&&
this
.
editorService
.
activeEditor
)
{
this
.
editorService
.
openEditor
(
this
.
editorService
.
activeEditor
,
{
selection
:
options
.
range
,
pinned
:
options
.
keyMods
.
alt
||
this
.
configuration
.
openEditorPinned
pinned
:
options
.
keyMods
.
alt
||
this
.
configuration
.
openEditorPinned
,
preserveFocus
:
options
.
preserveFocus
},
SIDE_GROUP
);
}
...
...
src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts
浏览文件 @
5349bf1f
...
...
@@ -40,13 +40,14 @@ export class GotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccess
return
this
.
editorService
.
activeTextEditorControl
;
}
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
}):
void
{
protected
gotoLocation
(
editor
:
IEditor
,
options
:
{
range
:
IRange
,
keyMods
:
IKeyMods
,
forceSideBySide
?:
boolean
,
preserveFocus
?:
boolean
}):
void
{
// Check for sideBySide use
if
((
options
.
keyMods
.
ctrlCmd
||
options
.
forceSideBySide
)
&&
this
.
editorService
.
activeEditor
)
{
this
.
editorService
.
openEditor
(
this
.
editorService
.
activeEditor
,
{
selection
:
options
.
range
,
pinned
:
options
.
keyMods
.
alt
||
this
.
configuration
.
openEditorPinned
pinned
:
options
.
keyMods
.
alt
||
this
.
configuration
.
openEditorPinned
,
preserveFocus
:
options
.
preserveFocus
},
SIDE_GROUP
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录