@krassowski/jupyterlab-lsp
Version:
Language Server Protocol integration for JupyterLab
64 lines • 2.48 kB
JavaScript
import { ISettingRegistry } from '@jupyterlab/settingregistry';
import { ITranslator } from '@jupyterlab/translation';
import { FeatureSettings } from '../../feature';
import { DiagnosticTag } from '../../lsp';
import { ILSPFeatureManager, PLUGIN_ID } from '../../tokens';
import { DiagnosticsCM, diagnosticsIcon, diagnostics_panel } from './diagnostics';
export const FEATURE_ID = PLUGIN_ID + ':diagnostics';
const COMMANDS = (trans) => [
{
id: 'show-diagnostics-panel',
execute: ({ app, features, adapter }) => {
let diagnostics_feature = features.get(FEATURE_ID);
diagnostics_feature.switchDiagnosticsPanelSource();
if (!diagnostics_panel.is_registered) {
diagnostics_panel.trans = trans;
diagnostics_panel.register(app);
}
const panel_widget = diagnostics_panel.widget;
if (!panel_widget.isAttached) {
app.shell.add(panel_widget, 'main', {
ref: adapter.widget_id,
mode: 'split-bottom'
});
}
app.shell.activateById(panel_widget.id);
},
is_enabled: context => {
return context.app.name != 'JupyterLab Classic';
},
label: trans.__('Show diagnostics panel'),
rank: 3,
icon: diagnosticsIcon
}
];
export const DIAGNOSTICS_PLUGIN = {
id: FEATURE_ID,
requires: [ILSPFeatureManager, ISettingRegistry, ITranslator],
autoStart: true,
activate: (app, featureManager, settingRegistry, translator) => {
const settings = new FeatureSettings(settingRegistry, FEATURE_ID);
const trans = translator.load('jupyterlab_lsp');
featureManager.register({
feature: {
editorIntegrationFactory: new Map([
['CodeMirrorEditor', DiagnosticsCM]
]),
id: FEATURE_ID,
capabilities: {
textDocument: {
publishDiagnostics: {
tagSupport: {
valueSet: [DiagnosticTag.Deprecated, DiagnosticTag.Unnecessary]
}
}
}
},
name: 'LSP Diagnostics',
settings: settings,
commands: COMMANDS(trans)
}
});
}
};
//# sourceMappingURL=index.js.map