-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Information
VIM version
NVIM v0.11.5
Build type: Release
Operating System: Linux 6.12.62, NixOS 25.11, x86_64
What went wrong
ALE does not start the ZLS language server in files that have no build.zig file in any parent directory. The :ALEInfo output will contain the following to indicate that it did not start ZLS:
LSP Error Messages:
(Errors for zls)
Failed to find project root, language server won't start.
This has been initially reported to ZLS because it prevents LSP features from working inside the Zig standard library since it doesn't have a build.zig.
There are some other issues I found that mentioned the "Failed to find project root, language server won't start." error but none of the seemed to asked whether it was necessary to find a project root to start the language server. I guess this is specific to each language server but ZLS does support to be run without a project root or workspace folder. So perhaps start ZLS anyway if possible?
Reproducing the bug
- Install Zig and ZLS
- Open a Zig file that doesn't have a
build.zigin any parent directory. Like the Zig standard library. - Try to use commands like
:ALEGoToDefinitionwhich do not work.
:ALEInfo
Expand
Current Filetype: zig
Available Linters: ['zlint', 'zls']
Enabled Linters: ['zls']
Ignored Linters: []
Suggested Fixers:
'remove_trailing_lines' - Remove all blank lines at the end of a file.
'trim_whitespace' - Remove all trailing whitespace characters at the end of every line.
'zigfmt' - Official formatter for Zig
Linter Variables:
let g:ale_zig_zls_config = {}
let g:ale_zig_zls_executable = '/home/techatrix/repos/zls/my/zls.sh'
Global Variables:
let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = v:null
let g:ale_command_wrapper = v:null
let g:ale_completion_delay = v:null
let g:ale_completion_enabled = v:false
let g:ale_completion_max_suggestions = v:null
let g:ale_disable_lsp = 'auto'
let g:ale_echo_cursor = v:true
let g:ale_echo_msg_error_str = 'Error'
let g:ale_echo_msg_format = '%code: %%s'
let g:ale_echo_msg_info_str = 'Info'
let g:ale_echo_msg_warning_str = 'Warning'
let g:ale_enabled = 1
let g:ale_fix_on_save = v:false
let g:ale_fixers = {}
let g:ale_history_enabled = v:true
let g:ale_info_default_mode = 'preview'
let g:ale_history_log_output = v:true
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = v:true
let g:ale_lint_on_filetype_changed = v:true
let g:ale_lint_on_insert_leave = v:true
let g:ale_lint_on_save = v:true
let g:ale_lint_on_text_changed = 'normal'
let g:ale_linter_aliases = {}
let g:ale_linters = {'zig': ['zls']}
let g:ale_linters_explicit = v:false
let g:ale_linters_ignore = {}
let g:ale_list_vertical = v:false
let g:ale_list_window_size = 10
let g:ale_loclist_msg_format = '%code: %%s'
let g:ale_max_buffer_history_size = v:null
let g:ale_max_signs = v:null
let g:ale_maximum_file_size = v:null
let g:ale_open_list = v:false
let g:ale_pattern_options = v:null
let g:ale_pattern_options_enabled = v:null
let g:ale_root = {}
let g:ale_set_balloons = v:false
let g:ale_set_highlights = v:true
let g:ale_set_loclist = v:true
let g:ale_set_quickfix = v:false
let g:ale_set_signs = v:true
let g:ale_sign_column_always = v:null
let g:ale_sign_error = v:null
let g:ale_sign_info = v:null
let g:ale_sign_offset = v:null
let g:ale_sign_style_error = v:null
let g:ale_sign_style_warning = v:null
let g:ale_sign_warning = v:null
let g:ale_sign_highlight_linenrs = v:null
let g:ale_type_map = {}
let g:ale_use_neovim_diagnostics_api = v:true
let g:ale_use_global_executables = v:null
let g:ale_virtualtext_cursor = 'all'
let g:ale_warn_about_trailing_blank_lines = v:true
let g:ale_warn_about_trailing_whitespace = v:true
LSP Error Messages:
(Errors for zls)
Failed to find project root, language server won't start.
Failed to find project root, language server won't start.
Command History: