Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
48667fcc
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 搜索 >>
提交
48667fcc
编写于
12月 13, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
have _tree, _treeRefresher, and _treeModel instead of _tree...
上级
bca39e1d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
71 addition
and
59 deletion
+71
-59
src/vs/editor/contrib/documentSymbols/outlineTree.ts
src/vs/editor/contrib/documentSymbols/outlineTree.ts
+13
-8
src/vs/workbench/parts/outline/electron-browser/outlinePanel.ts
.../workbench/parts/outline/electron-browser/outlinePanel.ts
+58
-51
未找到文件。
src/vs/editor/contrib/documentSymbols/outlineTree.ts
浏览文件 @
48667fcc
...
@@ -20,6 +20,7 @@ import { WorkbenchTreeController } from 'vs/platform/list/browser/listService';
...
@@ -20,6 +20,7 @@ import { WorkbenchTreeController } from 'vs/platform/list/browser/listService';
import
{
MarkerSeverity
}
from
'
vs/platform/markers/common/markers
'
;
import
{
MarkerSeverity
}
from
'
vs/platform/markers/common/markers
'
;
import
{
listErrorForeground
,
listWarningForeground
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
listErrorForeground
,
listWarningForeground
}
from
'
vs/platform/theme/common/colorRegistry
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
AbstractTree
}
from
'
vs/base/browser/ui/tree/abstractTree
'
;
export
const
enum
OutlineItemCompareType
{
export
const
enum
OutlineItemCompareType
{
ByPosition
,
ByPosition
,
...
@@ -251,7 +252,7 @@ export class OutlineTreeState {
...
@@ -251,7 +252,7 @@ export class OutlineTreeState {
readonly
focused
:
string
;
readonly
focused
:
string
;
readonly
expanded
:
string
[];
readonly
expanded
:
string
[];
static
capture
(
tree
:
ITree
):
OutlineTreeState
{
static
capture
(
tree
:
AbstractTree
<
any
,
any
,
any
>
):
OutlineTreeState
{
// selection
// selection
let
selected
:
string
;
let
selected
:
string
;
let
element
=
tree
.
getSelection
()[
0
];
let
element
=
tree
.
getSelection
()[
0
];
...
@@ -261,14 +262,15 @@ export class OutlineTreeState {
...
@@ -261,14 +262,15 @@ export class OutlineTreeState {
// focus
// focus
let
focused
:
string
;
let
focused
:
string
;
element
=
tree
.
getFocus
(
true
);
// element = tree.getFocus(true);
element
=
tree
.
getFocus
()[
0
];
// todo@joh include hidden?
if
(
element
instanceof
TreeElement
)
{
if
(
element
instanceof
TreeElement
)
{
focused
=
element
.
id
;
focused
=
element
.
id
;
}
}
// expansion
// expansion
let
expanded
=
new
Array
<
string
>
();
let
expanded
=
new
Array
<
string
>
();
let
nav
=
tree
.
getNavigator
();
let
nav
=
tree
.
navigate
();
while
(
nav
.
next
())
{
while
(
nav
.
next
())
{
let
element
=
nav
.
current
();
let
element
=
nav
.
current
();
if
(
element
instanceof
TreeElement
)
{
if
(
element
instanceof
TreeElement
)
{
...
@@ -280,8 +282,10 @@ export class OutlineTreeState {
...
@@ -280,8 +282,10 @@ export class OutlineTreeState {
return
{
selected
,
focused
,
expanded
};
return
{
selected
,
focused
,
expanded
};
}
}
static
async
restore
(
tree
:
ITree
,
state
:
OutlineTreeState
,
eventPayload
:
any
):
Promise
<
void
>
{
static
async
restore
(
tree
:
AbstractTree
<
TreeElement
,
any
,
any
>
,
state
:
OutlineTreeState
,
eventPayload
:
any
):
Promise
<
void
>
{
let
model
=
<
OutlineModel
>
tree
.
getInput
();
// let model = <OutlineModel>tree.getInput();
let
root
=
tree
.
getNode
();
let
model
=
OutlineModel
.
get
(
root
.
children
[
0
].
element
);
if
(
!
state
||
!
(
model
instanceof
OutlineModel
))
{
if
(
!
state
||
!
(
model
instanceof
OutlineModel
))
{
return
Promise
.
resolve
(
undefined
);
return
Promise
.
resolve
(
undefined
);
}
}
...
@@ -294,14 +298,15 @@ export class OutlineTreeState {
...
@@ -294,14 +298,15 @@ export class OutlineTreeState {
items
.
push
(
item
);
items
.
push
(
item
);
}
}
}
}
await
tree
.
collapseAll
(
undefined
);
await
tree
.
expandAll
(
items
);
tree
.
collapseAll
();
await
tree
.
expandAll
(
items
);
// https://github.com/Microsoft/vscode/issues/64887
// selection & focus
// selection & focus
let
selected
=
model
.
getItemById
(
state
.
selected
);
let
selected
=
model
.
getItemById
(
state
.
selected
);
let
focused
=
model
.
getItemById
(
state
.
focused
);
let
focused
=
model
.
getItemById
(
state
.
focused
);
tree
.
setSelection
([
selected
],
eventPayload
);
tree
.
setSelection
([
selected
],
eventPayload
);
tree
.
setFocus
(
focused
,
eventPayload
);
tree
.
setFocus
(
[
focused
]
,
eventPayload
);
}
}
}
}
...
...
src/vs/workbench/parts/outline/electron-browser/outlinePanel.ts
浏览文件 @
48667fcc
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
import
{
posix
}
from
'
path
'
;
import
{
posix
}
from
'
path
'
;
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
StandardMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
StandardMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
Separator
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
Separator
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
InputBox
}
from
'
vs/base/browser/ui/inputbox/inputBox
'
;
import
{
InputBox
}
from
'
vs/base/browser/ui/inputbox/inputBox
'
;
...
@@ -14,14 +13,13 @@ import { Action, IAction, RadioGroup } from 'vs/base/common/actions';
...
@@ -14,14 +13,13 @@ import { Action, IAction, RadioGroup } from 'vs/base/common/actions';
import
{
firstIndex
}
from
'
vs/base/common/arrays
'
;
import
{
firstIndex
}
from
'
vs/base/common/arrays
'
;
import
{
createCancelablePromise
,
TimeoutTimer
}
from
'
vs/base/common/async
'
;
import
{
createCancelablePromise
,
TimeoutTimer
}
from
'
vs/base/common/async
'
;
import
{
isPromiseCanceledError
,
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
isPromiseCanceledError
,
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
defaultGenerator
}
from
'
vs/base/common/idGenerator
'
;
import
{
defaultGenerator
}
from
'
vs/base/common/idGenerator
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
dispose
,
IDisposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
dispose
,
IDisposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
LRUCache
}
from
'
vs/base/common/map
'
;
import
{
LRUCache
}
from
'
vs/base/common/map
'
;
import
{
escape
}
from
'
vs/base/common/strings
'
;
import
{
escape
}
from
'
vs/base/common/strings
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
ITree
}
from
'
vs/base/parts/tree/browser/tree
'
;
import
'
vs/css!./outlinePanel
'
;
import
'
vs/css!./outlinePanel
'
;
import
{
ICodeEditor
,
isCodeEditor
,
isDiffEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
ICodeEditor
,
isCodeEditor
,
isDiffEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
ServicesAccessor
}
from
'
vs/editor/browser/editorExtensions
'
;
import
{
ServicesAccessor
}
from
'
vs/editor/browser/editorExtensions
'
;
...
@@ -49,7 +47,7 @@ import { ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet';
...
@@ -49,7 +47,7 @@ import { ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet';
import
{
IViewletViewOptions
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
IViewletViewOptions
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
IViewsService
}
from
'
vs/workbench/common/views
'
;
import
{
IViewsService
}
from
'
vs/workbench/common/views
'
;
import
{
ACTIVE_GROUP
,
IEditorService
,
SIDE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
ACTIVE_GROUP
,
IEditorService
,
SIDE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
Outline
Controller
,
Outline
ItemComparator
,
OutlineItemCompareType
,
OutlineTreeState
}
from
'
../../../../editor/contrib/documentSymbols/outlineTree
'
;
import
{
OutlineItemComparator
,
OutlineItemCompareType
,
OutlineTreeState
}
from
'
../../../../editor/contrib/documentSymbols/outlineTree
'
;
import
{
OutlineConfigKeys
,
OutlineViewFiltered
,
OutlineViewFocused
,
OutlineViewId
}
from
'
./outline
'
;
import
{
OutlineConfigKeys
,
OutlineViewFiltered
,
OutlineViewFocused
,
OutlineViewId
}
from
'
./outline
'
;
import
{
NOutlineItem
,
NOutlineVirtualDelegate
,
NOutlineGroupRenderer
,
NOutlineElementRenderer
,
NOutlineFilter
,
NOutlineIdentityProvider
,
createModelIterator
as
createOutlineModelIterator
}
from
'
vs/editor/contrib/documentSymbols/outlineTree2
'
;
import
{
NOutlineItem
,
NOutlineVirtualDelegate
,
NOutlineGroupRenderer
,
NOutlineElementRenderer
,
NOutlineFilter
,
NOutlineIdentityProvider
,
createModelIterator
as
createOutlineModelIterator
}
from
'
vs/editor/contrib/documentSymbols/outlineTree2
'
;
...
@@ -238,6 +236,7 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -238,6 +236,7 @@ export class OutlinePanel extends ViewletPanel {
// private _tree: WorkbenchTree;
// private _tree: WorkbenchTree;
private
_tree
:
WorkbenchObjectTree
<
NOutlineItem
>
;
private
_tree
:
WorkbenchObjectTree
<
NOutlineItem
>
;
// private _treeDataSource: OutlineDataSource;
// private _treeDataSource: OutlineDataSource;
private
_treeRefresh
:
Emitter
<
any
>
;
private
_treeGroupRenderer
:
NOutlineGroupRenderer
;
private
_treeGroupRenderer
:
NOutlineGroupRenderer
;
private
_treeElementRenderer
:
NOutlineElementRenderer
;
private
_treeElementRenderer
:
NOutlineElementRenderer
;
private
_treeFilter
:
NOutlineFilter
;
private
_treeFilter
:
NOutlineFilter
;
...
@@ -329,35 +328,10 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -329,35 +328,10 @@ export class OutlinePanel extends ViewletPanel {
}
}
}));
}));
const
$this
=
this
;
const
controller
=
new
class
extends
OutlineController
{
constructor
()
{
super
({},
$this
.
configurationService
);
}
onKeyDown
(
tree
:
ITree
,
event
:
IKeyboardEvent
)
{
let
handled
=
super
.
onKeyDown
(
tree
,
event
);
if
(
handled
)
{
return
true
;
}
if
(
this
.
upKeyBindingDispatcher
.
has
(
event
.
keyCode
))
{
return
false
;
}
// crazy -> during keydown focus moves to the input box
// and because of that the keyup event is handled by the
// input field
if
(
$this
.
_keybindingService
.
mightProducePrintableCharacter
(
event
))
{
$this
.
_input
.
focus
();
return
true
;
}
return
false
;
}
};
// TODO@joh: pass along to the renderers an event which should trigger a re-render of elements
// TODO@joh: pass along to the renderers an event which should trigger a re-render of elements
this
.
_treeGroupRenderer
=
this
.
_instantiationService
.
createInstance
(
NOutlineGroupRenderer
,
Event
.
None
);
this
.
_treeRefresh
=
new
Emitter
();
this
.
_treeElementRenderer
=
this
.
_instantiationService
.
createInstance
(
NOutlineElementRenderer
,
Event
.
None
);
this
.
_treeGroupRenderer
=
this
.
_instantiationService
.
createInstance
(
NOutlineGroupRenderer
,
this
.
_treeRefresh
.
event
);
this
.
_treeElementRenderer
=
this
.
_instantiationService
.
createInstance
(
NOutlineElementRenderer
,
this
.
_treeRefresh
.
event
);
this
.
_treeFilter
=
this
.
_instantiationService
.
createInstance
(
NOutlineFilter
);
this
.
_treeFilter
=
this
.
_instantiationService
.
createInstance
(
NOutlineFilter
);
this
.
_tree
=
<
any
>
this
.
_instantiationService
.
createInstance
(
WorkbenchObjectTree
,
this
.
_tree
=
<
any
>
this
.
_instantiationService
.
createInstance
(
WorkbenchObjectTree
,
...
@@ -376,6 +350,38 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -376,6 +350,38 @@ export class OutlinePanel extends ViewletPanel {
this
.
_disposables
.
push
(
this
.
_tree
,
this
.
_input
,
this
.
_treeGroupRenderer
,
this
.
_treeElementRenderer
);
this
.
_disposables
.
push
(
this
.
_tree
,
this
.
_input
,
this
.
_treeGroupRenderer
,
this
.
_treeElementRenderer
);
this
.
_disposables
.
push
(
this
.
_outlineViewState
.
onDidChange
(
this
.
_onDidChangeUserState
,
this
));
this
.
_disposables
.
push
(
this
.
_outlineViewState
.
onDidChange
(
this
.
_onDidChangeUserState
,
this
));
//
// const $this = this;
// const controller = new class extends OutlineController {
// constructor() {
// super({}, $this.configurationService);
// }
// onKeyDown(tree: ITree, event: IKeyboardEvent) {
// let handled = super.onKeyDown(tree, event);
// if (handled) {
// return true;
// }
// if (this.upKeyBindingDispatcher.has(event.keyCode)) {
// return false;
// }
// // crazy -> during keydown focus moves to the input box
// // and because of that the keyup event is handled by the
// // input field
// if ($this._keybindingService.mightProducePrintableCharacter(event)) {
// $this._input.focus();
// return true;
// }
// return false;
// }
// };
this
.
_tree
.
onKeyDown
(
event
=>
{
if
(
this
.
_keybindingService
.
mightProducePrintableCharacter
(
event
))
{
// todo@joh old would check if the tree handled the event...
this
.
_input
.
focus
();
event
.
preventDefault
();
}
});
// feature: toggle icons
// feature: toggle icons
dom
.
toggleClass
(
this
.
_domNode
,
'
no-icons
'
,
!
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
icons
));
dom
.
toggleClass
(
this
.
_domNode
,
'
no-icons
'
,
!
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
icons
));
this
.
disposables
.
push
(
this
.
_configurationService
.
onDidChangeConfiguration
(
e
=>
{
this
.
disposables
.
push
(
this
.
_configurationService
.
onDidChangeConfiguration
(
e
=>
{
...
@@ -450,7 +456,8 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -450,7 +456,8 @@ export class OutlinePanel extends ViewletPanel {
}
}
if
(
e
.
sortBy
)
{
if
(
e
.
sortBy
)
{
this
.
_treeComparator
.
type
=
this
.
_outlineViewState
.
sortBy
;
this
.
_treeComparator
.
type
=
this
.
_outlineViewState
.
sortBy
;
this
.
_tree
.
refresh
(
undefined
,
true
);
// this._tree.refresh(undefined, true);
this
.
_treeRefresh
.
fire
();
}
}
if
(
e
.
filterOnType
)
{
if
(
e
.
filterOnType
)
{
this
.
_applyTypeToFilter
();
this
.
_applyTypeToFilter
();
...
@@ -459,7 +466,7 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -459,7 +466,7 @@ export class OutlinePanel extends ViewletPanel {
private
_showMessage
(
message
:
string
)
{
private
_showMessage
(
message
:
string
)
{
dom
.
addClass
(
this
.
_domNode
,
'
message
'
);
dom
.
addClass
(
this
.
_domNode
,
'
message
'
);
this
.
_tree
.
set
Input
(
undefined
);
this
.
_tree
.
set
Children
(
null
);
this
.
_tree
.
setChildren
(
null
);
this
.
_tree
.
setChildren
(
null
);
this
.
_progressBar
.
stop
().
hide
();
this
.
_progressBar
.
stop
().
hide
();
this
.
_message
.
innerText
=
escape
(
message
);
this
.
_message
.
innerText
=
escape
(
message
);
...
@@ -492,6 +499,7 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -492,6 +499,7 @@ export class OutlinePanel extends ViewletPanel {
let
textModel
=
editor
.
getModel
();
let
textModel
=
editor
.
getModel
();
let
loadingMessage
:
IDisposable
;
let
loadingMessage
:
IDisposable
;
let
oldModel
=
<
OutlineModel
>
this
.
_tree
.
getInput
();
let
oldModel
=
<
OutlineModel
>
this
.
_tree
.
getInput
();
if
(
!
oldModel
)
{
if
(
!
oldModel
)
{
loadingMessage
=
new
TimeoutTimer
(
loadingMessage
=
new
TimeoutTimer
(
...
@@ -587,9 +595,10 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -587,9 +595,10 @@ export class OutlinePanel extends ViewletPanel {
beforePatternState
=
OutlineTreeState
.
capture
(
this
.
_tree
);
beforePatternState
=
OutlineTreeState
.
capture
(
this
.
_tree
);
}
}
let
item
=
model
.
updateMatches
(
pattern
);
let
item
=
model
.
updateMatches
(
pattern
);
await
this
.
_tree
.
refresh
(
undefined
,
true
);
// await this._tree.refresh(undefined, true);
this
.
_tree
.
refilter
();
if
(
item
)
{
if
(
item
)
{
await
this
.
_tree
.
expandAll
(
undefined
/*all*/
);
await
this
.
_tree
.
expandAll
(
undefined
/*all*/
);
// https://github.com/Microsoft/vscode/issues/64887
this
.
_tree
.
reveal
(
item
);
this
.
_tree
.
reveal
(
item
);
this
.
_tree
.
setFocus
([
item
],
this
);
this
.
_tree
.
setFocus
([
item
],
this
);
this
.
_tree
.
setSelection
([
item
],
this
);
this
.
_tree
.
setSelection
([
item
],
this
);
...
@@ -610,7 +619,7 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -610,7 +619,7 @@ export class OutlinePanel extends ViewletPanel {
// feature: reveal outline selection in editor
// feature: reveal outline selection in editor
// on change -> reveal/select defining range
// on change -> reveal/select defining range
this
.
_editorDisposables
.
push
(
this
.
_tree
.
onDidChangeSelection
(
e
=>
{
this
.
_editorDisposables
.
push
(
this
.
_tree
.
onDidChangeSelection
(
e
=>
{
if
(
e
.
payload
===
this
||
e
.
payload
&&
e
.
payload
.
didClickOnTwistie
)
{
if
(
e
.
payload
===
this
||
e
.
payload
&&
e
.
payload
.
didClickOnTwistie
)
{
// https://github.com/Microsoft/vscode/issues/64743
return
;
return
;
}
}
let
[
first
]
=
e
.
selection
;
let
[
first
]
=
e
.
selection
;
...
@@ -656,7 +665,8 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -656,7 +665,8 @@ export class OutlinePanel extends ViewletPanel {
const
marker
=
this
.
_markerService
.
read
({
resource
:
textModel
.
uri
,
severities
:
MarkerSeverity
.
Error
|
MarkerSeverity
.
Warning
});
const
marker
=
this
.
_markerService
.
read
({
resource
:
textModel
.
uri
,
severities
:
MarkerSeverity
.
Error
|
MarkerSeverity
.
Warning
});
if
(
marker
.
length
>
0
||
!
ignoreEmpty
)
{
if
(
marker
.
length
>
0
||
!
ignoreEmpty
)
{
model
.
updateMarker
(
marker
);
model
.
updateMarker
(
marker
);
this
.
_tree
.
refresh
(
undefined
,
true
);
// this._tree.refresh(undefined, true);
this
.
_treeRefresh
.
fire
();
}
}
};
};
updateMarker
([
textModel
.
uri
],
true
);
updateMarker
([
textModel
.
uri
],
true
);
...
@@ -666,7 +676,8 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -666,7 +676,8 @@ export class OutlinePanel extends ViewletPanel {
if
(
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsBadges
)
||
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsColors
))
{
if
(
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsBadges
)
||
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsColors
))
{
this
.
_treeElementRenderer
.
renderProblemColors
=
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsColors
);
this
.
_treeElementRenderer
.
renderProblemColors
=
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsColors
);
this
.
_treeElementRenderer
.
renderProblemBadges
=
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsBadges
);
this
.
_treeElementRenderer
.
renderProblemBadges
=
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsBadges
);
this
.
_tree
.
refresh
(
undefined
,
true
);
// this._tree.refresh(undefined, true);
this
.
_treeRefresh
.
fire
();
return
;
return
;
}
}
if
(
!
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsEnabled
))
{
if
(
!
e
.
affectsConfiguration
(
OutlineConfigKeys
.
problemsEnabled
))
{
...
@@ -674,7 +685,8 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -674,7 +685,8 @@ export class OutlinePanel extends ViewletPanel {
}
}
if
(
!
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsEnabled
))
{
if
(
!
this
.
_configurationService
.
getValue
(
OutlineConfigKeys
.
problemsEnabled
))
{
model
.
updateMarker
([]);
model
.
updateMarker
([]);
this
.
_tree
.
refresh
(
undefined
,
true
);
// this._tree.refresh(undefined, true);
this
.
_treeRefresh
.
fire
();
}
else
{
}
else
{
updateMarker
([
textModel
.
uri
],
true
);
updateMarker
([
textModel
.
uri
],
true
);
}
}
...
@@ -711,7 +723,7 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -711,7 +723,7 @@ export class OutlinePanel extends ViewletPanel {
}
}
private
async
_revealEditorSelection
(
model
:
OutlineModel
,
selection
:
Selection
):
Promise
<
void
>
{
private
async
_revealEditorSelection
(
model
:
OutlineModel
,
selection
:
Selection
):
Promise
<
void
>
{
if
(
!
this
.
_outlineViewState
.
followCursor
||
!
this
.
_tree
.
get
Input
()
||
!
selection
)
{
if
(
!
this
.
_outlineViewState
.
followCursor
||
!
this
.
_tree
.
get
Node
()
||
!
selection
)
{
return
;
return
;
}
}
let
[
first
]
=
this
.
_tree
.
getSelection
();
let
[
first
]
=
this
.
_tree
.
getSelection
();
...
@@ -728,19 +740,20 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -728,19 +740,20 @@ export class OutlinePanel extends ViewletPanel {
// only when outside view port
// only when outside view port
await
this
.
_tree
.
reveal
(
item
,
.
5
);
await
this
.
_tree
.
reveal
(
item
,
.
5
);
}
}
this
.
_tree
.
setFocus
(
item
,
this
);
this
.
_tree
.
setFocus
(
[
item
],
this
);
// todo@joao focus is weird
this
.
_tree
.
setSelection
([
item
],
this
);
this
.
_tree
.
setSelection
([
item
],
this
);
// https://github.com/Microsoft/vscode/issues/64743
}
}
focusHighlightedElement
(
up
:
boolean
):
void
{
focusHighlightedElement
(
up
:
boolean
):
void
{
if
(
!
this
.
_tree
.
getInput
())
{
if
(
!
this
.
_tree
.
getNode
())
{
return
;
return
;
}
}
if
(
!
this
.
_tree
.
isDOMFocused
())
{
if
(
!
this
.
_tree
.
isDOMFocused
())
{
this
.
_tree
.
domFocus
();
this
.
_tree
.
domFocus
();
return
;
return
;
}
}
let
navi
=
this
.
_tree
.
getNavigator
(
this
.
_tree
.
getFocus
(),
false
);
let
navi
=
this
.
_tree
.
getNavigator
(
this
.
_tree
.
getFocus
(),
false
);
// https://github.com/Microsoft/vscode/issues/64793
let
candidate
:
any
;
let
candidate
:
any
;
while
(
candidate
=
up
?
navi
.
previous
()
:
navi
.
next
())
{
while
(
candidate
=
up
?
navi
.
previous
()
:
navi
.
next
())
{
if
(
candidate
instanceof
OutlineElement
&&
candidate
.
score
&&
candidate
.
score
[
1
].
length
>
0
)
{
if
(
candidate
instanceof
OutlineElement
&&
candidate
.
score
&&
candidate
.
score
[
1
].
length
>
0
)
{
...
@@ -749,12 +762,6 @@ export class OutlinePanel extends ViewletPanel {
...
@@ -749,12 +762,6 @@ export class OutlinePanel extends ViewletPanel {
break
;
break
;
}
}
}
}
let
focused
=
this
.
_tree
.
getFocus
()[
0
];
if
(
!
focused
)
{
return
;
}
let
root
=
this
.
_tree
.
getNode
(
focused
);
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录