@@ -107,7 +107,7 @@ import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/c
107
107
import { UIKind } from 'vs/workbench/services/extensions/common/extensionHostProtocol' ;
108
108
import { checkProposedApiEnabled , isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions' ;
109
109
import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier' ;
110
- import { ExcludeSettingOptions , TextSearchCompleteMessageType , TextSearchCompleteMessageTypeNew , TextSearchContextNew , TextSearchMatchNew } from 'vs/workbench/services/search/common/searchExtTypes' ;
110
+ import { ExcludeSettingOptions , oldToNewTextSearchResult , TextSearchCompleteMessageType , TextSearchCompleteMessageTypeNew , TextSearchContextNew , TextSearchMatchNew } from 'vs/workbench/services/search/common/searchExtTypes' ;
111
111
import type * as vscode from 'vscode' ;
112
112
113
113
export interface IExtensionRegistries {
@@ -973,7 +973,18 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
973
973
} ,
974
974
findFiles2New : ( filePattern : vscode . GlobPattern [ ] , options ?: vscode . FindFiles2OptionsNew , token ?: vscode . CancellationToken ) : Thenable < vscode . Uri [ ] > => {
975
975
checkProposedApiEnabled ( extension , 'findFiles2New' ) ;
976
- return Promise . resolve ( [ ] ) ;
976
+
977
+ const oldOptions = {
978
+ exclude : options ?. exclude && options . exclude . length > 0 ? options . exclude [ 0 ] : undefined ,
979
+ useDefaultExcludes : ! options ?. useExcludeSettings || ( options ?. useExcludeSettings === ExcludeSettingOptions . filesExclude || options ?. useExcludeSettings === ExcludeSettingOptions . searchAndFilesExclude ) ,
980
+ useDefaultSearchExcludes : ! options ?. useExcludeSettings || ( options ?. useExcludeSettings === ExcludeSettingOptions . searchAndFilesExclude ) ,
981
+ maxResults : options ?. maxResults ,
982
+ useIgnoreFiles : options ?. useIgnoreFiles ?. local ,
983
+ useGlobalIgnoreFiles : options ?. useIgnoreFiles ?. global ,
984
+ useParentIgnoreFiles : options ?. useIgnoreFiles ?. parent ,
985
+ followSymlinks : options ?. followSymlinks ,
986
+ } ;
987
+ return extHostWorkspace . findFiles2 ( filePattern && filePattern . length > 0 ? filePattern [ 0 ] : undefined , oldOptions , extension . identifier , token ) ;
977
988
} ,
978
989
findTextInFiles : ( query : vscode . TextSearchQuery , optionsOrCallback : vscode . FindTextInFilesOptions | ( ( result : vscode . TextSearchResult ) => void ) , callbackOrToken ?: vscode . CancellationToken | ( ( result : vscode . TextSearchResult ) => void ) , token ?: vscode . CancellationToken ) => {
979
990
checkProposedApiEnabled ( extension , 'findTextInFiles' ) ;
@@ -993,11 +1004,56 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
993
1004
} ,
994
1005
findTextInFilesNew : ( query : vscode . TextSearchQueryNew , options ?: vscode . FindTextInFilesOptionsNew , token ?: vscode . CancellationToken ) : vscode . FindTextInFilesResponse => {
995
1006
checkProposedApiEnabled ( extension , 'findTextInFilesNew' ) ;
1007
+ checkProposedApiEnabled ( extension , 'textSearchProviderNew' ) ;
1008
+ let oldOptions = { } ;
1009
+
1010
+
1011
+ if ( options ) {
1012
+ oldOptions = {
1013
+ include : options . include && options . include . length > 0 ? options . include [ 0 ] : undefined ,
1014
+ exclude : options . exclude && options . exclude . length > 0 ? options . exclude [ 0 ] : undefined ,
1015
+ useDefaultExcludes : options . useExcludeSettings === undefined || ( options . useExcludeSettings === ExcludeSettingOptions . filesExclude || options . useExcludeSettings === ExcludeSettingOptions . searchAndFilesExclude ) ,
1016
+ useSearchExclude : options . useExcludeSettings === undefined || ( options . useExcludeSettings === ExcludeSettingOptions . searchAndFilesExclude ) ,
1017
+ maxResults : options . maxResults ,
1018
+ useIgnoreFiles : options . useIgnoreFiles ?. local ,
1019
+ useGlobalIgnoreFiles : options . useIgnoreFiles ?. global ,
1020
+ useParentIgnoreFiles : options . useIgnoreFiles ?. parent ,
1021
+ followSymlinks : options . followSymlinks ,
1022
+ encoding : options . encoding ,
1023
+ previewOptions : options . previewOptions ? {
1024
+ matchLines : options . previewOptions ?. matchLines ?? 100 ,
1025
+ charsPerLine : options . previewOptions ?. charsPerLine ?? 10000 ,
1026
+ } : undefined ,
1027
+ beforeContext : options . surroundingContext ,
1028
+ afterContext : options . surroundingContext ,
1029
+ } satisfies vscode . FindTextInFilesOptions & { useSearchExclude ?: boolean } ;
1030
+ }
1031
+
1032
+ const complete : Promise < undefined | vscode . TextSearchComplete > = Promise . resolve ( undefined ) ;
1033
+
1034
+ const asyncIterable = new AsyncIterableObject < vscode . TextSearchResultNew > ( async emitter => {
1035
+ const callback = async ( result : vscode . TextSearchResult ) => {
1036
+ emitter . emitOne ( oldToNewTextSearchResult ( result ) ) ;
1037
+ return result ;
1038
+ } ;
1039
+ await complete . then ( e => {
1040
+ return extHostWorkspace . findTextInFiles (
1041
+ query ,
1042
+ oldOptions ,
1043
+ callback ,
1044
+ extension . identifier ,
1045
+ token
1046
+ ) ;
1047
+ } ) ;
1048
+ } ) ;
1049
+
996
1050
return {
997
- results : AsyncIterableObject . fromArray ( [ ] ) ,
998
- complete : Promise . resolve ( {
999
- limitHit : false
1000
- } )
1051
+ results : asyncIterable ,
1052
+ complete : complete . then ( ( e ) => {
1053
+ return {
1054
+ limitHit : e ?. limitHit ?? false
1055
+ } ;
1056
+ } ) ,
1001
1057
} ;
1002
1058
} ,
1003
1059
save : ( uri ) => {
0 commit comments