@nogataka/smart-edit 0.1.0 → 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 +143 -66
- 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 +13 -3
- 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 -816
- package/dist/serena/resources/dashboard/index.html +0 -312
- 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
|
@@ -3,10 +3,10 @@ import path from 'node:path';
|
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
4
|
import { Language } from '../ls_config.js';
|
|
5
5
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
6
|
-
import {
|
|
6
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
7
7
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
8
|
-
const R_ASSUME_ENV = '
|
|
9
|
-
const R_BINARY_ENV = '
|
|
8
|
+
const R_ASSUME_ENV = 'SMART_EDIT_ASSUME_R';
|
|
9
|
+
const R_BINARY_ENV = 'SMART_EDIT_R_BINARY';
|
|
10
10
|
const DEFAULT_R_BINARY = process.platform === 'win32' ? 'R.exe' : 'R';
|
|
11
11
|
const R_IGNORED_PATTERNS = [
|
|
12
12
|
'**/renv',
|
|
@@ -18,7 +18,7 @@ const R_IGNORED_PATTERNS = [
|
|
|
18
18
|
'**/vignettes',
|
|
19
19
|
'**/vignettes/**'
|
|
20
20
|
];
|
|
21
|
-
export class RLanguageServer extends
|
|
21
|
+
export class RLanguageServer extends SmartLanguageServer {
|
|
22
22
|
handler;
|
|
23
23
|
initialized = false;
|
|
24
24
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -36,7 +36,7 @@ export class RLanguageServer extends SolidLanguageServer {
|
|
|
36
36
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
37
37
|
...options,
|
|
38
38
|
handler,
|
|
39
|
-
|
|
39
|
+
smartLspSettings: options?.smartLspSettings
|
|
40
40
|
});
|
|
41
41
|
this.handler = handler;
|
|
42
42
|
this.registerHandlers();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
2
|
+
export declare const RUBY_BINARY_ENV = "SMART_EDIT_RUBY_BINARY";
|
|
3
|
+
export declare const BUNDLE_BINARY_ENV = "SMART_EDIT_BUNDLE_BINARY";
|
|
4
|
+
export declare function resolveRubyBinary(): string;
|
|
5
|
+
export declare function ensureRubyAvailable(logger: SmartEditLogger, repositoryRootPath: string): void;
|
|
6
|
+
export declare function findCommand(command: string): string | null;
|
|
7
|
+
export declare function findBundleExecutable(repositoryRootPath: string): string | null;
|
|
8
|
+
export declare function gemfileLockContains(gemfileLockPath: string, gemName: string): boolean;
|
|
9
|
+
export declare function installGem(gemName: string, logger: SmartEditLogger, repositoryRootPath: string): void;
|
|
10
|
+
export declare function buildRubyExcludePatterns(repositoryRootPath: string): string[];
|
|
@@ -2,8 +2,8 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
5
|
-
export const RUBY_BINARY_ENV = '
|
|
6
|
-
export const BUNDLE_BINARY_ENV = '
|
|
5
|
+
export const RUBY_BINARY_ENV = 'SMART_EDIT_RUBY_BINARY';
|
|
6
|
+
export const BUNDLE_BINARY_ENV = 'SMART_EDIT_BUNDLE_BINARY';
|
|
7
7
|
const DEFAULT_RUBY_BINARY = process.platform === 'win32' ? 'ruby.exe' : 'ruby';
|
|
8
8
|
const DEFAULT_BUNDLE_CANDIDATES = process.platform === 'win32'
|
|
9
9
|
? ['bundle.bat', 'bundle.cmd', 'bundle.exe', 'bundle']
|
|
@@ -77,8 +77,8 @@ export function gemfileLockContains(gemfileLockPath, gemName) {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
export function installGem(gemName, logger, repositoryRootPath) {
|
|
80
|
-
if (process.env.
|
|
81
|
-
throw new Error(`${gemName} が見つかりません。
|
|
80
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
81
|
+
throw new Error(`${gemName} が見つかりません。SMART_EDIT_SKIP_RUNTIME_INSTALL=1 を解除するか、` +
|
|
82
82
|
`gem install ${gemName} を手動で実行してください。`);
|
|
83
83
|
}
|
|
84
84
|
logger.info(`gem install ${gemName} を試行します`);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class RubyLspLanguageServer 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 RubyLspLanguageServer 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;
|
|
@@ -1,14 +1,14 @@
|
|
|
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, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
7
7
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
8
8
|
import { buildRubyExcludePatterns, ensureRubyAvailable, findBundleExecutable, findCommand, gemfileLockContains, installGem } from './ruby_common.js';
|
|
9
|
-
const RUBY_LSP_ASSUME_ENV = '
|
|
10
|
-
const RUBY_LSP_PATH_ENV = '
|
|
11
|
-
const RUBY_LSP_LOGGER_NAME = '
|
|
9
|
+
const RUBY_LSP_ASSUME_ENV = 'SMART_EDIT_ASSUME_RUBY_LSP';
|
|
10
|
+
const RUBY_LSP_PATH_ENV = 'SMART_EDIT_RUBY_LSP_PATH';
|
|
11
|
+
const RUBY_LSP_LOGGER_NAME = 'smart-lsp.language_servers.ruby_lsp';
|
|
12
12
|
const DEFAULT_REQUEST_TIMEOUT = 30; // seconds
|
|
13
13
|
const RUBY_IGNORED_DIRECTORIES = [
|
|
14
14
|
'vendor',
|
|
@@ -24,7 +24,7 @@ const RUBY_IGNORED_DIRECTORIES = [
|
|
|
24
24
|
'public/webpack',
|
|
25
25
|
'public/assets'
|
|
26
26
|
];
|
|
27
|
-
export class RubyLspLanguageServer extends
|
|
27
|
+
export class RubyLspLanguageServer extends SmartLanguageServer {
|
|
28
28
|
handlerInstance;
|
|
29
29
|
initialized = false;
|
|
30
30
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -32,7 +32,7 @@ export class RubyLspLanguageServer extends SolidLanguageServer {
|
|
|
32
32
|
...config,
|
|
33
33
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths, RUBY_IGNORED_DIRECTORIES)
|
|
34
34
|
};
|
|
35
|
-
const { logger: runtimeLogger } =
|
|
35
|
+
const { logger: runtimeLogger } = createSmartEditLogger({
|
|
36
36
|
name: RUBY_LSP_LOGGER_NAME,
|
|
37
37
|
emitToConsole: false,
|
|
38
38
|
level: loggerLike?.level === undefined ? undefined : coerceLogLevel(loggerLike.level)
|
|
@@ -48,7 +48,7 @@ export class RubyLspLanguageServer extends SolidLanguageServer {
|
|
|
48
48
|
...options,
|
|
49
49
|
handler,
|
|
50
50
|
timeout: options?.timeout ?? DEFAULT_REQUEST_TIMEOUT,
|
|
51
|
-
|
|
51
|
+
smartLspSettings: options?.smartLspSettings
|
|
52
52
|
});
|
|
53
53
|
this.handlerInstance = handler;
|
|
54
54
|
this.registerHandlers();
|
|
@@ -129,11 +129,11 @@ export class RubyLspLanguageServer extends SolidLanguageServer {
|
|
|
129
129
|
function resolveRubyLspCommand(repositoryRootPath, logger) {
|
|
130
130
|
const override = process.env[RUBY_LSP_PATH_ENV]?.trim();
|
|
131
131
|
if (override) {
|
|
132
|
-
logger.info(`
|
|
132
|
+
logger.info(`SMART_EDIT_RUBY_LSP_PATH を使用: ${override}`);
|
|
133
133
|
return parseCommandOverride(override);
|
|
134
134
|
}
|
|
135
135
|
if (process.env[RUBY_LSP_ASSUME_ENV] === '1') {
|
|
136
|
-
logger.info('
|
|
136
|
+
logger.info('SMART_EDIT_ASSUME_RUBY_LSP=1 のためランタイム検証をスキップします');
|
|
137
137
|
const fallback = findCommand('ruby-lsp') ?? 'ruby-lsp';
|
|
138
138
|
return [fallback];
|
|
139
139
|
}
|
|
@@ -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 RustAnalyzerLanguageServer extends
|
|
4
|
+
export declare class RustAnalyzerLanguageServer 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
|
}
|
|
@@ -2,7 +2,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import { Language } from '../ls_config.js';
|
|
4
4
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
6
6
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
7
7
|
function getRustupVersion() {
|
|
8
8
|
const result = spawnSync('rustup', ['--version'], ensureDefaultSubprocessOptions({ encoding: 'utf-8' }));
|
|
@@ -28,7 +28,7 @@ function whichBinary(command) {
|
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
30
|
function ensureRustAnalyzerBinary() {
|
|
31
|
-
const overridePath = process.env.
|
|
31
|
+
const overridePath = process.env.SMART_EDIT_RUST_ANALYZER_PATH;
|
|
32
32
|
if (overridePath) {
|
|
33
33
|
return overridePath;
|
|
34
34
|
}
|
|
@@ -59,7 +59,7 @@ function mergeIgnoredPaths(existing) {
|
|
|
59
59
|
merged.add('target');
|
|
60
60
|
return Array.from(merged);
|
|
61
61
|
}
|
|
62
|
-
export class RustAnalyzerLanguageServer extends
|
|
62
|
+
export class RustAnalyzerLanguageServer extends SmartLanguageServer {
|
|
63
63
|
handler;
|
|
64
64
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
65
65
|
const augmentedConfig = {
|
|
@@ -74,7 +74,7 @@ export class RustAnalyzerLanguageServer extends SolidLanguageServer {
|
|
|
74
74
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
75
75
|
...options,
|
|
76
76
|
handler,
|
|
77
|
-
|
|
77
|
+
smartLspSettings: options?.smartLspSettings
|
|
78
78
|
});
|
|
79
79
|
this.handler = handler;
|
|
80
80
|
this.registerHandlers();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class SolargraphLanguageServer 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 SolargraphLanguageServer 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;
|
|
@@ -1,14 +1,14 @@
|
|
|
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, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
7
7
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
8
8
|
import { buildRubyExcludePatterns, ensureRubyAvailable, findBundleExecutable, findCommand, gemfileLockContains, installGem } from './ruby_common.js';
|
|
9
|
-
const SOLARGRAPH_ASSUME_ENV = '
|
|
10
|
-
const SOLARGRAPH_PATH_ENV = '
|
|
11
|
-
const SOLARGRAPH_LOGGER_NAME = '
|
|
9
|
+
const SOLARGRAPH_ASSUME_ENV = 'SMART_EDIT_ASSUME_SOLARGRAPH';
|
|
10
|
+
const SOLARGRAPH_PATH_ENV = 'SMART_EDIT_SOLARGRAPH_PATH';
|
|
11
|
+
const SOLARGRAPH_LOGGER_NAME = 'smart-lsp.language_servers.solargraph';
|
|
12
12
|
const DEFAULT_TIMEOUT = 120; // seconds
|
|
13
13
|
const SOLARGRAPH_IGNORED_DIRECTORIES = [
|
|
14
14
|
'vendor',
|
|
@@ -21,7 +21,7 @@ const SOLARGRAPH_IGNORED_DIRECTORIES = [
|
|
|
21
21
|
'node_modules',
|
|
22
22
|
'storage'
|
|
23
23
|
];
|
|
24
|
-
export class SolargraphLanguageServer extends
|
|
24
|
+
export class SolargraphLanguageServer extends SmartLanguageServer {
|
|
25
25
|
handlerInstance;
|
|
26
26
|
initialized = false;
|
|
27
27
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -29,7 +29,7 @@ export class SolargraphLanguageServer extends SolidLanguageServer {
|
|
|
29
29
|
...config,
|
|
30
30
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths, SOLARGRAPH_IGNORED_DIRECTORIES)
|
|
31
31
|
};
|
|
32
|
-
const { logger: runtimeLogger } =
|
|
32
|
+
const { logger: runtimeLogger } = createSmartEditLogger({
|
|
33
33
|
name: SOLARGRAPH_LOGGER_NAME,
|
|
34
34
|
emitToConsole: false,
|
|
35
35
|
level: loggerLike?.level === undefined ? undefined : coerceLogLevel(loggerLike.level)
|
|
@@ -45,7 +45,7 @@ export class SolargraphLanguageServer extends SolidLanguageServer {
|
|
|
45
45
|
...options,
|
|
46
46
|
handler,
|
|
47
47
|
timeout: options?.timeout ?? DEFAULT_TIMEOUT,
|
|
48
|
-
|
|
48
|
+
smartLspSettings: options?.smartLspSettings
|
|
49
49
|
});
|
|
50
50
|
this.handlerInstance = handler;
|
|
51
51
|
this.registerHandlers();
|
|
@@ -128,11 +128,11 @@ export class SolargraphLanguageServer extends SolidLanguageServer {
|
|
|
128
128
|
function resolveSolargraphCommand(repositoryRootPath, logger) {
|
|
129
129
|
const override = process.env[SOLARGRAPH_PATH_ENV]?.trim();
|
|
130
130
|
if (override) {
|
|
131
|
-
logger.info(`
|
|
131
|
+
logger.info(`SMART_EDIT_SOLARGRAPH_PATH を使用: ${override}`);
|
|
132
132
|
return parseCommandOverride(override, true);
|
|
133
133
|
}
|
|
134
134
|
if (process.env[SOLARGRAPH_ASSUME_ENV] === '1') {
|
|
135
|
-
logger.info('
|
|
135
|
+
logger.info('SMART_EDIT_ASSUME_SOLARGRAPH=1 によりランタイム検証をスキップします');
|
|
136
136
|
const fallback = findCommand('solargraph') ?? 'solargraph';
|
|
137
137
|
return [fallback, 'stdio'];
|
|
138
138
|
}
|
|
@@ -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 ReferenceInSymbol, type ReferencingSymbolsOptions, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class SourceKitLanguageServer extends
|
|
4
|
+
export declare class SourceKitLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private readonly versionDescription;
|
|
7
7
|
private initialized;
|
|
@@ -11,7 +11,7 @@ export declare class SourceKitLanguageServer extends SolidLanguageServer {
|
|
|
11
11
|
level?: number | LogLevel;
|
|
12
12
|
} | null, repositoryRootPath: string, options?: {
|
|
13
13
|
timeout?: number | null;
|
|
14
|
-
|
|
14
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
15
15
|
});
|
|
16
16
|
start(): this;
|
|
17
17
|
stop(shutdownTimeout?: number): void;
|
|
@@ -2,13 +2,13 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
4
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SmartLanguageServer, registerLanguageServer } from '../ls.js';
|
|
6
6
|
import { Language } from '../ls_config.js';
|
|
7
7
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
8
|
-
const SOURCEKIT_ASSUME_ENV = '
|
|
9
|
-
const SOURCEKIT_PATH_ENV = '
|
|
10
|
-
const SOURCEKIT_INITIAL_DELAY_ENV = '
|
|
11
|
-
const SOURCEKIT_RETRY_DELAY_ENV = '
|
|
8
|
+
const SOURCEKIT_ASSUME_ENV = 'SMART_EDIT_ASSUME_SOURCEKIT';
|
|
9
|
+
const SOURCEKIT_PATH_ENV = 'SMART_EDIT_SOURCEKIT_PATH';
|
|
10
|
+
const SOURCEKIT_INITIAL_DELAY_ENV = 'SMART_EDIT_SOURCEKIT_REFERENCE_INITIAL_DELAY_MS';
|
|
11
|
+
const SOURCEKIT_RETRY_DELAY_ENV = 'SMART_EDIT_SOURCEKIT_REFERENCE_RETRY_DELAY_MS';
|
|
12
12
|
const SOURCEKIT_IGNORED_DIRECTORIES = ['.build', '.swiftpm', 'node_modules', 'dist', 'build'];
|
|
13
13
|
const CAPABILITIES_TEMPLATE = Object.freeze({
|
|
14
14
|
general: {
|
|
@@ -237,7 +237,7 @@ const INITIALIZATION_OPTIONS_TEMPLATE = Object.freeze({
|
|
|
237
237
|
'workspace/getReferenceDocument': true,
|
|
238
238
|
'workspace/peekDocuments': true
|
|
239
239
|
});
|
|
240
|
-
export class SourceKitLanguageServer extends
|
|
240
|
+
export class SourceKitLanguageServer extends SmartLanguageServer {
|
|
241
241
|
handler;
|
|
242
242
|
versionDescription;
|
|
243
243
|
initialized = false;
|
|
@@ -258,7 +258,7 @@ export class SourceKitLanguageServer extends SolidLanguageServer {
|
|
|
258
258
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
259
259
|
...options,
|
|
260
260
|
handler,
|
|
261
|
-
|
|
261
|
+
smartLspSettings: options?.smartLspSettings
|
|
262
262
|
});
|
|
263
263
|
this.handler = handler;
|
|
264
264
|
this.versionDescription = assumed ? `${version} (assumed)` : version;
|
|
@@ -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 TerraformLanguageServer extends
|
|
4
|
+
export declare class TerraformLanguageServer 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,17 +1,17 @@
|
|
|
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 TERRAFORM_DEPENDENCIES = [
|
|
11
11
|
{
|
|
12
12
|
id: 'terraform-ls',
|
|
13
13
|
description: 'terraform-ls for macOS (ARM64)',
|
|
14
|
-
url: 'https://releases.hashicorp.com/terraform-ls/0.
|
|
14
|
+
url: 'https://releases.hashicorp.com/terraform-ls/0.38.3/terraform-ls_0.38.3_darwin_arm64.zip',
|
|
15
15
|
platformId: 'osx-arm64',
|
|
16
16
|
archiveType: 'zip',
|
|
17
17
|
binaryName: 'terraform-ls'
|
|
@@ -19,7 +19,7 @@ const TERRAFORM_DEPENDENCIES = [
|
|
|
19
19
|
{
|
|
20
20
|
id: 'terraform-ls',
|
|
21
21
|
description: 'terraform-ls for macOS (x64)',
|
|
22
|
-
url: 'https://releases.hashicorp.com/terraform-ls/0.
|
|
22
|
+
url: 'https://releases.hashicorp.com/terraform-ls/0.38.3/terraform-ls_0.38.3_darwin_amd64.zip',
|
|
23
23
|
platformId: 'osx-x64',
|
|
24
24
|
archiveType: 'zip',
|
|
25
25
|
binaryName: 'terraform-ls'
|
|
@@ -27,7 +27,7 @@ const TERRAFORM_DEPENDENCIES = [
|
|
|
27
27
|
{
|
|
28
28
|
id: 'terraform-ls',
|
|
29
29
|
description: 'terraform-ls for Linux (ARM64)',
|
|
30
|
-
url: 'https://releases.hashicorp.com/terraform-ls/0.
|
|
30
|
+
url: 'https://releases.hashicorp.com/terraform-ls/0.38.3/terraform-ls_0.38.3_linux_arm64.zip',
|
|
31
31
|
platformId: 'linux-arm64',
|
|
32
32
|
archiveType: 'zip',
|
|
33
33
|
binaryName: 'terraform-ls'
|
|
@@ -35,7 +35,7 @@ const TERRAFORM_DEPENDENCIES = [
|
|
|
35
35
|
{
|
|
36
36
|
id: 'terraform-ls',
|
|
37
37
|
description: 'terraform-ls for Linux (x64)',
|
|
38
|
-
url: 'https://releases.hashicorp.com/terraform-ls/0.
|
|
38
|
+
url: 'https://releases.hashicorp.com/terraform-ls/0.38.3/terraform-ls_0.38.3_linux_amd64.zip',
|
|
39
39
|
platformId: 'linux-x64',
|
|
40
40
|
archiveType: 'zip',
|
|
41
41
|
binaryName: 'terraform-ls'
|
|
@@ -43,7 +43,7 @@ const TERRAFORM_DEPENDENCIES = [
|
|
|
43
43
|
{
|
|
44
44
|
id: 'terraform-ls',
|
|
45
45
|
description: 'terraform-ls for Windows (x64)',
|
|
46
|
-
url: 'https://releases.hashicorp.com/terraform-ls/0.
|
|
46
|
+
url: 'https://releases.hashicorp.com/terraform-ls/0.38.3/terraform-ls_0.38.3_windows_amd64.zip',
|
|
47
47
|
platformId: 'win-x64',
|
|
48
48
|
archiveType: 'zip',
|
|
49
49
|
binaryName: 'terraform-ls.exe'
|
|
@@ -59,7 +59,7 @@ function commandExists(command) {
|
|
|
59
59
|
return spawnSync(locator, [command], ensureDefaultSubprocessOptions({ stdio: 'ignore' })).status === 0;
|
|
60
60
|
}
|
|
61
61
|
function ensureTerraformCli() {
|
|
62
|
-
if (process.env.
|
|
62
|
+
if (process.env.SMART_EDIT_ASSUME_TERRAFORM === '1') {
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
if (!commandExists('terraform')) {
|
|
@@ -72,8 +72,8 @@ function resolveRuntimeDirectory(settings) {
|
|
|
72
72
|
return dir;
|
|
73
73
|
}
|
|
74
74
|
function ensureTerraformLanguageServer(runtimeDir, dependencies, loggerLevel) {
|
|
75
|
-
const { logger } =
|
|
76
|
-
name: '
|
|
75
|
+
const { logger } = createSmartEditLogger({
|
|
76
|
+
name: 'smart-lsp.language_servers.terraform',
|
|
77
77
|
emitToConsole: false,
|
|
78
78
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
79
79
|
});
|
|
@@ -81,7 +81,7 @@ function ensureTerraformLanguageServer(runtimeDir, dependencies, loggerLevel) {
|
|
|
81
81
|
if (fs.existsSync(binaryPath)) {
|
|
82
82
|
return binaryPath;
|
|
83
83
|
}
|
|
84
|
-
if (process.env.
|
|
84
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
85
85
|
throw new Error(`terraform-ls executable not found at ${binaryPath}. Allow downloads or install terraform-ls manually.`);
|
|
86
86
|
}
|
|
87
87
|
logger.info('Downloading terraform-ls runtime dependency.');
|
|
@@ -99,7 +99,7 @@ function ensureTerraformLanguageServer(runtimeDir, dependencies, loggerLevel) {
|
|
|
99
99
|
}
|
|
100
100
|
return binaryPath;
|
|
101
101
|
}
|
|
102
|
-
export class TerraformLanguageServer extends
|
|
102
|
+
export class TerraformLanguageServer extends SmartLanguageServer {
|
|
103
103
|
handler;
|
|
104
104
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
105
105
|
const augmentedConfig = {
|
|
@@ -107,7 +107,7 @@ export class TerraformLanguageServer extends SolidLanguageServer {
|
|
|
107
107
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths)
|
|
108
108
|
};
|
|
109
109
|
ensureTerraformCli();
|
|
110
|
-
const solidSettings = new
|
|
110
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
111
111
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
112
112
|
const dependencies = new RuntimeDependencyCollection(TERRAFORM_DEPENDENCIES);
|
|
113
113
|
const binaryPath = ensureTerraformLanguageServer(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -118,7 +118,7 @@ export class TerraformLanguageServer extends SolidLanguageServer {
|
|
|
118
118
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
119
119
|
...options,
|
|
120
120
|
handler,
|
|
121
|
-
|
|
121
|
+
smartLspSettings: options?.smartLspSettings
|
|
122
122
|
});
|
|
123
123
|
this.handler = handler;
|
|
124
124
|
this.registerHandlers();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
3
|
-
export declare class TypeScriptLanguageServer 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 TypeScriptLanguageServer extends SmartLanguageServer {
|
|
4
4
|
private readonly nodeHandler;
|
|
5
5
|
private initialized;
|
|
6
6
|
private serverReady;
|
|
@@ -9,7 +9,7 @@ export declare class TypeScriptLanguageServer 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;
|
|
@@ -2,14 +2,14 @@ import { spawnSync } from 'node:child_process';
|
|
|
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
7
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
8
|
-
import {
|
|
8
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer } from '../ls.js';
|
|
9
9
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
10
10
|
import { Platform, RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
11
11
|
const TYPESCRIPT_IGNORED_PATTERNS = ['**/node_modules', '**/dist', '**/build', '**/coverage'];
|
|
12
|
-
export class TypeScriptLanguageServer extends
|
|
12
|
+
export class TypeScriptLanguageServer extends SmartLanguageServer {
|
|
13
13
|
nodeHandler;
|
|
14
14
|
initialized = false;
|
|
15
15
|
serverReady = false;
|
|
@@ -19,7 +19,7 @@ export class TypeScriptLanguageServer extends SolidLanguageServer {
|
|
|
19
19
|
...config,
|
|
20
20
|
ignoredPaths: mergeIgnoredPaths(config.ignoredPaths, TYPESCRIPT_IGNORED_PATTERNS)
|
|
21
21
|
};
|
|
22
|
-
const solidSettings = new
|
|
22
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
23
23
|
const launchInfo = determineLaunchInfo(solidSettings);
|
|
24
24
|
const handler = new NodeLanguageServerHandler({
|
|
25
25
|
...launchInfo,
|
|
@@ -28,7 +28,7 @@ export class TypeScriptLanguageServer extends SolidLanguageServer {
|
|
|
28
28
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
29
29
|
...options,
|
|
30
30
|
handler,
|
|
31
|
-
|
|
31
|
+
smartLspSettings: options?.smartLspSettings
|
|
32
32
|
});
|
|
33
33
|
this.nodeHandler = handler;
|
|
34
34
|
this.registerHandlers();
|
|
@@ -152,26 +152,26 @@ export class TypeScriptLanguageServer extends SolidLanguageServer {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
function determineLaunchInfo(settings) {
|
|
155
|
-
const { logger } =
|
|
156
|
-
name: '
|
|
155
|
+
const { logger } = createSmartEditLogger({
|
|
156
|
+
name: 'smart-lsp.language_servers.typescript',
|
|
157
157
|
emitToConsole: false
|
|
158
158
|
});
|
|
159
159
|
const runtimeDir = resolveRuntimeDirectory(settings);
|
|
160
160
|
let localBinary = null;
|
|
161
|
-
if (process.env.
|
|
161
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL !== '1') {
|
|
162
162
|
assertBinaryAvailable('node');
|
|
163
163
|
assertBinaryAvailable('npm');
|
|
164
164
|
const dependencies = new RuntimeDependencyCollection([
|
|
165
165
|
{
|
|
166
166
|
id: 'typescript',
|
|
167
167
|
description: 'typescript npm package',
|
|
168
|
-
command: ['npm', 'install', '--prefix', './', 'typescript@5.
|
|
168
|
+
command: ['npm', 'install', '--prefix', './', 'typescript@5.9.3'],
|
|
169
169
|
platformId: 'any'
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
id: 'typescript-language-server',
|
|
173
173
|
description: 'typescript-language-server npm package',
|
|
174
|
-
command: ['npm', 'install', '--prefix', './', 'typescript-language-server@
|
|
174
|
+
command: ['npm', 'install', '--prefix', './', 'typescript-language-server@5.1.3'],
|
|
175
175
|
platformId: 'any'
|
|
176
176
|
}
|
|
177
177
|
]);
|
|
@@ -187,7 +187,7 @@ function determineLaunchInfo(settings) {
|
|
|
187
187
|
if (localBinary) {
|
|
188
188
|
return { cmd: `${quoteWindowsPath(localBinary)} --stdio` };
|
|
189
189
|
}
|
|
190
|
-
if (process.env.
|
|
190
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
191
191
|
return { cmd: 'typescript-language-server --stdio' };
|
|
192
192
|
}
|
|
193
193
|
throw new Error(`typescript-language-server executable not found in ${runtimeDir}.`);
|
|
@@ -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 VtsLanguageServer extends
|
|
4
|
+
export declare class VtsLanguageServer 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
|
}
|