44 *--------------------------------------------------------------------------------------------*/
55
66import { flatten , coalesce } from 'vs/base/common/arrays' ;
7- import { asWinJsPromise , asThenable } from 'vs/base/common/async' ;
87import { CancellationToken } from 'vs/base/common/cancellation' ;
98import { onUnexpectedExternalError } from 'vs/base/common/errors' ;
10- import { TPromise } from 'vs/base/common/winjs.base' ;
119import { registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions' ;
1210import { Position } from 'vs/editor/common/core/position' ;
1311import { ITextModel } from 'vs/editor/common/model' ;
1412import { DefinitionLink , DefinitionProviderRegistry , ImplementationProviderRegistry , TypeDefinitionProviderRegistry } from 'vs/editor/common/modes' ;
1513import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegistry' ;
1614
17- function getDefinitions < T > (
18- model : ITextModel ,
19- position : Position ,
20- registry : LanguageFeatureRegistry < T > ,
21- provide : ( provider : T , model : ITextModel , position : Position , token : CancellationToken ) => DefinitionLink | DefinitionLink [ ] | Thenable < DefinitionLink | DefinitionLink [ ] >
22- ) : TPromise < DefinitionLink [ ] > {
23- const provider = registry . ordered ( model ) ;
2415
25- // get results
26- const promises = provider . map ( ( provider ) : TPromise < DefinitionLink | DefinitionLink [ ] > => {
27- return asWinJsPromise ( ( token ) => {
28- return provide ( provider , model , position , token ) ;
29- } ) . then ( undefined , err => {
30- onUnexpectedExternalError ( err ) ;
31- return null ;
32- } ) ;
33- } ) ;
34- return TPromise . join ( promises )
35- . then ( flatten )
36- . then ( references => coalesce ( references ) ) ;
37- }
38-
39- function getDefinitions2 < T > (
16+ function getDefinitions < T > (
4017 model : ITextModel ,
4118 position : Position ,
4219 registry : LanguageFeatureRegistry < T > ,
@@ -46,43 +23,35 @@ function getDefinitions2<T>(
4623
4724 // get results
4825 const promises = provider . map ( ( provider ) : Thenable < DefinitionLink | DefinitionLink [ ] > => {
49- return asThenable ( ( ) => {
50- return provide ( provider , model , position ) ;
51- } ) . then ( undefined , err => {
26+ return Promise . resolve ( provide ( provider , model , position ) ) . then ( undefined , err => {
5227 onUnexpectedExternalError ( err ) ;
5328 return null ;
5429 } ) ;
5530 } ) ;
56- return TPromise . join ( promises )
31+ return Promise . all ( promises )
5732 . then ( flatten )
5833 . then ( references => coalesce ( references ) ) ;
5934}
6035
6136
62- export function getDefinitionsAtPosition ( model : ITextModel , position : Position ) : TPromise < DefinitionLink [ ] > {
63- return getDefinitions ( model , position , DefinitionProviderRegistry , ( provider , model , position , token ) => {
64- return provider . provideDefinition ( model , position , token ) ;
65- } ) ;
66- }
67-
68- export function getDefinitionsAtPosition2 ( model : ITextModel , position : Position , token : CancellationToken ) : Thenable < DefinitionLink [ ] > {
69- return getDefinitions2 ( model , position , DefinitionProviderRegistry , ( provider , model , position ) => {
37+ export function getDefinitionsAtPosition ( model : ITextModel , position : Position , token : CancellationToken ) : Thenable < DefinitionLink [ ] > {
38+ return getDefinitions ( model , position , DefinitionProviderRegistry , ( provider , model , position ) => {
7039 return provider . provideDefinition ( model , position , token ) ;
7140 } ) ;
7241}
7342
74- export function getImplementationsAtPosition ( model : ITextModel , position : Position ) : TPromise < DefinitionLink [ ] > {
75- return getDefinitions ( model , position , ImplementationProviderRegistry , ( provider , model , position , token ) => {
43+ export function getImplementationsAtPosition ( model : ITextModel , position : Position , token : CancellationToken ) : Thenable < DefinitionLink [ ] > {
44+ return getDefinitions ( model , position , ImplementationProviderRegistry , ( provider , model , position ) => {
7645 return provider . provideImplementation ( model , position , token ) ;
7746 } ) ;
7847}
7948
80- export function getTypeDefinitionsAtPosition ( model : ITextModel , position : Position ) : TPromise < DefinitionLink [ ] > {
81- return getDefinitions ( model , position , TypeDefinitionProviderRegistry , ( provider , model , position , token ) => {
49+ export function getTypeDefinitionsAtPosition ( model : ITextModel , position : Position , token : CancellationToken ) : Thenable < DefinitionLink [ ] > {
50+ return getDefinitions ( model , position , TypeDefinitionProviderRegistry , ( provider , model , position ) => {
8251 return provider . provideTypeDefinition ( model , position , token ) ;
8352 } ) ;
8453}
8554
86- registerDefaultLanguageCommand ( '_executeDefinitionProvider' , getDefinitionsAtPosition ) ;
87- registerDefaultLanguageCommand ( '_executeImplementationProvider' , getImplementationsAtPosition ) ;
88- registerDefaultLanguageCommand ( '_executeTypeDefinitionProvider' , getTypeDefinitionsAtPosition ) ;
55+ registerDefaultLanguageCommand ( '_executeDefinitionProvider' , ( model , position ) => getDefinitionsAtPosition ( model , position , CancellationToken . None ) ) ;
56+ registerDefaultLanguageCommand ( '_executeImplementationProvider' , ( model , position ) => getImplementationsAtPosition ( model , position , CancellationToken . None ) ) ;
57+ registerDefaultLanguageCommand ( '_executeTypeDefinitionProvider' , ( model , position ) => getTypeDefinitionsAtPosition ( model , position , CancellationToken . None ) ) ;
0 commit comments