@@ -3,7 +3,11 @@ import {
33 JupyterFrontEnd ,
44 JupyterFrontEndPlugin
55} from '@jupyterlab/application' ;
6- import { ICompletionProviderManager } from '@jupyterlab/completer' ;
6+ import {
7+ ICompletionProviderManager ,
8+ ContextCompleterProvider ,
9+ KernelCompleterProvider
10+ } from '@jupyterlab/completer' ;
711import {
812 ILSPFeatureManager ,
913 ILSPDocumentConnectionManager
@@ -24,6 +28,7 @@ import {
2428 EnhancedKernelCompleterProvider
2529} from './overrides' ;
2630import { CompletionProvider } from './provider' ;
31+ import { ICompletionFeature } from './tokens' ;
2732
2833export const completionIcon = new LabIcon ( {
2934 name : 'lsp:completion' ,
@@ -94,42 +99,65 @@ export namespace CompletionFeature {
9499 export const id = PLUGIN_ID + ':completion' ;
95100}
96101
97- export const COMPLETION_PLUGIN : JupyterFrontEndPlugin < void > = {
98- id : CompletionFeature . id ,
99- requires : [
100- ILSPFeatureManager ,
101- ISettingRegistry ,
102- ICompletionProviderManager ,
103- ILSPCompletionThemeManager ,
104- IRenderMimeRegistry ,
105- ILSPDocumentConnectionManager
106- ] ,
102+ export const COMPLETION_PLUGIN : JupyterFrontEndPlugin < ICompletionFeature | null > =
103+ {
104+ id : CompletionFeature . id ,
105+ requires : [
106+ ILSPFeatureManager ,
107+ ISettingRegistry ,
108+ ICompletionProviderManager ,
109+ ILSPCompletionThemeManager ,
110+ IRenderMimeRegistry ,
111+ ILSPDocumentConnectionManager
112+ ] ,
113+ autoStart : true ,
114+ activate : async (
115+ app : JupyterFrontEnd ,
116+ featureManager : ILSPFeatureManager ,
117+ settingRegistry : ISettingRegistry ,
118+ completionProviderManager : ICompletionProviderManager ,
119+ iconsThemeManager : ILSPCompletionThemeManager ,
120+ renderMimeRegistry : IRenderMimeRegistry ,
121+ connectionManager : ILSPDocumentConnectionManager
122+ ) : Promise < ICompletionFeature | null > => {
123+ const settings = new FeatureSettings < LSPCompletionSettings > (
124+ settingRegistry ,
125+ CompletionFeature . id
126+ ) ;
127+ await settings . ready ;
128+ if ( settings . composite . disable ) {
129+ return null ;
130+ }
131+ const feature = new CompletionFeature ( {
132+ settings,
133+ connectionManager,
134+ renderMimeRegistry,
135+ iconsThemeManager,
136+ completionProviderManager
137+ } ) ;
138+
139+ featureManager . register ( feature ) ;
140+ return { id : CompletionFeature . id } ;
141+ }
142+ } ;
143+
144+ export const COMPLETION_FALLBACK_PLUGIN : JupyterFrontEndPlugin < void > = {
145+ id : CompletionFeature . id + '-fallback' ,
146+ description :
147+ 'Plugin which restores the default completion provider when the LSP completion plugin is disabled' ,
148+ requires : [ ICompletionProviderManager ] ,
149+ optional : [ ICompletionFeature ] ,
107150 autoStart : true ,
108151 activate : async (
109152 app : JupyterFrontEnd ,
110- featureManager : ILSPFeatureManager ,
111- settingRegistry : ISettingRegistry ,
112153 completionProviderManager : ICompletionProviderManager ,
113- iconsThemeManager : ILSPCompletionThemeManager ,
114- renderMimeRegistry : IRenderMimeRegistry ,
115- connectionManager : ILSPDocumentConnectionManager
154+ completionFeature : ICompletionFeature | null
116155 ) => {
117- const settings = new FeatureSettings < LSPCompletionSettings > (
118- settingRegistry ,
119- CompletionFeature . id
120- ) ;
121- await settings . ready ;
122- if ( settings . composite . disable ) {
123- return ;
156+ if ( completionFeature == null ) {
157+ completionProviderManager . registerProvider (
158+ new ContextCompleterProvider ( )
159+ ) ;
160+ completionProviderManager . registerProvider ( new KernelCompleterProvider ( ) ) ;
124161 }
125- const feature = new CompletionFeature ( {
126- settings,
127- connectionManager,
128- renderMimeRegistry,
129- iconsThemeManager,
130- completionProviderManager
131- } ) ;
132-
133- featureManager . register ( feature ) ;
134162 }
135163} ;
0 commit comments