Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6c5b3da8
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,发现更多精彩内容 >>
提交
6c5b3da8
编写于
6月 01, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
suggest: more cleanup
上级
30764542
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
54 deletion
+48
-54
src/vs/editor/contrib/suggest/browser/suggest.ts
src/vs/editor/contrib/suggest/browser/suggest.ts
+23
-27
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
+25
-27
未找到文件。
src/vs/editor/contrib/suggest/browser/suggest.ts
浏览文件 @
6c5b3da8
...
...
@@ -5,24 +5,24 @@
'
use strict
'
;
import
*
as
nls
from
'
vs/nls
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
KeyCode
,
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IKeybindingContextKey
,
IKeybindingService
,
KbExpr
}
from
'
vs/platform/keybinding/common/keybindingService
'
;
import
{
EditorAction
}
from
'
vs/editor/common/editorAction
'
;
import
{
ICommonCodeEditor
,
IEditorActionDescriptorData
,
IEditorContribution
,
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
}
from
'
vs/editor/common/editorCommon
'
;
import
{
CommonEditorRegistry
,
ContextKey
,
EditorActionDescriptor
}
from
'
vs/editor/common/editorCommonExtensions
'
;
import
{
ISuggestSupport
,
SuggestRegistry
}
from
'
vs/editor/common/modes
'
;
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
EditorBrowserRegistry
}
from
'
vs/editor/browser/editorBrowserExtensions
'
;
import
{
getSnippetController
}
from
'
vs/editor/contrib/snippet/common/snippet
'
;
import
{
CONTEXT_SUGGEST_WIDGET_VISIBLE
}
from
'
vs/editor/contrib/suggest/common/suggest
'
;
import
{
KeybindingsRegistry
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
withCodeEditorFromCommandHandler
}
from
'
vs/editor/common/config/config
'
;
import
{
SuggestModel
}
from
'
./suggestModel
'
;
import
{
SuggestWidget
}
from
'
./suggestWidget
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
KeyCode
,
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
KbExpr
}
from
'
vs/platform/keybinding/common/keybindingService
'
;
import
{
EditorAction
}
from
'
vs/editor/common/editorAction
'
;
import
{
ICommonCodeEditor
,
IEditorActionDescriptorData
,
IEditorContribution
,
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
}
from
'
vs/editor/common/editorCommon
'
;
import
{
CommonEditorRegistry
,
ContextKey
,
EditorActionDescriptor
}
from
'
vs/editor/common/editorCommonExtensions
'
;
import
{
ISuggestSupport
,
SuggestRegistry
}
from
'
vs/editor/common/modes
'
;
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
EditorBrowserRegistry
}
from
'
vs/editor/browser/editorBrowserExtensions
'
;
import
{
getSnippetController
}
from
'
vs/editor/contrib/snippet/common/snippet
'
;
import
{
CONTEXT_SUGGEST_WIDGET_VISIBLE
}
from
'
vs/editor/contrib/suggest/common/suggest
'
;
import
{
KeybindingsRegistry
}
from
'
vs/platform/keybinding/common/keybindingsRegistry
'
;
import
{
withCodeEditorFromCommandHandler
}
from
'
vs/editor/common/config/config
'
;
import
{
SuggestModel
}
from
'
./suggestModel
'
;
import
{
SuggestWidget
}
from
'
./suggestWidget
'
;
export
class
SuggestController
implements
IEditorContribution
{
static
ID
:
string
=
'
editor.contrib.suggestController
'
;
...
...
@@ -34,22 +34,18 @@ export class SuggestController implements IEditorContribution {
private
model
:
SuggestModel
;
private
widget
:
SuggestWidget
;
private
triggerCharacterListeners
:
IDisposable
[];
private
suggestWidgetVisible
:
IKeybindingContextKey
<
boolean
>
;
private
toDispose
:
IDisposable
[];
constructor
(
private
editor
:
ICodeEditor
,
@
IKeybindingService
keybindingService
:
IKeybindingService
,
@
IInstantiationService
instantiationService
:
IInstantiationService
)
{
this
.
suggestWidgetVisible
=
keybindingService
.
createKey
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
,
false
);
this
.
model
=
new
SuggestModel
(
this
.
editor
);
this
.
widget
=
instantiationService
.
createInstance
(
SuggestWidget
,
this
.
editor
,
this
.
model
);
this
.
triggerCharacterListeners
=
[];
this
.
toDispose
=
[];
this
.
toDispose
.
push
(
this
.
widget
.
onDidVisibilityChange
(
visible
=>
visible
?
this
.
suggestWidgetVisible
.
set
(
true
)
:
this
.
suggestWidgetVisible
.
reset
()));
this
.
toDispose
.
push
(
editor
.
onDidChangeConfiguration
(()
=>
this
.
update
()));
this
.
toDispose
.
push
(
editor
.
onDidChangeModel
(()
=>
this
.
update
()));
this
.
toDispose
.
push
(
editor
.
onDidChangeModelMode
(()
=>
this
.
update
()));
...
...
@@ -219,7 +215,7 @@ CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(
const
weight
=
CommonEditorRegistry
.
commandWeight
(
90
);
function
handler
(
id
:
string
,
fn
:
(
controller
:
SuggestController
)
=>
void
)
{
function
handler
(
id
:
string
,
fn
:
(
controller
:
SuggestController
)
=>
void
)
{
return
accessor
=>
withCodeEditorFromCommandHandler
(
id
,
accessor
,
editor
=>
{
fn
(
SuggestController
.
getController
(
editor
));
});
...
...
@@ -256,7 +252,7 @@ KeybindingsRegistry.registerCommandDesc({
weight
,
when
:
KbExpr
.
and
(
KbExpr
.
has
(
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
),
KbExpr
.
has
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
)),
primary
:
KeyCode
.
DownArrow
,
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
DownArrow
]
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
DownArrow
]
});
KeybindingsRegistry
.
registerCommandDesc
({
...
...
@@ -265,7 +261,7 @@ KeybindingsRegistry.registerCommandDesc({
weight
,
when
:
KbExpr
.
and
(
KbExpr
.
has
(
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
),
KbExpr
.
has
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
)),
primary
:
KeyCode
.
PageDown
,
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
PageDown
]
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
PageDown
]
});
KeybindingsRegistry
.
registerCommandDesc
({
...
...
@@ -274,7 +270,7 @@ KeybindingsRegistry.registerCommandDesc({
weight
,
when
:
KbExpr
.
and
(
KbExpr
.
has
(
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
),
KbExpr
.
has
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
)),
primary
:
KeyCode
.
UpArrow
,
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
UpArrow
]
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
UpArrow
]
});
KeybindingsRegistry
.
registerCommandDesc
({
...
...
@@ -283,7 +279,7 @@ KeybindingsRegistry.registerCommandDesc({
weight
,
when
:
KbExpr
.
and
(
KbExpr
.
has
(
KEYBINDING_CONTEXT_EDITOR_TEXT_FOCUS
),
KbExpr
.
has
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
)),
primary
:
KeyCode
.
PageUp
,
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
PageUp
]
secondary
:
[
KeyMod
.
Alt
|
KeyCode
.
PageUp
]
});
KeybindingsRegistry
.
registerCommandDesc
({
...
...
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
浏览文件 @
6c5b3da8
...
...
@@ -8,25 +8,24 @@
import
'
vs/css!./suggest
'
;
import
*
as
nls
from
'
vs/nls
'
;
import
*
as
strings
from
'
vs/base/common/strings
'
;
import
{
isPromiseCanceledError
,
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IDisposable
,
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
*
as
timer
from
'
vs/base/common/timer
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
addClass
,
append
,
emmet
as
$
,
hide
,
removeClass
,
show
,
toggleClass
}
from
'
vs/base/browser/dom
'
;
import
{
HighlightedLabel
}
from
'
vs/base/browser/ui/highlightedlabel/highlightedLabel
'
;
import
{
IDelegate
,
IFocusChangeEvent
,
IRenderer
,
ISelectionChangeEvent
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
List
}
from
'
vs/base/browser/ui/list/listWidget
'
;
import
{
DomScrollableElement
}
from
'
vs/base/browser/ui/scrollbar/scrollableElement
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IKeybindingContextKey
,
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybindingService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IConfigurationChangedEvent
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ContentWidgetPositionPreference
,
ICodeEditor
,
IContentWidget
,
IContentWidgetPosition
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
CONTEXT_SUGGESTION_SUPPORTS_ACCEPT_ON_KEY
}
from
'
../common/suggest
'
;
import
{
CompletionItem
,
CompletionModel
}
from
'
./completionModel
'
;
import
{
ICancelEvent
,
ISuggestEvent
,
ITriggerEvent
,
SuggestModel
}
from
'
./suggestModel
'
;
import
{
alert
}
from
'
vs/base/browser/ui/aria/aria
'
;
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
'
;
import
{
addClass
,
append
,
emmet
as
$
,
hide
,
removeClass
,
show
,
toggleClass
}
from
'
vs/base/browser/dom
'
;
import
{
HighlightedLabel
}
from
'
vs/base/browser/ui/highlightedlabel/highlightedLabel
'
;
import
{
IDelegate
,
IFocusChangeEvent
,
IRenderer
,
ISelectionChangeEvent
}
from
'
vs/base/browser/ui/list/list
'
;
import
{
List
}
from
'
vs/base/browser/ui/list/listWidget
'
;
import
{
DomScrollableElement
}
from
'
vs/base/browser/ui/scrollbar/scrollableElement
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IKeybindingContextKey
,
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybindingService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IConfigurationChangedEvent
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ContentWidgetPositionPreference
,
ICodeEditor
,
IContentWidget
,
IContentWidgetPosition
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
CONTEXT_SUGGEST_WIDGET_VISIBLE
,
CONTEXT_SUGGESTION_SUPPORTS_ACCEPT_ON_KEY
}
from
'
../common/suggest
'
;
import
{
CompletionItem
,
CompletionModel
}
from
'
./completionModel
'
;
import
{
ICancelEvent
,
ISuggestEvent
,
ITriggerEvent
,
SuggestModel
}
from
'
./suggestModel
'
;
import
{
alert
}
from
'
vs/base/browser/ui/aria/aria
'
;
interface
ISuggestionTemplateData
{
root
:
HTMLElement
;
...
...
@@ -312,7 +311,6 @@ export class SuggestWidget implements IContentWidget, IDisposable {
private
state
:
State
;
private
isAuto
:
boolean
;
private
suggestionSupportsAutoAccept
:
IKeybindingContextKey
<
boolean
>
;
private
loadingTimeout
:
number
;
private
currentSuggestionDetails
:
TPromise
<
void
>
;
private
focusedItem
:
CompletionItem
;
...
...
@@ -329,13 +327,13 @@ export class SuggestWidget implements IContentWidget, IDisposable {
private
delegate
:
IDelegate
<
CompletionItem
>
;
private
list
:
List
<
CompletionItem
>
;
private
suggestionSupportsAutoAccept
:
IKeybindingContextKey
<
boolean
>
;
private
suggestWidgetVisible
:
IKeybindingContextKey
<
boolean
>
;
private
editorBlurTimeout
:
TPromise
<
void
>
;
private
showTimeout
:
TPromise
<
void
>
;
private
toDispose
:
IDisposable
[];
private
_onDidVisibilityChange
:
Emitter
<
boolean
>
=
new
Emitter
();
get
onDidVisibilityChange
():
Event
<
boolean
>
{
return
this
.
_onDidVisibilityChange
.
event
;
}
constructor
(
private
editor
:
ICodeEditor
,
private
model
:
SuggestModel
,
...
...
@@ -345,7 +343,6 @@ export class SuggestWidget implements IContentWidget, IDisposable {
)
{
this
.
isAuto
=
false
;
this
.
focusedItem
=
null
;
this
.
suggestionSupportsAutoAccept
=
keybindingService
.
createKey
(
CONTEXT_SUGGESTION_SUPPORTS_ACCEPT_ON_KEY
,
true
);
this
.
telemetryData
=
null
;
this
.
telemetryService
=
telemetryService
;
...
...
@@ -378,6 +375,9 @@ export class SuggestWidget implements IContentWidget, IDisposable {
this
.
model
.
onDidCancel
(
e
=>
this
.
onDidCancel
(
e
))
];
this
.
suggestionSupportsAutoAccept
=
keybindingService
.
createKey
(
CONTEXT_SUGGESTION_SUPPORTS_ACCEPT_ON_KEY
,
true
);
this
.
suggestWidgetVisible
=
keybindingService
.
createKey
(
CONTEXT_SUGGEST_WIDGET_VISIBLE
,
false
);
this
.
editor
.
addContentWidget
(
this
);
this
.
setState
(
State
.
Hidden
);
...
...
@@ -759,7 +759,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
private
show
():
void
{
this
.
updateWidgetHeight
();
this
.
_onDidVisibilityChange
.
fire
(
true
);
this
.
suggestWidgetVisible
.
set
(
true
);
this
.
renderDetails
();
this
.
showTimeout
=
TPromise
.
timeout
(
100
).
then
(()
=>
{
addClass
(
this
.
element
,
'
visible
'
);
...
...
@@ -767,7 +767,7 @@ export class SuggestWidget implements IContentWidget, IDisposable {
}
private
hide
():
void
{
this
.
_onDidVisibilityChange
.
fire
(
false
);
this
.
suggestWidgetVisible
.
reset
(
);
removeClass
(
this
.
element
,
'
visible
'
);
}
...
...
@@ -850,8 +850,6 @@ export class SuggestWidget implements IContentWidget, IDisposable {
this
.
list
.
dispose
();
this
.
list
=
null
;
this
.
toDispose
=
dispose
(
this
.
toDispose
);
this
.
_onDidVisibilityChange
.
dispose
();
this
.
_onDidVisibilityChange
=
null
;
if
(
this
.
loadingTimeout
)
{
clearTimeout
(
this
.
loadingTimeout
);
this
.
loadingTimeout
=
null
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录