Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
7f15980a
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,发现更多精彩内容 >>
提交
7f15980a
编写于
8月 12, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debt - suggest widget shouldn't know about that controller model but the completion model
上级
027483f1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
32 deletion
+40
-32
src/vs/editor/contrib/suggest/browser/suggest.ts
src/vs/editor/contrib/suggest/browser/suggest.ts
+20
-4
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
+20
-28
未找到文件。
src/vs/editor/contrib/suggest/browser/suggest.ts
浏览文件 @
7f15980a
...
...
@@ -17,6 +17,7 @@ import { EditorBrowserRegistry } from 'vs/editor/browser/editorBrowserExtensions
import
{
getSnippetController
}
from
'
vs/editor/contrib/snippet/common/snippet
'
;
import
{
Context
as
SuggestContext
}
from
'
vs/editor/contrib/suggest/common/suggest
'
;
import
{
SuggestModel
}
from
'
../common/suggestModel
'
;
import
{
CompletionItem
}
from
'
../common/completionModel
'
;
import
{
SuggestWidget
}
from
'
./suggestWidget
'
;
export
class
SuggestController
implements
IEditorContribution
{
...
...
@@ -29,18 +30,23 @@ export class SuggestController implements IEditorContribution {
private
model
:
SuggestModel
;
private
widget
:
SuggestWidget
;
private
triggerCharacterListeners
:
IDisposable
[];
private
toDispose
:
IDisposable
[];
private
toDispose
:
IDisposable
[]
=
[]
;
constructor
(
private
editor
:
ICodeEditor
,
@
IInstantiationService
instantiationService
:
IInstantiationService
)
{
this
.
model
=
new
SuggestModel
(
this
.
editor
);
this
.
widget
=
instantiationService
.
createInstance
(
SuggestWidget
,
this
.
editor
,
this
.
model
);
this
.
widget
=
instantiationService
.
createInstance
(
SuggestWidget
,
this
.
editor
);
this
.
toDispose
.
push
(
this
.
model
.
onDidTrigger
(
e
=>
this
.
widget
.
showTriggered
(
e
)));
this
.
toDispose
.
push
(
this
.
model
.
onDidSuggest
(
e
=>
this
.
widget
.
showSuggestions
(
e
)));
this
.
toDispose
.
push
(
this
.
model
.
onDidCancel
(
e
=>
this
.
widget
.
showDidCancel
(
e
)));
this
.
toDispose
.
push
(
this
.
widget
.
onDidSelect
(
this
.
onDidSelectItem
,
this
));
this
.
triggerCharacterListeners
=
[];
this
.
toDispose
=
[];
this
.
toDispose
.
push
(
editor
.
onDidChangeConfiguration
(()
=>
this
.
update
()));
this
.
toDispose
.
push
(
editor
.
onDidChangeModel
(()
=>
this
.
update
()));
this
.
toDispose
.
push
(
editor
.
onDidChangeModelMode
(()
=>
this
.
update
()));
...
...
@@ -69,6 +75,15 @@ export class SuggestController implements IEditorContribution {
}
}
private
onDidSelectItem
(
item
:
CompletionItem
):
void
{
if
(
!
item
)
{
this
.
model
.
cancel
();
return
;
}
const
{
overwriteBefore
,
overwriteAfter
}
=
item
.
suggestion
;
this
.
model
.
accept
(
item
.
suggestion
,
overwriteBefore
,
overwriteAfter
);
}
private
update
():
void
{
this
.
triggerCharacterListeners
=
dispose
(
this
.
triggerCharacterListeners
);
...
...
@@ -126,7 +141,8 @@ export class SuggestController implements IEditorContribution {
acceptSelectedSuggestion
():
void
{
if
(
this
.
widget
)
{
this
.
widget
.
acceptSelectedSuggestion
();
const
item
=
this
.
widget
.
getFocusedItem
();
this
.
onDidSelectItem
(
item
);
}
}
...
...
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
浏览文件 @
7f15980a
...
...
@@ -8,6 +8,7 @@
import
'
vs/css!./suggest
'
;
import
*
as
nls
from
'
vs/nls
'
;
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
isPromiseCanceledError
,
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
IDisposable
,
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
...
...
@@ -22,7 +23,7 @@ import { IConfigurationChangedEvent } from 'vs/editor/common/editorCommon';
import
{
ContentWidgetPositionPreference
,
ICodeEditor
,
IContentWidget
,
IContentWidgetPosition
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
Context
as
SuggestContext
}
from
'
../common/suggest
'
;
import
{
CompletionItem
,
CompletionModel
}
from
'
../common/completionModel
'
;
import
{
ICancelEvent
,
ISuggestEvent
,
ITriggerEvent
,
SuggestModel
}
from
'
../common/suggestModel
'
;
import
{
ICancelEvent
,
ISuggestEvent
,
ITriggerEvent
}
from
'
../common/suggestModel
'
;
import
{
alert
}
from
'
vs/base/browser/ui/aria/aria
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
...
...
@@ -322,13 +323,14 @@ export class SuggestWidget implements IContentWidget, IDisposable {
private
suggestWidgetMultipleSuggestions
:
IKeybindingContextKey
<
boolean
>
;
private
suggestionSupportsAutoAccept
:
IKeybindingContextKey
<
boolean
>
;
private
onDidSelectEmitter
=
new
Emitter
<
CompletionItem
>
();
private
editorBlurTimeout
:
TPromise
<
void
>
;
private
showTimeout
:
TPromise
<
void
>
;
private
toDispose
:
IDisposable
[];
constructor
(
private
editor
:
ICodeEditor
,
private
model
:
SuggestModel
,
@
ITelemetryService
private
telemetryService
:
ITelemetryService
,
@
IKeybindingService
keybindingService
:
IKeybindingService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
...
...
@@ -360,10 +362,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
editor
.
onDidBlurEditorText
(()
=>
this
.
onEditorBlur
()),
this
.
list
.
onSelectionChange
(
e
=>
this
.
onListSelection
(
e
)),
this
.
list
.
onFocusChange
(
e
=>
this
.
onListFocus
(
e
)),
this
.
editor
.
onDidChangeCursorSelection
(()
=>
this
.
onCursorSelectionChanged
()),
this
.
model
.
onDidTrigger
(
e
=>
this
.
onDidTrigger
(
e
)),
this
.
model
.
onDidSuggest
(
e
=>
this
.
onDidSuggest
(
e
)),
this
.
model
.
onDidCancel
(
e
=>
this
.
onDidCancel
(
e
))
this
.
editor
.
onDidChangeCursorSelection
(()
=>
this
.
onCursorSelectionChanged
())
];
this
.
suggestWidgetVisible
=
SuggestContext
.
Visible
.
bindTo
(
keybindingService
);
...
...
@@ -410,8 +409,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
const
item
=
e
.
elements
[
0
];
const
{
overwriteBefore
,
overwriteAfter
}
=
item
.
suggestion
;
this
.
model
.
accept
(
item
.
suggestion
,
overwriteBefore
,
overwriteAfter
);
this
.
onDidSelectEmitter
.
fire
(
item
);
alert
(
nls
.
localize
(
'
suggestionAriaAccepted
'
,
"
{0}, accepted
"
,
item
.
suggestion
.
label
));
...
...
@@ -543,7 +541,11 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
}
private
onDidTrigger
(
e
:
ITriggerEvent
)
{
get
onDidSelect
():
Event
<
CompletionItem
>
{
return
this
.
onDidSelectEmitter
.
event
;
}
showTriggered
(
e
:
ITriggerEvent
)
{
if
(
this
.
state
!==
State
.
Hidden
)
{
return
;
}
...
...
@@ -558,7 +560,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
}
private
onDidSuggest
(
e
:
ISuggestEvent
):
void
{
showSuggestions
(
e
:
ISuggestEvent
):
void
{
if
(
this
.
loadingTimeout
)
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
=
null
;
...
...
@@ -622,7 +624,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
}
private
on
DidCancel
(
e
:
ICancelEvent
)
{
show
DidCancel
(
e
:
ICancelEvent
)
{
if
(
this
.
loadingTimeout
)
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
=
null
;
...
...
@@ -693,22 +695,12 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
}
acceptSelectedSuggestion
():
boolean
{
switch
(
this
.
state
)
{
case
State
.
Hidden
:
return
false
;
case
State
.
Empty
:
return
false
;
case
State
.
Loading
:
return
!
this
.
isAuto
;
default
:
const
focus
=
this
.
list
.
getFocusedElements
()[
0
];
if
(
focus
)
{
this
.
list
.
setSelection
(
this
.
completionModel
.
items
.
indexOf
(
focus
));
}
else
{
this
.
model
.
cancel
();
}
return
true
;
getFocusedItem
():
CompletionItem
{
if
(
this
.
state
!==
State
.
Hidden
&&
this
.
state
!==
State
.
Empty
&&
this
.
state
!==
State
.
Loading
)
{
return
this
.
list
.
getFocusedElements
()[
0
];
}
}
...
...
@@ -751,7 +743,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
if
(
this
.
state
===
State
.
Details
)
{
this
.
toggleDetails
();
}
else
{
this
.
model
.
cancel
(
);
this
.
showDidCancel
({
retrigger
:
false
}
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录