jupyterlab-lsp
jupyterlab-lsp copied to clipboard
How to correctly use WidgetLSPAdapter to enable code completion in the code editor of custom extension
I have written a custom extension which supports files with the .cpw suffix. After opening a .cpw file, there will be 0 to N code editors (created by newInlineEditor of the CodeMirrorEditorFactory instance).
I expect to get the code completion feature in these code editors.
I wrote a CPWAdapter by imitating NotebookAdapter and FileEditorAdapter. It can successfully start the LSP connection and communicate for .cpw files, but I haven't found the correct implementation to enable the code completion feature for the code editors. I'm asking for help.
I have created a minimum reproducible code repository. Please evaluate my code and let me know if there are any problems with my implementation process.
Current progress:
- In the activate function in index.ts, I use
WidgetTrackerand newCPWAdapterin widgetAdded. - In
CPWWidget, code editors are created in the content area. (In the actual business process, code editors are generated dynamically and there may be 0 or more of them.) - After a certain code editor gets focused, it is designated as the
activeEditor. - In
CPWAdapter, when theactiveEditoris switched or its content changes, theVirtualDocumentis updated.