diff --git a/README.md b/README.md index e31d001e..7493550e 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,8 @@ require("typescript-tools").setup { -- locale of all tsserver messages, supported locales you can find here: -- https://github.com/microsoft/TypeScript/blob/3c221fc086be52b19801f6e8d82596d04607ede6/src/compiler/utilitiesPublic.ts#L620 tsserver_locale = "en", + -- Node executable configuration (for example, bun) + tsserver_node_executable = "bun", -- mirror of VSCode's `typescript.suggest.completeFunctionCalls` complete_function_calls = false, include_completions_with_insert_text = true, diff --git a/lua/typescript-tools/config.lua b/lua/typescript-tools/config.lua index 2825b1d5..e30d3d79 100644 --- a/lua/typescript-tools/config.lua +++ b/lua/typescript-tools/config.lua @@ -9,6 +9,7 @@ ---@field tsserver_file_preferences table|fun(filetype: string): table ---@field tsserver_max_memory number|"auto" ---@field tsserver_locale string +---@field tsserver_node_executable string ---@field complete_function_calls boolean ---@field expose_as_code_action ("fix_all"| "add_missing_imports"| "remove_unused" | "remove_unused_imports")[] ---@field include_completions_with_insert_text boolean @@ -125,6 +126,11 @@ function M.load_settings(settings) "string", true, }, + ["settings.tsserver_node_executable"] = { + settings.tsserver_node_executable, + "string", + true, + }, ["settings.complete_function_calls"] = { settings.complete_function_calls, "boolean", true }, ["settings.expose_as_code_action"] = { settings.expose_as_code_action, @@ -163,6 +169,10 @@ function M.load_settings(settings) __store.tsserver_file_preferences = {} end + if not settings.tsserver_node_executable then + __store.tsserver_node_executable = "node" + end + if not M.tsserver_log_level[settings.tsserver_logs] then __store.tsserver_logs = M.tsserver_log_level.off end diff --git a/lua/typescript-tools/process.lua b/lua/typescript-tools/process.lua index a1dd48f1..c91cbd53 100644 --- a/lua/typescript-tools/process.lua +++ b/lua/typescript-tools/process.lua @@ -123,7 +123,7 @@ local function parse_response(initial_chunk, on_response) end function Process:start() - local command = is_win and "cmd.exe" or "node" + local command = is_win and "cmd.exe" or plugin_config.tsserver_node_executable if type(plugin_config.tsserver_max_memory) == "number" then table.insert(self.args, 1, "--max-old-space-size=" .. plugin_config.tsserver_max_memory)