@nogataka/smart-edit 0.0.16 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +0 -1
- package/README.md +144 -67
- package/dist/cli.js +2 -2
- package/dist/devtools/generate_prompt_factory.js +5 -5
- package/dist/index.d.ts +33 -34
- package/dist/index.js +33 -34
- package/dist/interprompt/multilang_prompt.js +2 -2
- package/dist/interprompt/prompt_factory.js +2 -2
- package/dist/interprompt/util/class_decorators.d.ts +1 -1
- package/dist/interprompt/util/class_decorators.js +1 -1
- package/dist/{serena → smart-edit}/agent.d.ts +20 -20
- package/dist/{serena → smart-edit}/agent.js +43 -43
- package/dist/{serena → smart-edit}/analytics.d.ts +1 -1
- package/dist/{serena → smart-edit}/analytics.js +3 -3
- package/dist/smart-edit/cli.d.ts +9 -0
- package/dist/{serena → smart-edit}/cli.js +49 -99
- package/dist/{serena → smart-edit}/code_editor.d.ts +7 -7
- package/dist/{serena → smart-edit}/config/context_mode.d.ts +13 -13
- package/dist/{serena → smart-edit}/config/context_mode.js +12 -12
- package/dist/{serena/config/serena_config.d.ts → smart-edit/config/smart_edit_config.d.ts} +14 -14
- package/dist/{serena/config/serena_config.js → smart-edit/config/smart_edit_config.js} +31 -31
- package/dist/smart-edit/constants.d.ts +18 -0
- package/dist/smart-edit/constants.js +27 -0
- package/dist/{serena → smart-edit}/dashboard.d.ts +3 -3
- package/dist/{serena → smart-edit}/dashboard.js +10 -10
- package/dist/{serena → smart-edit}/gui_log_viewer.js +6 -6
- package/dist/{serena → smart-edit}/mcp.d.ts +40 -40
- package/dist/{serena → smart-edit}/mcp.js +38 -38
- package/dist/{serena → smart-edit}/project.d.ts +7 -7
- package/dist/{serena → smart-edit}/project.js +18 -18
- package/dist/{serena → smart-edit}/prompt_factory.d.ts +3 -3
- package/dist/{serena → smart-edit}/prompt_factory.js +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/codex.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/contexts/context.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/ide-assistant.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/modes/mode.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/prompt_templates/simple_tool_outputs.yml +1 -1
- package/dist/smart-edit/resources/dashboard/dashboard.js +13 -0
- package/dist/smart-edit/resources/dashboard/index.css +1 -0
- package/dist/smart-edit/resources/dashboard/index.html +13 -0
- package/dist/{serena → smart-edit}/resources/project.template.yml +6 -6
- package/dist/{serena/resources/serena_config.template.yml → smart-edit/resources/smart_edit_config.template.yml} +14 -14
- package/dist/{serena → smart-edit}/symbol.d.ts +7 -7
- package/dist/{serena → smart-edit}/symbol.js +2 -2
- package/dist/{serena → smart-edit}/text_utils.js +2 -2
- package/dist/{serena → smart-edit}/tools/config_tools.d.ts +1 -1
- package/dist/{serena → smart-edit}/tools/config_tools.js +6 -6
- package/dist/{serena → smart-edit}/tools/memory_tools.d.ts +4 -4
- package/dist/{serena → smart-edit}/tools/memory_tools.js +5 -5
- package/dist/{serena → smart-edit}/tools/tools_base.d.ts +15 -15
- package/dist/{serena → smart-edit}/tools/tools_base.js +7 -7
- package/dist/{serena → smart-edit}/util/exception.d.ts +2 -2
- package/dist/{serena → smart-edit}/util/exception.js +2 -2
- package/dist/{serena → smart-edit}/util/file_system.js +3 -3
- package/dist/{serena → smart-edit}/util/git.js +3 -3
- package/dist/{serena → smart-edit}/util/inspection.d.ts +3 -3
- package/dist/{serena → smart-edit}/util/inspection.js +3 -3
- package/dist/{serena → smart-edit}/util/logging.d.ts +6 -6
- package/dist/{serena → smart-edit}/util/logging.js +7 -7
- package/dist/{serena → smart-edit}/util/shell.js +1 -1
- package/dist/smart-edit/version.d.ts +1 -0
- package/dist/{serena → smart-edit}/version.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/autoload.js +1 -1
- package/dist/smart-lsp/language_servers/bash_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/bash_language_server.js +8 -8
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/common.d.ts +2 -2
- package/dist/{solidlsp → smart-lsp}/language_servers/common.js +1 -1
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.js +12 -12
- package/dist/smart-lsp/language_servers/dart_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/dart_language_server.js +13 -13
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.js +12 -12
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.js +6 -6
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.js +5 -5
- package/dist/smart-lsp/language_servers/ruby_common.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_common.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.js +14 -14
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.js +6 -6
- package/dist/{solidlsp → smart-lsp}/ls.d.ts +25 -25
- package/dist/{solidlsp → smart-lsp}/ls.js +19 -19
- package/dist/{solidlsp → smart-lsp}/ls_config.d.ts +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_config.js +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.d.ts +1 -1
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.js +2 -2
- package/dist/{solidlsp → smart-lsp}/ls_handler.d.ts +7 -7
- package/dist/{solidlsp → smart-lsp}/ls_handler.js +12 -12
- package/dist/{solidlsp → smart-lsp}/ls_request.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/ls_request.js +3 -3
- package/package.json +14 -4
- package/dist/serena/agno.d.ts +0 -111
- package/dist/serena/agno.js +0 -278
- package/dist/serena/cli.d.ts +0 -9
- package/dist/serena/constants.d.ts +0 -18
- package/dist/serena/constants.js +0 -27
- package/dist/serena/resources/dashboard/dashboard.js +0 -815
- package/dist/serena/resources/dashboard/index.html +0 -307
- package/dist/serena/resources/dashboard/jquery.min.js +0 -3
- package/dist/serena/version.d.ts +0 -1
- package/dist/solidlsp/language_servers/bash_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/dart_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/ruby_common.d.ts +0 -10
- /package/dist/{serena → smart-edit}/code_editor.js +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.d.ts +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.js +0 -0
- /package/dist/{serena → smart-edit}/gui_log_viewer.d.ts +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/chatgpt.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/desktop-app.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/oaicompat-agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/internal_modes/jetbrains.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/editing.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/interactive.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/no-onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/one-shot.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/planning.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/prompt_templates/system_prompt.yml +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-16.svg → smart-edit/resources/dashboard/smart-edit-icon-16.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-32.svg → smart-edit/resources/dashboard/smart-edit-icon-32.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-48.svg → smart-edit/resources/dashboard/smart-edit-icon-48.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs-dark-mode.svg → smart-edit/resources/dashboard/smart-edit-logs-dark-mode.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs.svg → smart-edit/resources/dashboard/smart-edit-logs.svg} +0 -0
- /package/dist/{serena → smart-edit}/text_utils.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/index.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/index.js +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.js +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.js +0 -0
- /package/dist/{serena → smart-edit}/util/file_system.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.js +0 -0
- /package/dist/{serena → smart-edit}/util/git.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/shell.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/language_servers/autoload.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.js +0 -0
|
@@ -2,9 +2,9 @@ import crypto from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { pathToFileURL } from 'node:url';
|
|
5
|
-
import {
|
|
5
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
6
6
|
import { Language } from '../ls_config.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
8
8
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
9
9
|
import { RuntimeDependencyCollection } from './common.js';
|
|
10
10
|
const GRADLE_VERSION = '8.14.2';
|
|
@@ -92,13 +92,13 @@ const INTELLICODE_DEPENDENCY = {
|
|
|
92
92
|
jarPath: 'extension/dist/com.microsoft.jdtls.intellicode.core-0.7.0.jar',
|
|
93
93
|
membersPath: 'extension/dist/bundledModels/java_intellisense-members'
|
|
94
94
|
};
|
|
95
|
-
export class EclipseJdtLanguageServer extends
|
|
95
|
+
export class EclipseJdtLanguageServer extends SmartLanguageServer {
|
|
96
96
|
handler;
|
|
97
97
|
runtimePaths;
|
|
98
98
|
initialized = false;
|
|
99
99
|
sentIntellicodeCommand = false;
|
|
100
100
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
101
|
-
const solidSettings = new
|
|
101
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
102
102
|
const runtimePaths = ensureRuntimeDependencies(solidSettings, loggerLike?.level);
|
|
103
103
|
const { command, env, workspaceDir } = createLaunchConfiguration(runtimePaths, solidSettings);
|
|
104
104
|
const handler = new NodeLanguageServerHandler({
|
|
@@ -111,7 +111,7 @@ export class EclipseJdtLanguageServer extends SolidLanguageServer {
|
|
|
111
111
|
super(config, loggerLike, repositoryRootPath, {
|
|
112
112
|
...options,
|
|
113
113
|
handler,
|
|
114
|
-
|
|
114
|
+
smartLspSettings: options?.smartLspSettings
|
|
115
115
|
});
|
|
116
116
|
this.handler = handler;
|
|
117
117
|
this.runtimePaths = runtimePaths;
|
|
@@ -250,8 +250,8 @@ registerLanguageServer(Language.JAVA, EclipseJdtLanguageServer);
|
|
|
250
250
|
function ensureRuntimeDependencies(settings, loggerLevel) {
|
|
251
251
|
const runtimeRoot = path.join(settings.languageServersStaticDir, 'eclipse-jdtls');
|
|
252
252
|
fs.mkdirSync(runtimeRoot, { recursive: true });
|
|
253
|
-
const { logger } =
|
|
254
|
-
name: '
|
|
253
|
+
const { logger } = createSmartEditLogger({
|
|
254
|
+
name: 'smart-lsp.language_servers.eclipse_jdtls',
|
|
255
255
|
emitToConsole: false,
|
|
256
256
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
257
257
|
});
|
|
@@ -274,7 +274,7 @@ function ensureGradle(runtimeRoot, logger) {
|
|
|
274
274
|
if (fs.existsSync(expectedDir)) {
|
|
275
275
|
return expectedDir;
|
|
276
276
|
}
|
|
277
|
-
if (process.env.
|
|
277
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
278
278
|
throw new Error(`gradle-${GRADLE_VERSION} not found at ${expectedDir}. Allow runtime downloads or install manually.`);
|
|
279
279
|
}
|
|
280
280
|
const collection = new RuntimeDependencyCollection([GRADLE_DEPENDENCY]);
|
|
@@ -298,7 +298,7 @@ function ensureVsCodeJava(runtimeRoot, logger) {
|
|
|
298
298
|
const launcherJarPath = path.join(targetDir, dependency.launcherJarPath);
|
|
299
299
|
const readonlyConfigPath = path.join(targetDir, dependency.readonlyConfigPath);
|
|
300
300
|
if (!pathsExist([jreHomePath, jrePath, lombokJarPath, launcherJarPath, readonlyConfigPath])) {
|
|
301
|
-
if (process.env.
|
|
301
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
302
302
|
throw new Error(`VS Code Java runtime not found at ${targetDir}. Allow downloads or pre-install the extension contents manually.`);
|
|
303
303
|
}
|
|
304
304
|
const collection = new RuntimeDependencyCollection([dependency]);
|
|
@@ -329,7 +329,7 @@ function ensureIntellicode(runtimeRoot, logger) {
|
|
|
329
329
|
const jarPath = path.join(targetDir, INTELLICODE_DEPENDENCY.jarPath);
|
|
330
330
|
const membersPath = path.join(targetDir, INTELLICODE_DEPENDENCY.membersPath);
|
|
331
331
|
if (!pathsExist([jarPath, membersPath])) {
|
|
332
|
-
if (process.env.
|
|
332
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
333
333
|
throw new Error(`Intellicode runtime assets not found at ${targetDir}. Allow downloads or pre-install the VSIX contents manually.`);
|
|
334
334
|
}
|
|
335
335
|
const download = (url) => {
|
|
@@ -643,8 +643,8 @@ function determinePlatformId() {
|
|
|
643
643
|
if (platform === 'linux') {
|
|
644
644
|
return arch === 'arm64' ? 'linux-arm64' : 'linux-x64';
|
|
645
645
|
}
|
|
646
|
-
// fallback for
|
|
647
|
-
return '
|
|
646
|
+
// fallback for unsupported platforms
|
|
647
|
+
return 'linux-x64';
|
|
648
648
|
}
|
|
649
649
|
function pathsExist(paths) {
|
|
650
650
|
return paths.every((candidate) => fs.existsSync(candidate));
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLanguageServerOptions } from '../ls.js';
|
|
2
2
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
3
|
-
export declare class ErlangLanguageServer extends
|
|
3
|
+
export declare class ErlangLanguageServer extends SmartLanguageServer {
|
|
4
4
|
protected readonly handler: NodeLanguageServerHandler;
|
|
5
5
|
private initialized;
|
|
6
6
|
private readyPromise;
|
|
7
7
|
private readyResolver;
|
|
8
8
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
9
9
|
level?: number;
|
|
10
|
-
} | null, repositoryRootPath: string, options?:
|
|
10
|
+
} | null, repositoryRootPath: string, options?: SmartLanguageServerOptions);
|
|
11
11
|
start(): this;
|
|
12
12
|
stop(shutdownTimeout?: number): void;
|
|
13
13
|
private initializeLanguageServer;
|
|
@@ -4,7 +4,7 @@ import path from 'node:path';
|
|
|
4
4
|
import { pathToFileURL } from 'node:url';
|
|
5
5
|
import { Language } from '../ls_config.js';
|
|
6
6
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
8
8
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
9
9
|
const DEFAULT_REQUEST_TIMEOUT_SECONDS = 120;
|
|
10
10
|
const ERLANG_IGNORED_DIRECTORIES = [
|
|
@@ -25,7 +25,7 @@ const READINESS_KEYWORDS = [
|
|
|
25
25
|
'compilation finished',
|
|
26
26
|
'indexing complete'
|
|
27
27
|
];
|
|
28
|
-
export class ErlangLanguageServer extends
|
|
28
|
+
export class ErlangLanguageServer extends SmartLanguageServer {
|
|
29
29
|
handler;
|
|
30
30
|
initialized = false;
|
|
31
31
|
readyPromise;
|
|
@@ -49,7 +49,7 @@ export class ErlangLanguageServer extends SolidLanguageServer {
|
|
|
49
49
|
});
|
|
50
50
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
51
51
|
timeout: requestTimeout,
|
|
52
|
-
|
|
52
|
+
smartLspSettings: options?.smartLspSettings,
|
|
53
53
|
handler: handlerInstance
|
|
54
54
|
});
|
|
55
55
|
if (runtime.erlangVersion) {
|
|
@@ -223,10 +223,10 @@ function ensureErlangRuntime() {
|
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
225
|
function shouldAssumeInstalled() {
|
|
226
|
-
return process.env.
|
|
226
|
+
return process.env.SMART_EDIT_ASSUME_ERLANG === '1' || process.env.SMART_EDIT_ASSUME_ERLANG_LS === '1';
|
|
227
227
|
}
|
|
228
228
|
function getAssumedBinaryPath() {
|
|
229
|
-
const override = process.env.
|
|
229
|
+
const override = process.env.SMART_EDIT_ERLANG_LS_PATH;
|
|
230
230
|
if (override) {
|
|
231
231
|
return override;
|
|
232
232
|
}
|
|
@@ -253,7 +253,7 @@ function findExecutable(candidates) {
|
|
|
253
253
|
if (!candidate) {
|
|
254
254
|
continue;
|
|
255
255
|
}
|
|
256
|
-
const overridePath = process.env.
|
|
256
|
+
const overridePath = process.env.SMART_EDIT_ERLANG_LS_PATH;
|
|
257
257
|
if (overridePath && fs.existsSync(overridePath)) {
|
|
258
258
|
return overridePath;
|
|
259
259
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
2
2
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
3
|
-
export declare class GoplsLanguageServer extends
|
|
3
|
+
export declare class GoplsLanguageServer extends SmartLanguageServer {
|
|
4
4
|
protected readonly handler: NodeLanguageServerHandler;
|
|
5
5
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
6
6
|
level?: number;
|
|
7
7
|
} | null, repositoryRootPath: string, options?: {
|
|
8
8
|
timeout?: number | null;
|
|
9
|
-
|
|
9
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
10
10
|
});
|
|
11
11
|
private registerHandlers;
|
|
12
12
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import { Language } from '../ls_config.js';
|
|
3
3
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
5
5
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
6
6
|
function commandExists(command) {
|
|
7
|
-
if (process.env.
|
|
7
|
+
if (process.env.SMART_EDIT_ASSUME_GOPLS === '1') {
|
|
8
8
|
return true;
|
|
9
9
|
}
|
|
10
10
|
const locator = process.platform === 'win32' ? 'where' : 'which';
|
|
@@ -23,7 +23,7 @@ function mergeIgnored(existing) {
|
|
|
23
23
|
['vendor', 'node_modules', 'dist', 'build'].forEach((entry) => merged.add(entry));
|
|
24
24
|
return Array.from(merged);
|
|
25
25
|
}
|
|
26
|
-
export class GoplsLanguageServer extends
|
|
26
|
+
export class GoplsLanguageServer extends SmartLanguageServer {
|
|
27
27
|
handler;
|
|
28
28
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
29
29
|
ensureGoRuntime();
|
|
@@ -38,7 +38,7 @@ export class GoplsLanguageServer extends SolidLanguageServer {
|
|
|
38
38
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
39
39
|
...options,
|
|
40
40
|
handler,
|
|
41
|
-
|
|
41
|
+
smartLspSettings: options?.smartLspSettings
|
|
42
42
|
});
|
|
43
43
|
this.handler = handler;
|
|
44
44
|
this.registerHandlers();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class IntelephenseLanguageServer extends
|
|
4
|
+
export declare class IntelephenseLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
7
|
level?: number | LogLevel;
|
|
8
8
|
} | null, repositoryRootPath: string, options?: {
|
|
9
9
|
timeout?: number | null;
|
|
10
|
-
|
|
10
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
11
11
|
});
|
|
12
12
|
private registerHandlers;
|
|
13
13
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
5
5
|
import { Language } from '../ls_config.js';
|
|
6
6
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
8
8
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
9
9
|
import { RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
10
10
|
const INTELEPHENSE_DEPENDENCIES = [
|
|
11
11
|
{
|
|
12
12
|
id: 'intelephense',
|
|
13
|
-
command: 'npm install --prefix ./ intelephense@1.
|
|
13
|
+
command: 'npm install --prefix ./ intelephense@1.16.4',
|
|
14
14
|
platformId: 'any'
|
|
15
15
|
}
|
|
16
16
|
];
|
|
@@ -19,7 +19,7 @@ function commandExists(command) {
|
|
|
19
19
|
return spawnSync(locator, [command], ensureDefaultSubprocessOptions({ stdio: 'ignore' })).status === 0;
|
|
20
20
|
}
|
|
21
21
|
function ensureNodeTooling() {
|
|
22
|
-
if (process.env.
|
|
22
|
+
if (process.env.SMART_EDIT_ASSUME_INTELEPHENSE === '1') {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
if (!commandExists('node')) {
|
|
@@ -49,8 +49,8 @@ function resolveBinaryPath(runtimeDir) {
|
|
|
49
49
|
return path.join(base, 'intelephense');
|
|
50
50
|
}
|
|
51
51
|
function ensureIntelephenseBinary(runtimeDir, dependencies, loggerLevel) {
|
|
52
|
-
const { logger } =
|
|
53
|
-
name: '
|
|
52
|
+
const { logger } = createSmartEditLogger({
|
|
53
|
+
name: 'smart-lsp.language_servers.intelephense',
|
|
54
54
|
emitToConsole: false,
|
|
55
55
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
56
56
|
});
|
|
@@ -58,8 +58,8 @@ function ensureIntelephenseBinary(runtimeDir, dependencies, loggerLevel) {
|
|
|
58
58
|
if (fs.existsSync(binaryPath)) {
|
|
59
59
|
return binaryPath;
|
|
60
60
|
}
|
|
61
|
-
if (process.env.
|
|
62
|
-
throw new Error(`Intelephense executable not found at ${binaryPath}. Allow downloads by unsetting
|
|
61
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
62
|
+
throw new Error(`Intelephense executable not found at ${binaryPath}. Allow downloads by unsetting SMART_EDIT_SKIP_RUNTIME_INSTALL or install manually.`);
|
|
63
63
|
}
|
|
64
64
|
ensureNodeTooling();
|
|
65
65
|
logger.info('Installing intelephense via npm');
|
|
@@ -82,14 +82,14 @@ function mergeIgnoredPaths(existing) {
|
|
|
82
82
|
['node_modules', 'vendor', 'cache'].forEach((entry) => merged.add(entry));
|
|
83
83
|
return Array.from(merged);
|
|
84
84
|
}
|
|
85
|
-
export class IntelephenseLanguageServer extends
|
|
85
|
+
export class IntelephenseLanguageServer extends SmartLanguageServer {
|
|
86
86
|
handler;
|
|
87
87
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
88
88
|
const augmentedConfig = {
|
|
89
89
|
...config,
|
|
90
90
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths)
|
|
91
91
|
};
|
|
92
|
-
const solidSettings = new
|
|
92
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
93
93
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
94
94
|
const dependencies = new RuntimeDependencyCollection(INTELEPHENSE_DEPENDENCIES);
|
|
95
95
|
const binaryPath = ensureIntelephenseBinary(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -100,7 +100,7 @@ export class IntelephenseLanguageServer extends SolidLanguageServer {
|
|
|
100
100
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
101
101
|
...options,
|
|
102
102
|
handler,
|
|
103
|
-
|
|
103
|
+
smartLspSettings: options?.smartLspSettings
|
|
104
104
|
});
|
|
105
105
|
this.handler = handler;
|
|
106
106
|
this.registerHandlers();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class JediLanguageServer extends
|
|
1
|
+
import type { LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
|
+
export declare class JediLanguageServer extends SmartLanguageServer {
|
|
4
4
|
private readonly nodeHandler;
|
|
5
5
|
private initialized;
|
|
6
6
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
7
|
level?: number | LogLevel;
|
|
8
8
|
} | null, repositoryRootPath: string, options?: {
|
|
9
9
|
timeout?: number | null;
|
|
10
|
-
|
|
10
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
11
11
|
});
|
|
12
12
|
start(): this;
|
|
13
13
|
stop(shutdownTimeout?: number): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
3
|
import { Language } from '../ls_config.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
5
5
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
6
6
|
const JEDI_IGNORED_PATTERNS = ['**/venv', '**/.venv', '**/__pycache__'];
|
|
7
|
-
export class JediLanguageServer extends
|
|
7
|
+
export class JediLanguageServer extends SmartLanguageServer {
|
|
8
8
|
nodeHandler;
|
|
9
9
|
initialized = false;
|
|
10
10
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -19,7 +19,7 @@ export class JediLanguageServer extends SolidLanguageServer {
|
|
|
19
19
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
20
20
|
...options,
|
|
21
21
|
handler,
|
|
22
|
-
|
|
22
|
+
smartLspSettings: options?.smartLspSettings
|
|
23
23
|
});
|
|
24
24
|
this.nodeHandler = handler;
|
|
25
25
|
this.registerHandlers();
|
|
@@ -90,7 +90,7 @@ export class JediLanguageServer extends SolidLanguageServer {
|
|
|
90
90
|
const rootUri = pathToFileURL(this.repositoryRootPath).href;
|
|
91
91
|
return {
|
|
92
92
|
processId: process.pid,
|
|
93
|
-
clientInfo: { name: '
|
|
93
|
+
clientInfo: { name: 'Smart-Edit', version: '0.1.0' },
|
|
94
94
|
locale: 'en',
|
|
95
95
|
rootPath: this.repositoryRootPath,
|
|
96
96
|
rootUri,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class KotlinLanguageServer extends
|
|
4
|
+
export declare class KotlinLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private readonly runtimePaths;
|
|
7
7
|
private initialized;
|
|
@@ -9,7 +9,7 @@ export declare class KotlinLanguageServer extends SolidLanguageServer {
|
|
|
9
9
|
level?: number | LogLevel;
|
|
10
10
|
} | null, repositoryRootPath: string, options?: {
|
|
11
11
|
timeout?: number | null;
|
|
12
|
-
|
|
12
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
13
13
|
});
|
|
14
14
|
start(): this;
|
|
15
15
|
stop(shutdownTimeout?: number): void;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
|
-
import {
|
|
4
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
5
5
|
import { Language } from '../ls_config.js';
|
|
6
|
-
import {
|
|
6
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
7
7
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
8
8
|
import { Platform, RuntimeDependencyCollection } from './common.js';
|
|
9
9
|
const KOTLIN_LSP_DEPENDENCY = {
|
|
@@ -62,14 +62,14 @@ const JAVA_DEPENDENCY_FALLBACKS = {
|
|
|
62
62
|
'linux-musl-arm64': 'linux-arm64',
|
|
63
63
|
'linux-x86': 'linux-x64'
|
|
64
64
|
};
|
|
65
|
-
export class KotlinLanguageServer extends
|
|
65
|
+
export class KotlinLanguageServer extends SmartLanguageServer {
|
|
66
66
|
handler;
|
|
67
67
|
runtimePaths;
|
|
68
68
|
initialized = false;
|
|
69
69
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
70
|
-
const solidSettings = new
|
|
71
|
-
const { logger } =
|
|
72
|
-
name: '
|
|
70
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
71
|
+
const { logger } = createSmartEditLogger({
|
|
72
|
+
name: 'smart-lsp.language_servers.kotlin',
|
|
73
73
|
emitToConsole: false,
|
|
74
74
|
level: loggerLike?.level === undefined ? undefined : coerceLogLevel(loggerLike.level)
|
|
75
75
|
});
|
|
@@ -86,7 +86,7 @@ export class KotlinLanguageServer extends SolidLanguageServer {
|
|
|
86
86
|
super(config, loggerLike, repositoryRootPath, {
|
|
87
87
|
...options,
|
|
88
88
|
handler,
|
|
89
|
-
|
|
89
|
+
smartLspSettings: options?.smartLspSettings
|
|
90
90
|
});
|
|
91
91
|
this.handler = handler;
|
|
92
92
|
this.runtimePaths = runtimePaths;
|
|
@@ -187,7 +187,7 @@ function ensureKotlinExecutable(runtimeRoot, logger) {
|
|
|
187
187
|
const scriptPath = path.join(runtimeRoot, scriptName);
|
|
188
188
|
if (!fs.existsSync(scriptPath)) {
|
|
189
189
|
if (shouldSkipRuntimeInstall()) {
|
|
190
|
-
throw new Error(`Kotlin language server script not found at ${scriptPath}. Set
|
|
190
|
+
throw new Error(`Kotlin language server script not found at ${scriptPath}. Set SMART_EDIT_SKIP_RUNTIME_INSTALL=0 or install Kotlin LSP manually.`);
|
|
191
191
|
}
|
|
192
192
|
logger.info('Downloading Kotlin language server runtime dependency.');
|
|
193
193
|
const dependencies = new RuntimeDependencyCollection([KOTLIN_LSP_DEPENDENCY]);
|
|
@@ -249,7 +249,7 @@ function resolveJavaDependency(platform) {
|
|
|
249
249
|
throw new Error(`Unsupported platform for Kotlin language server Java runtime: ${platform}`);
|
|
250
250
|
}
|
|
251
251
|
function shouldSkipRuntimeInstall() {
|
|
252
|
-
return process.env.
|
|
252
|
+
return process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1';
|
|
253
253
|
}
|
|
254
254
|
function extractWindowMessage(payload) {
|
|
255
255
|
if (!payload || typeof payload !== 'object') {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class LuaLanguageServer extends
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
|
+
export declare class LuaLanguageServer extends SmartLanguageServer {
|
|
4
4
|
private readonly handlerInstance;
|
|
5
5
|
private initialized;
|
|
6
6
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
7
|
level?: number | LogLevel;
|
|
8
8
|
} | null, repositoryRootPath: string, options?: {
|
|
9
9
|
timeout?: number | null;
|
|
10
|
-
|
|
10
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
11
11
|
});
|
|
12
12
|
start(): this;
|
|
13
13
|
stop(shutdownTimeout?: number): void;
|
|
@@ -3,10 +3,10 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { pathToFileURL } from 'node:url';
|
|
6
|
-
import {
|
|
6
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
7
7
|
import { Language } from '../ls_config.js';
|
|
8
8
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
9
|
-
import {
|
|
9
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
10
10
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
11
11
|
import { RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
12
12
|
const LUA_LS_VERSION = '3.15.0';
|
|
@@ -48,7 +48,7 @@ const LUA_LS_DEPENDENCIES = [
|
|
|
48
48
|
}
|
|
49
49
|
];
|
|
50
50
|
const LUA_IGNORED_DIRECTORIES = ['.luarocks', 'lua_modules', 'node_modules', 'build', 'dist', '.cache'];
|
|
51
|
-
export class LuaLanguageServer extends
|
|
51
|
+
export class LuaLanguageServer extends SmartLanguageServer {
|
|
52
52
|
handlerInstance;
|
|
53
53
|
initialized = false;
|
|
54
54
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -56,7 +56,7 @@ export class LuaLanguageServer extends SolidLanguageServer {
|
|
|
56
56
|
...config,
|
|
57
57
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths, LUA_IGNORED_DIRECTORIES)
|
|
58
58
|
};
|
|
59
|
-
const solidSettings = new
|
|
59
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
60
60
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
61
61
|
const dependencies = new RuntimeDependencyCollection(LUA_LS_DEPENDENCIES);
|
|
62
62
|
const binaryPath = ensureLuaLanguageServerBinary(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -67,7 +67,7 @@ export class LuaLanguageServer extends SolidLanguageServer {
|
|
|
67
67
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
68
68
|
...options,
|
|
69
69
|
handler,
|
|
70
|
-
|
|
70
|
+
smartLspSettings: options?.smartLspSettings
|
|
71
71
|
});
|
|
72
72
|
this.handlerInstance = handler;
|
|
73
73
|
this.registerHandlers();
|
|
@@ -152,7 +152,7 @@ function resolveRuntimeDirectory(settings) {
|
|
|
152
152
|
return runtimeDir;
|
|
153
153
|
}
|
|
154
154
|
function ensureLuaLanguageServerBinary(runtimeDir, dependencies, loggerLevel) {
|
|
155
|
-
const overridePath = process.env.
|
|
155
|
+
const overridePath = process.env.SMART_EDIT_LUA_LS_PATH;
|
|
156
156
|
if (overridePath && fs.existsSync(overridePath)) {
|
|
157
157
|
return overridePath;
|
|
158
158
|
}
|
|
@@ -168,11 +168,11 @@ function ensureLuaLanguageServerBinary(runtimeDir, dependencies, loggerLevel) {
|
|
|
168
168
|
if (maybeInstalled) {
|
|
169
169
|
return maybeInstalled;
|
|
170
170
|
}
|
|
171
|
-
if (process.env.
|
|
172
|
-
throw new Error('lua-language-server binary not found. Allow downloads by unsetting
|
|
171
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
172
|
+
throw new Error('lua-language-server binary not found. Allow downloads by unsetting SMART_EDIT_SKIP_RUNTIME_INSTALL or set SMART_EDIT_LUA_LS_PATH.');
|
|
173
173
|
}
|
|
174
|
-
const { logger } =
|
|
175
|
-
name: '
|
|
174
|
+
const { logger } = createSmartEditLogger({
|
|
175
|
+
name: 'smart-lsp.language_servers.lua',
|
|
176
176
|
emitToConsole: false,
|
|
177
177
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
178
178
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { LogLevel } from '../../
|
|
2
|
-
import { type DocumentSymbolResult, type DocumentSymbolsOptions, type LanguageServerConfigLike, type
|
|
1
|
+
import type { LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { type DocumentSymbolResult, type DocumentSymbolsOptions, type LanguageServerConfigLike, type SmartLanguageServerOptions, type UnifiedSymbolInformation, SmartLanguageServer } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class NixLanguageServer extends
|
|
4
|
+
export declare class NixLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private initialized;
|
|
7
7
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
8
8
|
level?: number | LogLevel;
|
|
9
|
-
} | null, repositoryRootPath: string, options?:
|
|
9
|
+
} | null, repositoryRootPath: string, options?: SmartLanguageServerOptions);
|
|
10
10
|
start(): this;
|
|
11
11
|
stop(shutdownTimeout?: number): void;
|
|
12
12
|
requestDocumentSymbols(relativePath: string, options?: DocumentSymbolsOptions): DocumentSymbolResult;
|
|
@@ -5,10 +5,10 @@ import path from 'node:path';
|
|
|
5
5
|
import { pathToFileURL } from 'node:url';
|
|
6
6
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
7
7
|
import { Language } from '../ls_config.js';
|
|
8
|
-
import {
|
|
8
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
9
9
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
10
|
-
const NIXD_ASSUME_ENV = '
|
|
11
|
-
const NIXD_PATH_ENV = '
|
|
10
|
+
const NIXD_ASSUME_ENV = 'SMART_EDIT_ASSUME_NIXD';
|
|
11
|
+
const NIXD_PATH_ENV = 'SMART_EDIT_NIXD_PATH';
|
|
12
12
|
const NIX_IGNORED_PATTERNS = [
|
|
13
13
|
'**/result',
|
|
14
14
|
'**/result/**',
|
|
@@ -17,7 +17,7 @@ const NIX_IGNORED_PATTERNS = [
|
|
|
17
17
|
'**/.direnv',
|
|
18
18
|
'**/.direnv/**'
|
|
19
19
|
];
|
|
20
|
-
export class NixLanguageServer extends
|
|
20
|
+
export class NixLanguageServer extends SmartLanguageServer {
|
|
21
21
|
handler;
|
|
22
22
|
initialized = false;
|
|
23
23
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -37,7 +37,7 @@ export class NixLanguageServer extends SolidLanguageServer {
|
|
|
37
37
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
38
38
|
...options,
|
|
39
39
|
handler,
|
|
40
|
-
|
|
40
|
+
smartLspSettings: options?.smartLspSettings
|
|
41
41
|
});
|
|
42
42
|
this.handler = handler;
|
|
43
43
|
this.registerHandlers();
|
|
@@ -258,8 +258,8 @@ function ensureNixdRuntime() {
|
|
|
258
258
|
verifyNixdBinary(detected);
|
|
259
259
|
return detected;
|
|
260
260
|
}
|
|
261
|
-
if (process.env.
|
|
262
|
-
throw new Error('nixd バイナリが見つかりません。
|
|
261
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
262
|
+
throw new Error('nixd バイナリが見つかりません。SMART_EDIT_SKIP_RUNTIME_INSTALL=0 で自動インストールを許可するか、nixd を手動でインストールしてください。');
|
|
263
263
|
}
|
|
264
264
|
const installed = installNixdViaNix();
|
|
265
265
|
if (installed) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class PyrightLanguageServer extends
|
|
1
|
+
import type { LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
|
+
export declare class PyrightLanguageServer extends SmartLanguageServer {
|
|
4
4
|
private readonly nodeHandler;
|
|
5
5
|
private initialized;
|
|
6
6
|
private foundSourceFiles;
|
|
@@ -8,7 +8,7 @@ export declare class PyrightLanguageServer extends SolidLanguageServer {
|
|
|
8
8
|
level?: number | LogLevel;
|
|
9
9
|
} | null, repositoryRootPath: string, options?: {
|
|
10
10
|
timeout?: number | null;
|
|
11
|
-
|
|
11
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
12
12
|
});
|
|
13
13
|
start(): this;
|
|
14
14
|
stop(shutdownTimeout?: number): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
3
|
import { Language } from '../ls_config.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
5
5
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
6
6
|
const PYRIGHT_IGNORED_PATTERNS = [
|
|
7
7
|
'**/__pycache__',
|
|
@@ -18,7 +18,7 @@ function mergeIgnoredPaths(existing, additions) {
|
|
|
18
18
|
}
|
|
19
19
|
return Array.from(merged);
|
|
20
20
|
}
|
|
21
|
-
export class PyrightLanguageServer extends
|
|
21
|
+
export class PyrightLanguageServer extends SmartLanguageServer {
|
|
22
22
|
nodeHandler;
|
|
23
23
|
initialized = false;
|
|
24
24
|
foundSourceFiles = false;
|
|
@@ -34,7 +34,7 @@ export class PyrightLanguageServer extends SolidLanguageServer {
|
|
|
34
34
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
35
35
|
...options,
|
|
36
36
|
handler,
|
|
37
|
-
|
|
37
|
+
smartLspSettings: options?.smartLspSettings
|
|
38
38
|
});
|
|
39
39
|
this.nodeHandler = handler;
|
|
40
40
|
this.registerHandlers();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import type { LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class RLanguageServer extends
|
|
4
|
+
export declare class RLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private initialized;
|
|
7
7
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
8
8
|
level?: number | LogLevel;
|
|
9
9
|
} | null, repositoryRootPath: string, options?: {
|
|
10
10
|
timeout?: number | null;
|
|
11
|
-
|
|
11
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
12
12
|
});
|
|
13
13
|
start(): this;
|
|
14
14
|
stop(shutdownTimeout?: number): void;
|