Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
fb9cfb1a
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,发现更多精彩内容 >>
提交
fb9cfb1a
编写于
12月 01, 2015
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
command: executeCodeActionProvider
上级
1d7819f0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
59 addition
and
5 deletion
+59
-5
src/vs/editor/common/core/range.ts
src/vs/editor/common/core/range.ts
+1
-1
src/vs/editor/contrib/quickFix/common/quickFix.ts
src/vs/editor/contrib/quickFix/common/quickFix.ts
+21
-2
src/vs/workbench/api/common/extHostLanguageFeatureCommands.ts
...vs/workbench/api/common/extHostLanguageFeatureCommands.ts
+16
-2
src/vs/workbench/test/common/api/extHostLanguageFeatureCommands.test.ts
...ch/test/common/api/extHostLanguageFeatureCommands.test.ts
+21
-0
未找到文件。
src/vs/editor/common/core/range.ts
浏览文件 @
fb9cfb1a
...
...
@@ -90,7 +90,7 @@ export class Range implements EditorCommon.IEditorRange {
return
new
Range
(
range
.
startLineNumber
,
range
.
startColumn
,
range
.
endLineNumber
,
range
.
endColumn
);
}
public
static
isIRange
(
obj
:
any
):
boolean
{
public
static
isIRange
(
obj
:
any
):
obj
is
EditorCommon
.
IRange
{
return
(
obj
&&
(
typeof
obj
.
startLineNumber
===
'
number
'
)
...
...
src/vs/editor/contrib/quickFix/common/quickFix.ts
浏览文件 @
fb9cfb1a
...
...
@@ -5,10 +5,14 @@
'
use strict
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
IModel
,
IRange
}
from
'
vs/editor/common/editorCommon
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
onUnexpectedError
,
illegalArgument
}
from
'
vs/base/common/errors
'
;
import
{
IQuickFixSupport
,
IQuickFix
}
from
'
vs/editor/common/modes
'
;
import
{
IModelService
}
from
'
vs/editor/common/services/modelService
'
;
import
{
CommonEditorRegistry
}
from
'
vs/editor/common/editorCommonExtensions
'
;
import
LanguageFeatureRegistry
from
'
vs/editor/common/modes/languageFeatureRegistry
'
;
export
const
QuickFixRegistry
=
new
LanguageFeatureRegistry
<
IQuickFixSupport
>
(
'
quickFixSupport
'
);
...
...
@@ -40,4 +44,19 @@ export function getQuickFixes(model: IModel, range: IRange): TPromise<IQuickFix2
});
return
TPromise
.
join
(
promises
).
then
(()
=>
quickFixes
);
}
\ No newline at end of file
}
CommonEditorRegistry
.
registerLanguageCommand
(
'
_executeCodeActionProvider
'
,
function
(
accessor
,
args
)
{
const
{
resource
,
range
}
=
args
;
if
(
!
URI
.
isURI
(
resource
)
||
!
Range
.
isIRange
(
range
))
{
throw
illegalArgument
();
}
const
model
=
accessor
.
get
(
IModelService
).
getModel
(
resource
);
if
(
!
model
)
{
throw
illegalArgument
();
}
return
getQuickFixes
(
model
,
range
);
});
\ No newline at end of file
src/vs/workbench/api/common/extHostLanguageFeatureCommands.ts
浏览文件 @
fb9cfb1a
...
...
@@ -28,7 +28,7 @@ import {DeclarationRegistry} from 'vs/editor/contrib/goToDeclaration/common/goTo
import
{
ExtraInfoRegistry
}
from
'
vs/editor/contrib/hover/common/hover
'
;
import
{
OccurrencesRegistry
}
from
'
vs/editor/contrib/wordHighlighter/common/wordHighlighter
'
;
import
{
ReferenceRegistry
}
from
'
vs/editor/contrib/referenceSearch/common/referenceSearch
'
;
import
{
QuickFixRegistry
}
from
'
vs/editor/contrib/quickFix/common/quickFix
'
;
import
{
IQuickFix2
,
QuickFixRegistry
,
getQuickFixes
}
from
'
vs/editor/contrib/quickFix/common/quickFix
'
;
import
{
IOutline
}
from
'
vs/editor/contrib/quickOpen/common/quickOpen
'
;
import
LanguageFeatureRegistry
from
'
vs/editor/common/modes/languageFeatureRegistry
'
;
import
{
NavigateTypesSupportRegistry
,
INavigateTypesSupport
,
ITypeBearing
}
from
'
vs/workbench/parts/search/common/search
'
...
...
@@ -47,8 +47,8 @@ import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest';
// vscode.executeSignatureHelpProvider
// vscode.executeDocumentSymbolProvider
// vscode.executeCompletionItemProvider
// vscode.executeCodeActionProvider
// vscode.executeCodeLensProvider
// vscode.executeFormatDocumentProvider
// vscode.executeFormatRangeProvider
...
...
@@ -71,6 +71,7 @@ export class ExtHostLanguageFeatureCommands {
this
.
_register
(
'
vscode.executeSignatureHelpProvider
'
,
this
.
_executeSignatureHelpProvider
);
this
.
_register
(
'
vscode.executeDocumentSymbolProvider
'
,
this
.
_executeDocumentSymbolProvider
);
this
.
_register
(
'
vscode.executeCompletionItemProvider
'
,
this
.
_executeCompletionItemProvider
);
this
.
_register
(
'
vscode.executeCodeActionProvider
'
,
this
.
_executeCodeActionProvider
);
}
private
_register
(
id
:
string
,
callback
:
(...
args
:
any
[])
=>
any
):
void
{
...
...
@@ -201,4 +202,17 @@ export class ExtHostLanguageFeatureCommands {
}
});
}
private
_executeCodeActionProvider
(
resource
:
URI
,
range
:
types
.
Range
):
Thenable
<
vscode
.
Command
[]
>
{
const
args
=
{
resource
,
range
:
typeConverters
.
fromRange
(
range
)
};
return
this
.
_commands
.
executeCommand
<
IQuickFix2
[]
>
(
'
_executeCodeActionProvider
'
,
args
).
then
(
value
=>
{
if
(
Array
.
isArray
(
value
))
{
// TODO@joh this isn't proper!
return
value
.
map
(
quickFix
=>
({
title
:
quickFix
.
label
}));
}
});
}
}
\ No newline at end of file
src/vs/workbench/test/common/api/extHostLanguageFeatureCommands.test.ts
浏览文件 @
fb9cfb1a
...
...
@@ -255,4 +255,25 @@ suite('ExtHostLanguageFeatureCommands', function() {
});
});
});
// --- quickfix
test
(
'
QuickFix, back and forth
'
,
function
(
done
)
{
disposables
.
push
(
extHost
.
registerCodeActionProvider
(
defaultSelector
,
<
vscode
.
CodeActionProvider
>
{
provideCodeActions
():
any
{
return
[{
command
:
'
testing
'
,
title
:
'
Title
'
,
arguments
:
[
1
,
2
,
true
]
}];
}
}));
threadService
.
sync
().
then
(()
=>
{
commands
.
executeCommand
<
vscode
.
Command
[]
>
(
'
vscode.executeCodeActionProvider
'
,
model
.
getAssociatedResource
(),
new
types
.
Range
(
0
,
0
,
1
,
1
)).
then
(
value
=>
{
assert
.
equal
(
value
.
length
,
1
);
let
[
first
]
=
value
;
assert
.
equal
(
first
.
title
,
'
Title
'
);
// assert.equal(first.command, 'testing');
// assert.deepEqual(first.arguments, [1, 2, true]);
done
();
});
});
});
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录