Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
55be1d8d
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,发现更多精彩内容 >>
提交
55be1d8d
编写于
1月 17, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Trying to use less state in lightbulb api
上级
e2fed923
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
14 deletion
+13
-14
src/vs/editor/contrib/codeAction/codeActionCommands.ts
src/vs/editor/contrib/codeAction/codeActionCommands.ts
+3
-5
src/vs/editor/contrib/codeAction/lightBulbWidget.ts
src/vs/editor/contrib/codeAction/lightBulbWidget.ts
+10
-9
未找到文件。
src/vs/editor/contrib/codeAction/codeActionCommands.ts
浏览文件 @
55be1d8d
...
...
@@ -117,7 +117,7 @@ export class QuickFixController implements IEditorContribution {
if
(
this
.
_codeActionContextMenu
.
isVisible
)
{
this
.
_codeActionContextMenu
.
show
(
newState
.
actions
,
newState
.
position
);
}
else
{
this
.
_lightBulbWidget
.
state
=
newState
;
this
.
_lightBulbWidget
.
tryShow
(
newState
)
;
}
}
}
else
{
...
...
@@ -129,10 +129,8 @@ export class QuickFixController implements IEditorContribution {
return
QuickFixController
.
ID
;
}
private
_handleLightBulbSelect
(
coords
:
{
x
:
number
,
y
:
number
}):
void
{
if
(
this
.
_lightBulbWidget
.
state
.
type
===
CodeActionsState
.
Type
.
Triggered
)
{
this
.
_codeActionContextMenu
.
show
(
this
.
_lightBulbWidget
.
state
.
actions
,
coords
);
}
private
_handleLightBulbSelect
(
e
:
{
x
:
number
,
y
:
number
,
state
:
CodeActionsState
.
Triggered
}):
void
{
this
.
_codeActionContextMenu
.
show
(
e
.
state
.
actions
,
e
);
}
public
triggerFromEditorSelection
(
filter
?:
CodeActionFilter
,
autoApply
?:
CodeActionAutoApply
):
Promise
<
CodeAction
[]
|
undefined
>
{
...
...
src/vs/editor/contrib/codeAction/lightBulbWidget.ts
浏览文件 @
55be1d8d
...
...
@@ -20,7 +20,7 @@ export class LightBulbWidget implements IDisposable, IContentWidget {
private
readonly
_domNode
:
HTMLDivElement
;
private
readonly
_editor
:
ICodeEditor
;
private
readonly
_disposables
:
IDisposable
[]
=
[];
private
readonly
_onClick
=
new
Emitter
<
{
x
:
number
,
y
:
number
}
>
();
private
readonly
_onClick
=
new
Emitter
<
{
x
:
number
;
y
:
number
;
state
:
CodeActionsState
.
Triggered
}
>
();
readonly
onClick
:
Event
<
{
x
:
number
,
y
:
number
}
>
=
this
.
_onClick
.
event
;
...
...
@@ -40,11 +40,15 @@ export class LightBulbWidget implements IDisposable, IContentWidget {
this
.
_disposables
.
push
(
this
.
_editor
.
onDidChangeModelContent
(
_
=>
{
// cancel when the line in question has been removed
const
editorModel
=
this
.
_editor
.
getModel
();
if
(
this
.
state
.
type
!==
CodeActionsState
.
Type
.
Triggered
||
!
editorModel
||
this
.
state
.
position
.
lineNumber
>=
editorModel
.
getLineCount
())
{
if
(
this
.
_state
.
type
!==
CodeActionsState
.
Type
.
Triggered
||
!
editorModel
||
this
.
_
state
.
position
.
lineNumber
>=
editorModel
.
getLineCount
())
{
this
.
_futureFixes
.
cancel
();
}
}));
this
.
_disposables
.
push
(
dom
.
addStandardDisposableListener
(
this
.
_domNode
,
'
click
'
,
e
=>
{
if
(
this
.
_state
.
type
!==
CodeActionsState
.
Type
.
Triggered
)
{
return
;
}
// Make sure that focus / cursor location is not lost when clicking widget icon
this
.
_editor
.
focus
();
// a bit of extra work to make sure the menu
...
...
@@ -53,13 +57,14 @@ export class LightBulbWidget implements IDisposable, IContentWidget {
const
{
lineHeight
}
=
this
.
_editor
.
getConfiguration
();
let
pad
=
Math
.
floor
(
lineHeight
/
3
);
if
(
this
.
_position
&&
this
.
_
state
.
type
===
CodeActionsState
.
Type
.
Triggered
&&
this
.
_
position
.
position
!==
null
&&
this
.
_position
.
position
.
lineNumber
<
this
.
_state
.
position
.
lineNumber
)
{
if
(
this
.
_position
&&
this
.
_position
.
position
!==
null
&&
this
.
_position
.
position
.
lineNumber
<
this
.
_state
.
position
.
lineNumber
)
{
pad
+=
lineHeight
;
}
this
.
_onClick
.
fire
({
x
:
e
.
posx
,
y
:
top
+
height
+
pad
y
:
top
+
height
+
pad
,
state
:
this
.
_state
});
}));
this
.
_disposables
.
push
(
dom
.
addDisposableListener
(
this
.
_domNode
,
'
mouseenter
'
,
(
e
:
MouseEvent
)
=>
{
...
...
@@ -100,7 +105,7 @@ export class LightBulbWidget implements IDisposable, IContentWidget {
return
this
.
_position
;
}
set
state
(
newState
:
CodeActionsState
.
State
)
{
tryShow
(
newState
:
CodeActionsState
.
State
)
{
if
(
newState
.
type
!==
CodeActionsState
.
Type
.
Triggered
||
this
.
_position
&&
(
!
newState
.
position
||
this
.
_position
.
position
&&
this
.
_position
.
position
.
lineNumber
!==
newState
.
position
.
lineNumber
))
{
// hide when getting a 'hide'-request or when currently
...
...
@@ -131,10 +136,6 @@ export class LightBulbWidget implements IDisposable, IContentWidget {
});
}
get
state
():
CodeActionsState
.
State
{
return
this
.
_state
;
}
set
title
(
value
:
string
)
{
this
.
_domNode
.
title
=
value
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录