lexical-lsp / lexical

Lexical is a next-generation elixir language server
883 stars 82 forks source link

error: {:erpc, :noconnection} on fresh install #821

Open gworkman opened 2 months ago

gworkman commented 2 months ago

Hello! Great work with lexical, I've been enjoying using it on my work setup for the last year or so.

I'm trying to make the switch my personal laptop, but have been running into issues getting it to work. My setup consists of mise for version management and helix as my editor. From the log files, it doesn't seem like it can make an :erpc connection.

Not really sure what I should be looking for to make it work. I'm on an Intel Mac. Thanks in advance!

In lexical directory (v0.7.1 tag from GitHub):

$ mise current
erlang 26.2.5.2
elixir 1.16.3-otp-26

$ mix do deps.get, package

In a fresh Phoenix directory:

$ mise current
erlang 26.2.5.2
elixir 1.16.3-otp-26

$ mix deps.get
$ hx .

The lexical.log file:

11:08:28.328 [info] Child {LoggerFileBackend, :general_log} of Supervisor Logger.Backends.Supervisor started
Pid: #PID<0.118.0>
Start Call: Logger.Backends.Watcher.start_link({{LoggerFileBackend, :general_log}, {LoggerFileBackend, :general_log}})
Restart: :transient
Shutdown: 5000
Type: :worker
11:08:28.328 [info] Child Logger.Backends.Supervisor of Supervisor Logger.Backends.Internal started
Pid: #PID<0.117.0>
Start Call: Logger.Backends.Supervisor.start_link([{LoggerFileBackend, :general_log}])
Restart: :permanent
Shutdown: :infinity
Type: :supervisor
11:08:28.328 [info] Child Logger.Backends.Internal of Supervisor Logger.Supervisor started
Pid: #PID<0.113.0>
Start Call: Logger.Backends.Internal.start_link([])
Restart: :permanent
Shutdown: :infinity
Type: :supervisor
11:08:28.328 [info] Application logger started at :nonode@nohost
11:08:29.509 [info] Child :ttb_autostart of Supervisor :runtime_tools_sup started
Pid: #PID<0.1527.0>
Start Call: :ttb_autostart.start_link()
Restart: :temporary
Shutdown: 3000
Type: :worker
11:08:29.509 [info] Application runtime_tools started at :nonode@nohost
11:08:29.513 [info] Application erts started at :nonode@nohost
11:08:29.513 [info] Application lx_lexical_shared started at :nonode@nohost
11:08:29.513 [info] Application lx_lexical_test started at :nonode@nohost
11:08:29.515 [info] Child LXSnowflake.Generator of Supervisor #PID<0.1534.0> (Supervisor.Default) started
Pid: #PID<0.1535.0>
Start Call: LXSnowflake.Generator.start_link(1704070800000, 1)
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.515 [info] Application lx_snowflake started at :nonode@nohost
11:08:29.515 [info] Application lx_sourceror started at :nonode@nohost
11:08:29.515 [info] Application lx_common started at :nonode@nohost
11:08:29.515 [info] Application lx_elixir_sense started at :nonode@nohost
11:08:29.525 [info] Application jason started at :nonode@nohost
11:08:29.525 [info] Application logger_file_backend started at :nonode@nohost
11:08:29.526 [info] Application lx_path_glob started at :nonode@nohost
11:08:29.526 [info] Application lx_proto started at :nonode@nohost
11:08:29.526 [info] Application lx_protocol started at :nonode@nohost
11:08:29.545 [info] Child LXical.Document.Store of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1548.0>
Start Call: LXical.Document.Store.start_link([derive: [analysis: &LXical.Ast.analyze/1]])
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.549 [info] Child LXical.Server of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1549.0>
Start Call: LXical.Server.start_link([])
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.550 [info] Child LXical.Server.ProjectSupervisor of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1550.0>
Start Call: DynamicSupervisor.start_link([name: LXical.Server.ProjectSupervisor, strategy: :one_for_one])
Restart: :permanent
Shutdown: :infinity
Type: :supervisor
11:08:29.550 [info] Child LXical.Server.TaskQueue.State.TaskSupervisor of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1551.0>
Start Call: Task.Supervisor.start_link([name: LXical.Server.TaskQueue.State.TaskSupervisor])
Restart: :permanent
Shutdown: :infinity
Type: :supervisor
11:08:29.550 [info] Child LXical.Server.TaskQueue of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1552.0>
Start Call: LXical.Server.TaskQueue.start_link([])
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.550 [info] Child LXical.Server.Transport.StdIO of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1553.0>
Start Call: LXical.Server.Transport.StdIO.start_link(:standard_io, &LXical.Server.protocol_message/1)
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.550 [info] Application lx_server started at :nonode@nohost
11:08:29.568 [info] Starting project at uri file:///Users/gus/Projects/elixir/protolux
11:08:29.592 [info] Child {LXical.Server.Project.Progress, "protolux"} of Supervisor :"protolux::supervisor" started
Pid: #PID<0.1555.0>
Start Call: LXical.Server.Project.Progress.start_link(%LXical.Project{root_uri: "file:///Users/gus/Projects/elixir/protolux", mix_exs_uri: "file:///Users/gus/Projects/elixir/protolux/mix.exs", mix_project?: true, mix_env: nil, mix_target: nil, env_variables: %{}, project_module: nil, entropy: 54583})
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.597 [info] Child {LXical.RemoteControl.ProjectNodeSupervisor, "protolux"} of Supervisor :"protolux::supervisor" started
Pid: #PID<0.1556.0>
Start Call: LXical.RemoteControl.ProjectNodeSupervisor.start_link(%LXical.Project{root_uri: "file:///Users/gus/Projects/elixir/protolux", mix_exs_uri: "file:///Users/gus/Projects/elixir/protolux/mix.exs", mix_project?: true, mix_env: nil, mix_target: nil, env_variables: %{}, project_module: nil, entropy: 54583})
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:29.615 [info] Child :erl_epmd of Supervisor :net_sup started
Pid: #PID<0.1559.0>
Start Call: :erl_epmd.start_link()
Restart: :permanent
Shutdown: 2000
Type: :worker
11:08:29.618 [info] Child :auth of Supervisor :net_sup started
Pid: #PID<0.1560.0>
Start Call: :auth.start_link()
Restart: :permanent
Shutdown: 2000
Type: :worker
11:08:29.624 [info] Child :net_kernel of Supervisor :net_sup started
Pid: #PID<0.1561.0>
Start Call: :net_kernel.start_link(%{name: :"manager-protolux-54583@127.0.0.1", supervisor: :net_sup_dynamic, name_domain: :longnames, clean_halt: false})
Restart: :permanent
Shutdown: 2000
Type: :worker
11:08:29.624 [info] Child :net_sup_dynamic of Supervisor :kernel_sup started
Pid: #PID<0.1558.0>
Start Call: :erl_distribution.start_link(%{name: :"manager-protolux-54583@127.0.0.1", supervisor: :net_sup_dynamic, name_domain: :longnames, clean_halt: false})
Restart: :permanent
Shutdown: 1000
Type: :supervisor
11:08:32.637 [error] Process #PID<0.1557.0> terminating
** (exit) {:error, :start_timeout}
    (stdlib 5.2.3.1) gen_server.erl:961: :gen_server.init_it/6
    (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Initial Call: LXical.Server.Project.Node.init/1
Ancestors: [:"protolux::supervisor", LXical.Server.ProjectSupervisor, LXical.Server.Supervisor, #PID<0.1546.0>]
Message Queue Length: 0
Messages: []
Links: [#PID<0.1554.0>]
Dictionary: []
Trapping Exits: false
Status: :running
Heap Size: 6772
Stack Size: 28
Reductions: 235743
11:08:32.638 [error] Child {LXical.Server.Project.Node, "protolux"} of Supervisor :"protolux::supervisor" failed to start
** (exit) {:error, :start_timeout}
Start Call: LXical.Server.Project.Node.start_link(%LXical.Project{root_uri: "file:///Users/gus/Projects/elixir/protolux", mix_exs_uri: "file:///Users/gus/Projects/elixir/protolux/mix.exs", mix_project?: true, mix_env: nil, mix_target: nil, env_variables: %{}, project_module: nil, entropy: 54583})
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:32.644 [error] GenServer :"protolux::node_process" terminating
** (stop) :start_timeout
Last message: :maybe_start_timeout
State: nil
11:08:32.644 [error] Process :"protolux::node_process" (#PID<0.1564.0>) terminating
** (exit) :start_timeout
    (stdlib 5.2.3.1) gen_server.erl:1226: :gen_server.handle_common_reply/8
    (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Initial Call: LXical.RemoteControl.ProjectNode.init/1
Ancestors: [LXical.RemoteControl.ProjectNodeSupervisor, :"protolux::supervisor", LXical.Server.ProjectSupervisor, LXical.Server.Supervisor, #PID<0.1546.0>]
Message Queue Length: 1
Messages: [{:EXIT, #PID<0.1556.0>, :shutdown}]
Links: [#Port<0.9>]
Dictionary: []
Trapping Exits: true
Status: :running
Heap Size: 17731
Stack Size: 28
Reductions: 28701
11:08:32.647 [error] Child :undefined of Supervisor LXical.RemoteControl.ProjectNodeSupervisor shut down abnormally
** (exit) :start_timeout
Pid: #PID<0.1564.0>
Start Call: LXical.RemoteControl.ProjectNode.start_link(%LXical.Project{root_uri: "file:///Users/gus/Projects/elixir/protolux", mix_exs_uri: "file:///Users/gus/Projects/elixir/protolux/mix.exs", mix_project?: true, mix_env: nil, mix_target: nil, env_variables: %{}, project_module: nil, entropy: 54583})
Restart: :transient
Shutdown: 5000
Type: :worker
11:08:32.651 [info] Lexical Initialized
11:08:32.655 [info] opened file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex
11:08:32.663 [info] Child of Supervisor :inet_gethost_native_sup started
Pid: #PID<0.1566.0>
Start Call: :inet_gethost_native.init([])
11:08:32.664 [info] Child :inet_gethost_native_sup of Supervisor :kernel_safe_sup started
Pid: #PID<0.1565.0>
Start Call: :inet_gethost_native.start_link()
Restart: :temporary
Shutdown: 1000
Type: :worker
11:08:32.670 [error] GenServer LXical.Server terminating
** (stop) {:erpc, :noconnection}
    (kernel 9.2.4.1) erpc.erl:710: :erpc.call/5
    (lx_server 0.5.0) lib/lexical/server/state.ex:164: LXical.Server.State.apply/2
    (lx_server 0.5.0) lib/lexical/server.ex:154: LXical.Server.apply_to_state/2
    (lx_server 0.5.0) lib/lexical/server.ex:117: LXical.Server.handle_message/2
    (lx_server 0.5.0) lib/lexical/server.ex:59: LXical.Server.handle_cast/2
    (stdlib 5.2.3.1) gen_server.erl:1121: :gen_server.try_handle_cast/3
    (stdlib 5.2.3.1) gen_server.erl:1183: :gen_server.handle_msg/6
    (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Last message: {:"$gen_cast", {:protocol_message, %LXical.Protocol.Notifications.DidChange{lsp: %LXical.Protocol.Notifications.DidChange.LSP{jsonrpc: "2.0", method: "textDocument/didChange", content_changes: [#Protocol.Types.TextDocument.ContentChangeEvent.TextDocumentContentChangeEvent<[range: #Protocol.Types.Range<[start: #Protocol.Types.Position<[line: 20, character: 10]>, end: #Protocol.Types.Position<[line: 20, character: 14]>]>, text: ""]>], text_document: #Protocol.Types.TextDocument.Versioned.Identifier<[version: 1, uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>}, document: nil, jsonrpc: "2.0", method: "textDocument/didChange", content_changes: nil, text_document: nil}}}
State: %LXical.Server.State{configuration: %LXical.Server.Configuration{project: %LXical.Project{root_uri: "file:///Users/gus/Projects/elixir/protolux", mix_exs_uri: "file:///Users/gus/Projects/elixir/protolux/mix.exs", mix_project?: true, mix_env: nil, mix_target: nil, env_variables: %{}, project_module: nil, entropy: 54583}, support: %LXical.Server.Configuration.Support{code_action_dynamic_registration: false, hierarchical_symbols: false, snippet: true, deprecated: true, tags: #Protocol.Types.Completion.ClientCapabilities.TagSupport<[value_set: [:deprecated]]>, signature_help: #Protocol.Types.SignatureHelp.ClientCapabilities<[signature_information: #Protocol.Types.SignatureHelp.ClientCapabilities.SignatureInformation<[documentation_format: [:markdown], active_parameter_support: true, parameter_information: #Protocol.Types.SignatureHelp.ClientCapabilities.ParameterInformation<[label_offset_support: true]>]>]>, work_done_progress: true}, client_name: "helix", additional_watched_extensions: nil, dialyzer_enabled?: false}, initialized?: true, shutdown_received?: false, in_flight_requests: %{}}
11:08:32.681 [error] Process LXical.Server (#PID<0.1549.0>) terminating
** (ErlangError) Erlang error: {:erpc, :noconnection}
    (kernel 9.2.4.1) erpc.erl:710: :erpc.call/5
    (lx_server 0.5.0) lib/lexical/server/state.ex:164: LXical.Server.State.apply/2
    (lx_server 0.5.0) lib/lexical/server.ex:154: LXical.Server.apply_to_state/2
    (lx_server 0.5.0) lib/lexical/server.ex:117: LXical.Server.handle_message/2
    (lx_server 0.5.0) lib/lexical/server.ex:59: LXical.Server.handle_cast/2
    (stdlib 5.2.3.1) gen_server.erl:1121: :gen_server.try_handle_cast/3
    (stdlib 5.2.3.1) gen_server.erl:1183: :gen_server.handle_msg/6
    (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Initial Call: LXical.Server.init/1
Ancestors: [LXical.Server.Supervisor, #PID<0.1546.0>]
Message Queue Length: 0
Messages: []
Links: [#PID<0.1547.0>]
Dictionary: [rand_seed: {%{type: :exsss, next: #Function<0.65977474/1 in :rand.exsss_next>, bits: 58, uniform: #Function<1.65977474/1 in :rand.exsss_uniform>, uniform_n: #Function<2.65977474/2 in :rand.exsss_uniform>, jump: #Function<3.65977474/1 in :rand.exsplus_jump>}, [118370976207703698 | 278294750114416577]}]
Trapping Exits: false
Status: :running
Heap Size: 6772
Stack Size: 28
Reductions: 25673
11:08:32.682 [error] Child LXical.Server of Supervisor LXical.Server.Supervisor terminated
** (exit) an exception was raised:
    ** (ErlangError) Erlang error: {:erpc, :noconnection}
        (kernel 9.2.4.1) erpc.erl:710: :erpc.call/5
        (lx_server 0.5.0) lib/lexical/server/state.ex:164: LXical.Server.State.apply/2
        (lx_server 0.5.0) lib/lexical/server.ex:154: LXical.Server.apply_to_state/2
        (lx_server 0.5.0) lib/lexical/server.ex:117: LXical.Server.handle_message/2
        (lx_server 0.5.0) lib/lexical/server.ex:59: LXical.Server.handle_cast/2
        (stdlib 5.2.3.1) gen_server.erl:1121: :gen_server.try_handle_cast/3
        (stdlib 5.2.3.1) gen_server.erl:1183: :gen_server.handle_msg/6
        (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Pid: #PID<0.1549.0>
Start Call: LXical.Server.start_link([])
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:32.683 [info] Child LXical.Server of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1567.0>
Start Call: LXical.Server.start_link([])
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:34.215 [error] Received textDocument/didChange before server was initialized
11:08:34.219 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:34.219 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:34.679 [error] Received textDocument/didChange before server was initialized
11:08:34.682 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:34.682 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:34.764 [error] Received textDocument/didChange before server was initialized
11:08:34.768 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:34.768 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:34.826 [error] Received textDocument/didChange before server was initialized
11:08:34.830 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:34.830 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:35.032 [error] Received textDocument/didChange before server was initialized
11:08:35.035 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:35.035 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:35.278 [error] Received textDocument/didChange before server was initialized
11:08:35.281 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:35.281 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:35.299 [error] Received textDocument/didChange before server was initialized
11:08:35.301 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:35.301 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:35.572 [error] ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 1, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 17]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, position: LxPos<<21, 18>>, id: 1, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

11:08:35.908 [error] Received textDocument/didChange before server was initialized
11:08:35.912 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:35.912 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:35.958 [error] Received textDocument/didChange before server was initialized
11:08:35.961 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:35.961 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:36.193 [error] Received textDocument/didChange before server was initialized
11:08:36.196 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChange, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:36.196 [error] Could not handle message LXical.Protocol.Notifications.DidChange :ok
11:08:36.457 [error] ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 2, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 20]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, position: LxPos<<21, 21>>, id: 2, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

11:08:37.186 [error] ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

11:08:37.212 [error] Received textDocument/didSave before server was initialized
11:08:37.214 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidSave, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:37.214 [error] Could not handle message LXical.Protocol.Notifications.DidSave :ok
11:08:37.214 [error] Received workspace/didChangeWatchedFiles before server was initialized
11:08:37.215 [error] Failed to handle Elixir.LXical.Protocol.Notifications.DidChangeWatchedFiles, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:37.215 [error] Could not handle message LXical.Protocol.Notifications.DidChangeWatchedFiles :ok
11:08:39.891 [error] ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

11:08:42.758 [error] Received shutdown before server was initialized
11:08:42.761 [error] Failed to handle Elixir.LXical.Protocol.Requests.Shutdown, {{:error, :not_initialized}, %LXical.Server.State{configuration: nil, initialized?: false, shutdown_received?: false, in_flight_requests: %{}}}
11:08:42.761 [error] Could not handle message LXical.Protocol.Requests.Shutdown :ok
11:08:45.765 [error] stdio received :eof, server will stop.
11:08:45.765 [error] Child LXical.Server.Transport.StdIO of Supervisor LXical.Server.Supervisor terminated
** (exit) normal
Pid: #PID<0.1553.0>
Start Call: LXical.Server.Transport.StdIO.start_link(:standard_io, &LXical.Server.protocol_message/1)
Restart: :permanent
Shutdown: 5000
Type: :worker
11:08:45.766 [info] Child LXical.Server.Transport.StdIO of Supervisor LXical.Server.Supervisor started
Pid: #PID<0.1572.0>
Start Call: LXical.Server.Transport.StdIO.start_link(:standard_io, &LXical.Server.protocol_message/1)
Restart: :permanent
Shutdown: 5000
Type: :worker

The helix log file:

2024-08-28T11:08:27.471 helix_lsp::client [INFO] Using custom LSP config: {"provideFormatter":true}
2024-08-28T11:08:27.472 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"formatting":{"dynamicRegistration":false},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"tagSupport":{"valueSet":[1,2]},"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"fileOperations":{"didRename":true,"willRename":true},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"24.7 (079f5442)"},"initializationOptions":{"provideFormatter":true},"processId":3901,"rootPath":"/Users/gus/Projects/elixir/protolux","rootUri":"file:///Users/gus/Projects/elixir/protolux","workspaceFolders":[{"name":"protolux","uri":"file:///Users/gus/Projects/elixir/protolux"}]},"id":0}
2024-08-28T11:08:27.929 helix_lsp::transport [ERROR] lexical err <- "Detected Elixir through mise: /Users/gus/.local/share/mise/installs/elixir/1.16/bin/elixir\n"
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical <- {"id":0,"result":{"capabilities":{"workspaceSymbolProvider":true,"executeCommandProvider":{"commands":["Reindex"]},"completionProvider":{"triggerCharacters":[".","@","&","%","^",":","!","-","~"]},"documentSymbolProvider":true,"definitionProvider":true,"referencesProvider":true,"hoverProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","source.organizeImports"]},"codeLensProvider":{},"textDocumentSync":{"change":2,"save":true,"openClose":true},"documentFormattingProvider":true},"serverInfo":{"name":"Lexical","version":"0.0.1"}},"jsonrpc":"2.0"}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical <- {"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","source.organizeImports"]},"codeLensProvider":{},"completionProvider":{"triggerCharacters":[".","@","&","%","^",":","!","-","~"]},"definitionProvider":true,"documentFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["Reindex"]},"hoverProvider":true,"referencesProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"workspaceSymbolProvider":true},"serverInfo":{"name":"Lexical","version":"0.0.1"}}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"initialized","params":{}}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical <- {"id":"1","params":{"registrations":[{"id":"-42","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"**/mix.lock"},{"globPattern":"**/*.{ex,exs}"}]}}]},"method":"client/registerCapability","jsonrpc":"2.0"}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"provideFormatter":true}}}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"elixir","text":"defmodule ProtoluxWeb.Router do\n  use ProtoluxWeb, :router\n\n  pipeline :browser do\n    plug :accepts, [\"html\"]\n    plug :fetch_session\n    plug :fetch_live_flash\n    plug :put_root_layout, html: {ProtoluxWeb.Layouts, :root}\n    plug :protect_from_forgery\n    plug :put_secure_browser_headers\n  end\n\n  pipeline :api do\n    plug :accepts, [\"json\"]\n  end\n\n  scope \"/\", ProtoluxWeb do\n    pipe_through :browser\n\n    get \"/\", PageController, :home\n    get \"/home\", PageController, :home\n  end\n\n  # Other scopes may use custom stacks.\n  # scope \"/api\", ProtoluxWeb do\n  #   pipe_through :api\n  # end\n\n  # Enable LiveDashboard and Swoosh mailbox preview in development\n  if Application.compile_env(:protolux, :dev_routes) do\n    # If you want to use the LiveDashboard in production, you should put\n    # it behind authentication and allow only admins to access it.\n    # If your application does not have an admins-only section yet,\n    # you can use Plug.BasicAuth to set up some basic authentication\n    # as long as you are also using SSL (which you should anyway).\n    import Phoenix.LiveDashboard.Router\n\n    scope \"/dev\" do\n      pipe_through :browser\n\n      live_dashboard \"/dashboard\", metrics: ProtoluxWeb.Telemetry\n      forward \"/mailbox\", Plug.Swoosh.MailboxPreview\n    end\n  end\nend\n","uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":0}}}
2024-08-28T11:08:29.577 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","result":null,"id":"1"}
2024-08-28T11:08:29.605 helix_lsp::transport [INFO] lexical <- {"id":"2","params":{"token":2},"method":"window/workDoneProgress/create","jsonrpc":"2.0"}
2024-08-28T11:08:29.605 helix_lsp::transport [INFO] lexical <- {"params":{"value":{"title":"Project Node","kind":"begin"},"token":2},"method":"$/progress","jsonrpc":"2.0"}
2024-08-28T11:08:29.605 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","result":null,"id":"2"}
2024-08-28T11:08:30.040 helix_lsp::transport [ERROR] lexical err <- "No version is set for command elixir\n"
2024-08-28T11:08:30.040 helix_lsp::transport [ERROR] lexical err <- "Consider adding one of the following versions in your config file at \n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.14.5-otp-25\n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.15.4-otp-25\n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.15.4-otp-26\n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.16.0-otp-26\n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.16.2-otp-26\n"
2024-08-28T11:08:30.049 helix_lsp::transport [ERROR] lexical err <- "elixir 1.16.3-otp-26\n"
2024-08-28T11:08:32.575 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":14,"line":20},"start":{"character":10,"line":20}},"text":""}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":1}}}
2024-08-28T11:08:32.637 helix_lsp::transport [INFO] lexical <- {"params":{"value":{"kind":"end"},"token":2},"method":"$/progress","jsonrpc":"2.0"}
2024-08-28T11:08:34.214 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":10,"line":20},"start":{"character":10,"line":20}},"text":"h"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":2}}}
2024-08-28T11:08:34.679 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":11,"line":20},"start":{"character":11,"line":20}},"text":"o"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":3}}}
2024-08-28T11:08:34.763 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":12,"line":20},"start":{"character":12,"line":20}},"text":"m"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":4}}}
2024-08-28T11:08:34.826 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":13,"line":20},"start":{"character":13,"line":20}},"text":"e"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":5}}}
2024-08-28T11:08:35.031 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":14,"line":20},"start":{"character":14,"line":20}},"text":"_"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":6}}}
2024-08-28T11:08:35.277 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":15,"line":20},"start":{"character":15,"line":20}},"text":"a"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":7}}}
2024-08-28T11:08:35.299 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":16,"line":20},"start":{"character":16,"line":20}},"text":"l"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":8}}}
2024-08-28T11:08:35.550 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"context":{"triggerKind":1},"position":{"character":17,"line":20},"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}},"id":1}
2024-08-28T11:08:35.572 helix_lsp::transport [INFO] lexical <- {"error":{"code":-32603,"message":"** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2\n    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 1, jsonrpc: \"2.0\", method: \"textDocument/completion\", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 17]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, document: #LXical.Document<path: \"/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\", version: 1, dirty?: true, lines: %Lines<\"defmodule ProtoluxWeb.Router do...\"(45 lines)>, ...>, position: LxPos<<21, 18>>, id: 1, jsonrpc: \"2.0\", method: \"textDocument/completion\", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, nil)\n    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2\n    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2\n    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4\n"},"id":1}
2024-08-28T11:08:35.572 helix_lsp::transport [ERROR] lexical <- InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 1, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 17]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, position: LxPos<<21, 18>>, id: 1, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:35.907 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":17,"line":20},"start":{"character":17,"line":20}},"text":"o"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":9}}}
2024-08-28T11:08:35.957 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":18,"line":20},"start":{"character":18,"line":20}},"text":"n"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":10}}}
2024-08-28T11:08:36.192 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":19,"line":20},"start":{"character":19,"line":20}},"text":"e"}],"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex","version":11}}}
2024-08-28T11:08:36.443 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"context":{"triggerKind":1},"position":{"character":20,"line":20},"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}},"id":2}
2024-08-28T11:08:36.457 helix_lsp::transport [INFO] lexical <- {"error":{"code":-32603,"message":"** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2\n    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 2, jsonrpc: \"2.0\", method: \"textDocument/completion\", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 20]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, document: #LXical.Document<path: \"/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\", version: 1, dirty?: true, lines: %Lines<\"defmodule ProtoluxWeb.Router do...\"(45 lines)>, ...>, position: LxPos<<21, 21>>, id: 2, jsonrpc: \"2.0\", method: \"textDocument/completion\", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, nil)\n    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2\n    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2\n    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4\n"},"id":2}
2024-08-28T11:08:36.458 helix_lsp::transport [ERROR] lexical <- InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Completion.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/completion.ex:13: LXical.Server.Provider.Handlers.Completion.handle(%LXical.Protocol.Requests.Completion{lsp: %LXical.Protocol.Requests.Completion.LSP{id: 2, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, position: #Protocol.Types.Position<[line: 20, character: 20]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, position: LxPos<<21, 21>>, id: 2, jsonrpc: "2.0", method: "textDocument/completion", context: #Protocol.Types.Completion.Context<[trigger_kind: :invoked]>, partial_result_token: nil, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:37.172 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/formatting","params":{"options":{"insertSpaces":true,"tabSize":2},"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}},"id":3}
2024-08-28T11:08:37.187 helix_lsp::transport [INFO] lexical <- {"error":{"code":-32603,"message":"** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2\n    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 3, jsonrpc: \"2.0\", method: \"textDocument/formatting\", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, document: #LXical.Document<path: \"/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\", version: 1, dirty?: true, lines: %Lines<\"defmodule ProtoluxWeb.Router do...\"(45 lines)>, ...>, id: 3, jsonrpc: \"2.0\", method: \"textDocument/formatting\", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, nil)\n    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2\n    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2\n    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4\n"},"id":3}
2024-08-28T11:08:37.187 helix_lsp::transport [ERROR] lexical <- InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:37.187 helix_view::document [WARN] LSP formatting failed: protocol error: InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 3, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:37.211 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}}}
2024-08-28T11:08:37.211 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"workspace/didChangeWatchedFiles","params":{"changes":[{"type":2,"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}]}}
2024-08-28T11:08:39.882 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"textDocument/formatting","params":{"options":{"insertSpaces":true,"tabSize":2},"textDocument":{"uri":"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"}},"id":4}
2024-08-28T11:08:39.891 helix_lsp::transport [INFO] lexical <- {"error":{"code":-32603,"message":"** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2\n    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 4, jsonrpc: \"2.0\", method: \"textDocument/formatting\", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, document: #LXical.Document<path: \"/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\", version: 1, dirty?: true, lines: %Lines<\"defmodule ProtoluxWeb.Router do...\"(45 lines)>, ...>, id: 4, jsonrpc: \"2.0\", method: \"textDocument/formatting\", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: \"file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex\"]>, work_done_token: nil}, nil)\n    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2\n    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2\n    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4\n"},"id":4}
2024-08-28T11:08:39.891 helix_lsp::transport [ERROR] lexical <- InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:39.891 helix_view::document [WARN] LSP formatting failed: protocol error: InternalError: ** (FunctionClauseError) no function clause matching in LXical.Server.Provider.Handlers.Formatting.handle/2
    (lx_server 0.5.0) lib/lexical/server/provider/handlers/formatting.ex:10: LXical.Server.Provider.Handlers.Formatting.handle(%LXical.Protocol.Requests.Formatting{lsp: %LXical.Protocol.Requests.Formatting.LSP{id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, document: #LXical.Document<path: "/Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex", version: 1, dirty?: true, lines: %Lines<"defmodule ProtoluxWeb.Router do..."(45 lines)>, ...>, id: 4, jsonrpc: "2.0", method: "textDocument/formatting", options: #Protocol.Types.Formatting.Options<[insert_spaces: true, tab_size: 2]>, text_document: #Protocol.Types.TextDocument.Identifier<[uri: "file:///Users/gus/Projects/elixir/protolux/lib/protolux_web/router.ex"]>, work_done_token: nil}, nil)
    (lx_server 0.5.0) lib/lexical/server/task_queue.ex:77: anonymous fn/4 in LXical.Server.TaskQueue.State.as_task/2
    (elixir 1.16.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2
    (elixir 1.16.3) lib/task/supervised.ex:36: Task.Supervised.reply/4

2024-08-28T11:08:42.757 helix_lsp::transport [INFO] lexical -> {"jsonrpc":"2.0","method":"shutdown","id":5}
2024-08-28T11:08:45.759 helix_term::application [ERROR] Timed out waiting for language servers to shutdown
gworkman commented 2 months ago

I should also paste my helix languages.toml config (pretty much default):

[language-server.lexical]
command = "/Users/gus/Projects/elixir/lexical/_build/dev/package/lexical/bin/start_lexical.sh"
config = { provideFormatter = true }

[[language]]
name = "elixir"
auto-format = true
language-servers = ["lexical"]

[[language]]
name = "heex"
language-servers = ["lexical"]
scohen commented 2 months ago

The actual error is a little bit above the noconnection one:

11:08:32.637 [error] Process #PID<0.1557.0> terminating
** (exit) {:error, :start_timeout}
    (stdlib 5.2.3.1) gen_server.erl:961: :gen_server.init_it/6
    (stdlib 5.2.3.1) proc_lib.erl:241: :proc_lib.init_p_do_apply/3
Initial Call: LXical.Server.Project.Node.init/1

It can't start your project node for some reason. Can you ensure all the files in <LEXICAL_INSTALL>/_build/dev/package/lexical/bin are executable? <LEXICAL_INSTALL> is the directory where you've built lexical (/Users/gus/Projects/elixir/lexical/_build/dev/package/lexical/bin/).

gworkman commented 2 months ago

Thanks for the info - I believe everything is executable. The output of ls -lah in the lexical package bin directory:

-rwxr-xr-x@ 1 gus  staff   2.6K Aug 28 10:53 activate_version_manager.sh
-rwxr-xr-x@ 1 gus  staff   580B Aug 28 10:53 boot.exs
-rwxr-xr-x@ 1 gus  staff   230B Aug 28 10:53 debug_shell.sh
-rwxr-xr-x@ 1 gus  staff   481B Aug 28 10:53 start_lexical.sh
scohen commented 2 months ago

This is tough to diagnose over github, would it be possible to join our discord? The link is in the readme.