Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
81c028ea
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,发现更多精彩内容 >>
提交
81c028ea
编写于
2月 09, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #19562
上级
df9d8e28
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
65 addition
and
27 deletion
+65
-27
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.css
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.css
+2
-5
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts
+0
-2
src/vs/editor/contrib/quickFix/common/quickFixModel.ts
src/vs/editor/contrib/quickFix/common/quickFixModel.ts
+19
-19
src/vs/editor/contrib/quickFix/test/common/quickFixModel.test.ts
...editor/contrib/quickFix/test/common/quickFixModel.test.ts
+44
-1
未找到文件。
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.css
浏览文件 @
81c028ea
...
...
@@ -20,14 +20,11 @@
cursor
:
pointer
;
}
.monaco-editor.vs
.lightbulb-glyph
,
.monaco-editor.vs
.lightbulb-glyph
[
data-severity
=
"high"
]
{
.monaco-editor.vs
.lightbulb-glyph
{
background
:
url('lightbulb.svg')
center
center
no-repeat
;
}
.monaco-editor.vs-dark
.lightbulb-glyph
,
.monaco-editor.hc-black
.lightbulb-glyph
,
.monaco-editor.vs-dark
.lightbulb-glyph
[
data-severity
=
"high"
],
.monaco-editor.hc-black
.lightbulb-glyph
[
data-severity
=
"high"
]
{
.monaco-editor.hc-black
.lightbulb-glyph
{
background
:
url('lightbulb-dark.svg')
center
center
no-repeat
;
}
src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts
浏览文件 @
81c028ea
...
...
@@ -7,7 +7,6 @@
import
'
vs/css!./lightBulbWidget
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
Event
,
{
Emitter
,
any
}
from
'
vs/base/common/event
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
*
as
dom
from
'
vs/base/browser/dom
'
;
import
{
ICodeEditor
,
IOverlayWidget
,
IOverlayWidgetPosition
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
QuickFixComputeEvent
}
from
'
vs/editor/contrib/quickFix/common/quickFixModel
'
;
...
...
@@ -109,7 +108,6 @@ export class LightBulbWidget implements IOverlayWidget, IDisposable {
this
.
_line
=
line
;
this
.
_visible
=
true
;
this
.
_layout
();
this
.
_domNode
.
dataset
[
'
severity
'
]
=
e
.
severity
>=
Severity
.
Warning
?
'
high
'
:
''
;
}
}
...
...
src/vs/editor/contrib/quickFix/common/quickFixModel.ts
浏览文件 @
81c028ea
...
...
@@ -6,7 +6,6 @@
import
*
as
arrays
from
'
vs/base/common/arrays
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
...
...
@@ -35,13 +34,12 @@ export class QuickFixOracle {
}
trigger
():
void
{
let
{
range
,
severity
}
=
this
.
_rangeAtPosition
();
let
range
=
this
.
_rangeAtPosition
();
if
(
!
range
)
{
range
=
this
.
_editor
.
getSelection
();
}
this
.
_signalChange
({
type
:
'
manual
'
,
severity
,
range
,
position
:
this
.
_editor
.
getPosition
(),
fixes
:
range
&&
getCodeActions
(
this
.
_editor
.
getModel
(),
this
.
_editor
.
getModel
().
validateRange
(
range
))
...
...
@@ -60,12 +58,11 @@ export class QuickFixOracle {
}
private
_onCursorChange
():
void
{
const
{
range
,
severity
}
=
this
.
_rangeAtPosition
();
const
range
=
this
.
_rangeAtPosition
();
if
(
!
Range
.
equalsRange
(
this
.
_currentRange
,
range
))
{
this
.
_currentRange
=
range
;
this
.
_signalChange
({
type
:
'
auto
'
,
severity
,
range
,
position
:
this
.
_editor
.
getPosition
(),
fixes
:
range
&&
getCodeActions
(
this
.
_editor
.
getModel
(),
this
.
_editor
.
getModel
().
validateRange
(
range
))
...
...
@@ -73,18 +70,22 @@ export class QuickFixOracle {
}
}
private
_rangeAtPosition
():
{
range
:
IRange
,
severity
:
Severity
;
}
{
let
range
:
IRange
;
let
severity
:
Severity
;
private
_rangeAtPosition
():
IRange
{
// (1) check with non empty selection
const
selection
=
this
.
_editor
.
getSelection
();
if
(
!
selection
.
isEmpty
())
{
return
selection
;
}
// (2) check with diagnostics markers
const
marker
=
this
.
_markerAtPosition
();
if
(
marker
)
{
range
=
Range
.
lift
(
marker
);
severity
=
marker
.
severity
;
}
else
{
range
=
this
.
_wordAtPosition
();
severity
=
Severity
.
Info
;
return
Range
.
lift
(
marker
);
}
return
{
range
,
severity
};
// (3) check with word
return
this
.
_wordAtPosition
();
}
private
_markerAtPosition
():
IMarker
{
...
...
@@ -105,14 +106,14 @@ export class QuickFixOracle {
}
private
_wordAtPosition
():
IRange
{
const
{
positionLineNumber
,
positionColumn
}
=
this
.
_editor
.
getSelec
tion
();
const
pos
=
this
.
_editor
.
getPosi
tion
();
const
model
=
this
.
_editor
.
getModel
();
const
info
=
model
.
getWordAtPosition
(
{
lineNumber
:
positionLineNumber
,
column
:
positionColumn
}
);
const
info
=
model
.
getWordAtPosition
(
pos
);
if
(
info
)
{
return
{
startLineNumber
:
pos
itionL
ineNumber
,
startLineNumber
:
pos
.
l
ineNumber
,
startColumn
:
info
.
startColumn
,
endLineNumber
:
pos
itionL
ineNumber
,
endLineNumber
:
pos
.
l
ineNumber
,
endColumn
:
info
.
endColumn
};
}
...
...
@@ -122,7 +123,6 @@ export class QuickFixOracle {
export
interface
QuickFixComputeEvent
{
type
:
'
auto
'
|
'
manual
'
;
severity
:
Severity
;
range
:
IRange
;
position
:
IPosition
;
fixes
:
TPromise
<
CodeAction
[]
>
;
...
...
src/vs/editor/contrib/quickFix/test/common/quickFixModel.test.ts
浏览文件 @
81c028ea
...
...
@@ -5,7 +5,7 @@
'
use strict
'
;
import
*
as
assert
from
'
assert
'
;
import
{
ICommonCodeEditor
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ICommonCodeEditor
,
IRange
}
from
'
vs/editor/common/editorCommon
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Model
}
from
'
vs/editor/common/model/model
'
;
...
...
@@ -127,4 +127,47 @@ suite('QuickFix', () => {
});
});
test
(
'
Oracle -> selection wins over marker
'
,
()
=>
{
let
range
:
IRange
;
let
reg
=
CodeActionProviderRegistry
.
register
(
languageIdentifier
.
language
,
{
provideCodeActions
(
doc
,
_range
)
{
range
=
_range
;
return
[];
}
});
markerService
.
changeOne
(
'
fake
'
,
uri
,
[{
startLineNumber
:
1
,
startColumn
:
1
,
endLineNumber
:
1
,
endColumn
:
6
,
message
:
'
error
'
,
severity
:
1
,
code
:
''
,
source
:
''
}]);
let
fixes
:
TPromise
<
any
>
[]
=
[];
let
oracle
=
new
QuickFixOracle
(
editor
,
markerService
,
e
=>
{
fixes
.
push
(
e
.
fixes
);
});
editor
.
setSelection
({
startLineNumber
:
1
,
startColumn
:
1
,
endLineNumber
:
1
,
endColumn
:
13
});
return
TPromise
.
join
(
fixes
).
then
(
_
=>
{
// assert selection
assert
.
deepEqual
(
range
,
{
startLineNumber
:
1
,
startColumn
:
1
,
endLineNumber
:
1
,
endColumn
:
13
});
range
=
undefined
;
editor
.
setSelection
({
startLineNumber
:
1
,
startColumn
:
2
,
endLineNumber
:
1
,
endColumn
:
2
});
return
TPromise
.
join
(
fixes
).
then
(
_
=>
{
reg
.
dispose
();
oracle
.
dispose
();
// assert marker
assert
.
deepEqual
(
range
,
{
startLineNumber
:
1
,
startColumn
:
1
,
endLineNumber
:
1
,
endColumn
:
6
});
});
});
});
});
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录