@@ -3,7 +3,11 @@ import {
3
3
JupyterFrontEnd ,
4
4
JupyterFrontEndPlugin
5
5
} from '@jupyterlab/application' ;
6
- import { ICompletionProviderManager } from '@jupyterlab/completer' ;
6
+ import {
7
+ ICompletionProviderManager ,
8
+ ContextCompleterProvider ,
9
+ KernelCompleterProvider
10
+ } from '@jupyterlab/completer' ;
7
11
import {
8
12
ILSPFeatureManager ,
9
13
ILSPDocumentConnectionManager
@@ -24,6 +28,7 @@ import {
24
28
EnhancedKernelCompleterProvider
25
29
} from './overrides' ;
26
30
import { CompletionProvider } from './provider' ;
31
+ import { ICompletionFeature } from './tokens' ;
27
32
28
33
export const completionIcon = new LabIcon ( {
29
34
name : 'lsp:completion' ,
@@ -94,42 +99,65 @@ export namespace CompletionFeature {
94
99
export const id = PLUGIN_ID + ':completion' ;
95
100
}
96
101
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 ] ,
107
150
autoStart : true ,
108
151
activate : async (
109
152
app : JupyterFrontEnd ,
110
- featureManager : ILSPFeatureManager ,
111
- settingRegistry : ISettingRegistry ,
112
153
completionProviderManager : ICompletionProviderManager ,
113
- iconsThemeManager : ILSPCompletionThemeManager ,
114
- renderMimeRegistry : IRenderMimeRegistry ,
115
- connectionManager : ILSPDocumentConnectionManager
154
+ completionFeature : ICompletionFeature | null
116
155
) => {
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 ( ) ) ;
124
161
}
125
- const feature = new CompletionFeature ( {
126
- settings,
127
- connectionManager,
128
- renderMimeRegistry,
129
- iconsThemeManager,
130
- completionProviderManager
131
- } ) ;
132
-
133
- featureManager . register ( feature ) ;
134
162
}
135
163
} ;
0 commit comments