biome icon indicating copy to clipboard operation
biome copied to clipboard

πŸ’… [vim ale] Working or not with every version since version 2.0.0

Open Spixmaster opened this issue 4 months ago β€’ 5 comments

Environment information

CLI:
  Version:                      2.2.7
  Color support:                true

Platform:
  CPU Architecture:             x86_64
  OS:                           linux

Environment:
  BIOME_LOG_PATH:               unset
  BIOME_LOG_PREFIX_NAME:        unset
  BIOME_CONFIG_PATH:            unset
  BIOME_THREADS:                unset
  NO_COLOR:                     unset
  TERM:                         xterm-256color
  JS_RUNTIME_VERSION:           unset
  JS_RUNTIME_NAME:              unset
  NODE_PACKAGE_MANAGER:         unset

Biome Configuration:
  Status:                       Not set
  Path:                         unset

Workspace:
  Open Documents:               0

Rule name

everything

Playground link

not reproducible

Expected result

The issue history is described here. With every new version, the language server either works or not.

For example, version 2.2.7 works, 2.3.1 does not.

Code of Conduct

  • [x] I agree to follow Biome's Code of Conduct

Spixmaster avatar Oct 28 '25 10:10 Spixmaster

How do you judge if it's working or not? Some diagnostics? Formatting? Anything else?

ematipico avatar Oct 28 '25 10:10 ematipico

From the logs, it seems that by only updating Biome, Vim ALE no longer works although nothing else was changed, only Biome, in this case version 2.2.7 to 2.3.1. For me, it looks like no commands are received by Biome.

Strangely, some versions do not work. 2.3.1 is not the only version where this happened suddenly, see https://github.com/dense-analysis/ale/issues/4998.

With version 2.2.7

server.log.2025-10-28-11:

┐biome_cli::commands::daemon::Running Server{pid=473623, log_path=Some("/home/matheus/.cache/biome/biome-logs"), log_file_name_prefix="server.log"}
β”œβ”€ INFO biome_cli::service::unix Trying to connect to socket /home/matheus/.cache/biome/biome-socket-2.2.7
β”œβ”€ INFO biome_cli::service::unix Remove socket /home/matheus/.cache/biome/biome-socket-2.2.7
┐biome_service::scanner::watcher::run{}
└─┐biome_lsp::server::initialize{}
  β”œβ”€ INFO biome_lsp::server Starting Biome Language Server...
  β”œβ”€ WARN biome_lsp::server The Biome Server was initialized with the deprecated `root_path` parameter: this is not supported, use `root_uri` instead
  └─┐biome_lsp::session::initialize{}
  β”Œβ”€β”˜
β”Œβ”€β”˜
└─┐biome_lsp::server::initialized{}
  β”œβ”€ INFO biome_lsp::server Attempting to load the configuration from 'biome.json' file
  └─┐biome_lsp::session::load_extension_settings{}
└─┐biome_lsp::handlers::text_document::did_open{text_document_uri=file:///home/matheus/programmieren/c%2b%2b/argo/src-web/typescript/advertisement.ts, text_document_language_id=typescript}
  └─┐biome_service::file_handlers::try_from_language_id{language_id="typescript"}
  β”Œβ”€β”˜
  β”œβ”€ INFO biome_lsp::handlers::text_document No open project for path: BiomePath { path: "/home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts", kind: Handleable, was_written: false }. Opening new project.
  └─┐biome_lsp::session::load_biome_configuration_file{base_path=FromLsp("/home/matheus/programmieren/c++/argo/src-web/typescript"), reload=false}
    └─┐biome_lsp::session::load_biome_configuration_file_internal{base_path=FromLsp("/home/matheus/programmieren/c++/argo/src-web/typescript"), force=false}
      └─┐biome_service::configuration::load_configuration{config_path=FromLsp("/home/matheus/programmieren/c++/argo/src-web/typescript")}
        └─┐biome_service::configuration::read_config{path_hint=FromLsp("/home/matheus/programmieren/c++/argo/src-web/typescript"), seek_root=true}
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/src-web/typescript/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/src-web/typescript/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/src-web/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/src-web/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/argo/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/c++/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/programmieren/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/matheus/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/home/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/biome.json", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
          β”œβ”€ ERROR biome_fs::fs Biome couldn't open the file "/biome.jsonc", reason:
          β”‚  Os { code: 2, kind: NotFound, message: "No such file or directory" }
        β”Œβ”€β”˜
      β”Œβ”€β”˜
      β”œβ”€ INFO biome_lsp::session Configuration loaded successfully from disk.
      β”œβ”€ INFO biome_lsp::session Update workspace settings.
      └─┐biome_service::projects::insert_project{}
        β”œβ”€ DEBUG biome_service::projects Insert workspace folder /home/matheus/programmieren/c++/argo/src-web/typescript
      β”Œβ”€β”˜
      └─┐biome_service::workspace::server::update_settings{}
        └─┐biome_service::settings::merge_with_configuration{}
        β”Œβ”€β”˜
      β”Œβ”€β”˜
      └─┐biome_lsp::session::insert_and_scan_project{project_key=ProjectKey(1), path=BiomePath { path: "/home/matheus/programmieren/c++/argo/src-web/typescript", kind: Handleable, was_written: false }, scan_kind=KnownFiles, force=false}
┐biome_lsp::session::scan_project{project_key=ProjectKey(1), scan_kind=KnownFiles, force=false}
┐biome_service::scanner::scan{project_key=ProjectKey(1), folder="/home/matheus/programmieren/c++/argo/src-web/typescript", trigger=InitialScan, scan_kind=KnownFiles, force=false, verbose=false, watch=true}
└─┐biome_service::scanner::scan_folder{folder="/home/matheus/programmieren/c++/argo/src-web/typescript"}
└─┐biome_service::scanner::watcher::watch_folders{paths={"/home/matheus/programmieren/c++/argo/src-web/typescript"}}
β”Œβ”€β”˜
β”Œβ”€β”˜
β”˜
┐biome_lsp::session::update_all_diagnostics{}
β”˜
β”˜
      β”Œβ”€β”˜
    β”Œβ”€β”˜
  β”Œβ”€β”˜
  └─┐biome_service::workspace::server::open_file_internal{reason=ClientRequest, path=/home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts}
  β”Œβ”€β”˜
  └─┐biome_lsp::session::update_diagnostics{url=file:///home/matheus/programmieren/c%2b%2b/argo/src-web/typescript/advertisement.ts}
    └─┐biome_lsp::session::update_diagnostics_for_document{url=file:///home/matheus/programmieren/c%2b%2b/argo/src-web/typescript/advertisement.ts}
      β”œβ”€ DEBUG biome_service::workspace The file has the following feature sets: FeaturesSupported([Supported, Supported, Supported, Supported, Supported])
      └─┐biome_service::workspace::server::pull_diagnostics{rule_categories=[Syntax, Lint, Action], path=/home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts, project_key=ProjectKey(1), skip=[], only=[]}
        └─┐biome_service::file_handlers::javascript::Linting JavaScript file{path=BiomePath { path: "/home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts", kind: Handleable, was_written: false }, language=Js(JsFileSource { language: TypeScript { definition_file: false }, variant: Standard, module_kind: Module, version: ES2022, embedding_kind: None })}
        β”Œβ”€β”˜
        β”œβ”€ INFO biome_service::workspace::server Pulled 3 diagnostic(s), skipped 0 diagnostic(s) from /home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts
      β”Œβ”€β”˜
      β”œβ”€ INFO biome_lsp::session Diagnostics sent to the client 3
    β”Œβ”€β”˜
  β”Œβ”€β”˜
β”Œβ”€β”˜

With version 2.3.1

server.log.2025-10-28-11:

┐biome_cli::commands::daemon::Running Server{pid=468186, log_path=Some("/home/matheus/.cache/biome/biome-logs"), log_file_name_prefix="server.log"}
β”œβ”€ INFO biome_cli::service::unix Trying to connect to socket /home/matheus/.cache/biome/biome-socket-2.3.1
β”œβ”€ INFO biome_cli::service::unix Remove socket /home/matheus/.cache/biome/biome-socket-2.3.1
┐biome_service::scanner::watcher::run{}
└─┐biome_lsp::server::initialize{}
  β”œβ”€ INFO biome_lsp::server Starting Biome Language Server...
  β”œβ”€ WARN biome_lsp::server The Biome Server was initialized with the deprecated `root_path` parameter: this is not supported, use `root_uri` instead
  └─┐biome_lsp::session::initialize{}
  β”Œβ”€β”˜
β”Œβ”€β”˜
└─┐biome_lsp::server::initialized{}
  β”œβ”€ INFO biome_lsp::server Attempting to load the configuration from 'biome.json' file
  └─┐biome_lsp::session::load_extension_settings{}
└─┐biome_lsp::handlers::text_document::did_open{text_document_uri=file:///home/matheus/programmieren/c%2b%2b/argo/src-web/typescript/advertisement.ts, text_document_language_id=typescript}
  └─┐biome_service::file_handlers::try_from_language_id{language_id="typescript"}
  β”Œβ”€β”˜
  β”œβ”€ INFO biome_lsp::handlers::text_document No open project for path: BiomePath { path: "/home/matheus/programmieren/c++/argo/src-web/typescript/advertisement.ts", kind: Handleable, was_written: false }. Opening new project.
  └─┐biome_lsp::session::load_extension_settings{}
└─┐biome_lsp::handlers::text_document::did_open{text_document_uri=file:///home/matheus/programmieren/c%2b%2b/argo/src-web/typescript/cart.ts, text_document_language_id=typescript}
  └─┐biome_service::file_handlers::try_from_language_id{language_id="typescript"}
  β”Œβ”€β”˜
  β”œβ”€ INFO biome_lsp::handlers::text_document No open project for path: BiomePath { path: "/home/matheus/programmieren/c++/argo/src-web/typescript/cart.ts", kind: Handleable, was_written: false }. Opening new project.
  └─┐biome_lsp::session::load_extension_settings{}

Spixmaster avatar Oct 28 '25 11:10 Spixmaster

That's a nasty issue caused by LSP clients where the initialisation of the Language Server happens between two LSP methods:

  • initialized
  • text_document

Which you can see from the logs. These methods are called with no specific order when you open the editor with an open file. This is more evident in terminal editors such as vim or helix. It seems you're experiencing a deadlock from our side.

In the recent patches, we've tried to fix it somehow, but it seems that some editors are still afflicted. You can read more in this PR and the linked issues https://github.com/biomejs/biome/pull/7764

I am no terminal editor user. I could try using Helix and see if I can reproduce the issue. However, without a clear reproduction, I don't know how to move forward.

ematipico avatar Oct 28 '25 16:10 ematipico

Reproduction

vim a.ts

System

Biome version 2.3.1 is installed globally.

Plugins (only important ones, rest probably not needed)

  • vim-ale

vimrc

" Basic (priority)
set t_Co=256

"" Needed for 'set termguicolors'
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"

" Plugins (priority)
"" vim-airline
let g:airline_powerline_fonts = 1
let g:airline_theme = 'molokai'

""" Symbols (See: https://github.com/vim-airline/vim-airline/issues/2706)
if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

let g:airline_left_sep = 'Β»'
let g:airline_left_sep = 'β–Ά'
let g:airline_right_sep = 'Β«'
let g:airline_right_sep = 'β—€'
let g:airline_symbols.colnr = ' ㏇:'
let g:airline_symbols.colnr = ' β„…:'
let g:airline_symbols.crypt = 'πŸ”’'
let g:airline_symbols.linenr = '☰'
let g:airline_symbols.linenr = ' ␊:'
let g:airline_symbols.linenr = ' ␀:'
let g:airline_symbols.linenr = 'ΒΆ'
let g:airline_symbols.maxlinenr = ''
let g:airline_symbols.maxlinenr = '㏑'
let g:airline_symbols.branch = 'βŽ‡'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = 'βˆ₯'
let g:airline_symbols.spell = 'Ꞩ'
let g:airline_symbols.notexists = 'Ι†'
let g:airline_symbols.whitespace = 'Ξ'

"" vim-ale
let g:ale_fix_on_save = 1
let g:ale_fixers =
            \{
            \    '*': ['remove_trailing_lines', 'trim_whitespace'],
            \    'bib': ['bibclean', 'remove_trailing_lines', 'trim_whitespace'],
            \    'cpp': ['clang-format', 'remove_trailing_lines', 'trim_whitespace'],
            \    'cmake': ['cmakeformat', 'remove_trailing_lines', 'trim_whitespace'],
            \    'css': ['css-beautify', 'remove_trailing_lines', 'stylelint', 'trim_whitespace'],
            \    'desktop': ['remove_trailing_lines', 'trim_whitespace'],
            \    'html': ['remove_trailing_lines', 'tidy', 'trim_whitespace'],
            \    'java': ['clang-format', 'remove_trailing_lines', 'trim_whitespace'],
            \    'json': ['dprint', 'remove_trailing_lines', 'trim_whitespace'],
            \    'mail': ['remove_trailing_lines', 'trim_whitespace'],
            \    'make': ['remove_trailing_lines', 'trim_whitespace'],
            \    'markdown': ['dprint', 'remove_trailing_lines', 'trim_whitespace'],
            \    'PKGBUILD': ['remove_trailing_lines', 'shfmt', 'trim_whitespace'],
            \    'po': ['remove_trailing_lines', 'trim_whitespace'],
            \    'python': ['autoflake', 'autopep8', 'isort', 'remove_trailing_lines', 'ruff', 'trim_whitespace', 'yapf'],
            \    'sh': ['remove_trailing_lines', 'shfmt', 'trim_whitespace'],
            \    'systemd': ['remove_trailing_lines', 'trim_whitespace'],
            \    'tex': ['latexindent', 'remove_trailing_lines', 'trim_whitespace'],
            \    'text': ['remove_trailing_lines', 'trim_whitespace'],
            \    'toml': ['dprint', 'remove_trailing_lines', 'trim_whitespace'],
            \    'typescript': ['dprint', 'remove_trailing_lines', 'trim_whitespace'],
            \    'vim': ['remove_trailing_lines', 'trim_whitespace'],
            \    'xml': ['remove_trailing_lines', 'trim_whitespace', 'xmllint'],
            \    'yaml': ['remove_trailing_lines', 'trim_whitespace', 'yamlfmt'],
            \    'zsh': ['remove_trailing_lines', 'shfmt', 'trim_whitespace']
            \}
let g:ale_linter_aliases =
            \{
            \    'PKGBUILD': 'sh',
            \    'zsh': 'sh'
            \}
""" Language servers are handled by YouCompleteMe and thus not included here.
let g:ale_linters =
            \{
            \    'bib': ['bibclean'],
            \    'cpp': ['clangtidy'],
            \    'cmake': ['cmake_lint'],
            \    'css': ['stylelint'],
            \    'desktop': ['desktop_file_validate'],
            \    'gitcommit': ['gitlint'],
            \    'html': ['htmlhint', 'tidy'],
            \    'java': ['javac', 'pmd'],
            \    'json': ['jq'],
            \    'mail': [],
            \    'make': ['checkmake'],
            \    'markdown': ['markdownlint'],
            \    'PKGBUILD': ['shell', 'shellcheck'],
            \    'po': ['msgfmt'],
            \    'python': ['bandit', 'mypy', 'pycodestyle', 'pydocstyle', 'pyflakes', 'pyright', 'ruff', 'vulture'],
            \    'sh': ['shell', 'shellcheck'],
            \    'systemd': ['systemd_analyze'],
            \    'tex': ['chktex'],
            \    'text': [],
            \    'toml': [],
            \    'typescript': ['biome'],
            \    'vim': ['vint'],
            \    'xml': ['xmllint'],
            \    'yaml': ['yamllint'],
            \    'zsh': ['shell', 'shellcheck']
            \}
let g:ale_linters_explicit = 1
let g:ale_virtualtext_cursor = 0

""" c
let g:ale_c_clangformat_options = '--style file:' . $XDG_CONFIG_HOME . '/clang/clang-format.yaml'

""" cmake
let g:ale_cmake_cmake_lint_options = '-c=' . $XDG_CONFIG_HOME . '/cmake-lang/cmake-lang.yaml'
let g:ale_cmake_cmakeformat_options = '-c=' . $XDG_CONFIG_HOME . '/cmake-lang/cmake-lang.yaml'

""" cpp
let g:ale_cpp_clangtidy_extra_options = '--config-file=' . $XDG_CONFIG_HOME . '/clang/clang-tidy.yaml'

""" css
let g:ale_css_css_beautify_options = '--config ' . $XDG_CONFIG_HOME . '/js-beautify/css-beautify.json'
let g:ale_css_stylelint_options = '--cache --cache-location ' . $XDG_CACHE_HOME . '/stylelint/ --config ' . $XDG_CONFIG_HOME . '/stylelint/stylelintrc.yaml'

""" dprint
let g:ale_dprint_config = $XDG_CONFIG_HOME . '/dprint/dprint.json'

""" html
let g:ale_html_htmlhint_options = '-c ' . $XDG_CONFIG_HOME . '/htmlhint/htmlhintrc.yaml'
let g:ale_html_tidy_options = '-config ' . $XDG_CONFIG_HOME . '/tidy/tidyrc -q'

""" java
let g:ale_java_pmd_options = '--cache ' . $XDG_CACHE_HOME . '/pmd/cache -R ' . $XDG_CONFIG_HOME . '/pmd/rules.xml'

""" markdown
let g:ale_markdown_markdownlint_executable = 'markdownlint-cli2'
let g:ale_markdown_markdownlint_options = '--config ' . $XDG_CONFIG_HOME . '/markdownlint/.markdownlint.yaml'

""" python
let g:ale_python_mypy_options = '--strict'
let g:ale_python_pycodestyle_options = '--max-line-length 120'
let g:ale_python_pyright_config =
            \{
            \    'pyright':
            \    {
            \        'disableLanguageServices': v:true,
            \        'disableOrganizeImports': v:false
            \    },
            \    'python':
            \    {
            \        'analysis':
            \        {
            \            'autoImportCompletions': v:true,
            \            'autoSearchPaths': v:true,
            \            'diagnosticMode': 'openFilesOnly',
            \            'diagnosticSeverityOverrides': {},
            \            'extraPaths': [],
            \            'logLevel': 'Information',
            \            'stubPath': '',
            \            'typeCheckingMode': 'strict',
            \            'typeshedPaths': [],
            \            'useLibraryCodeForTypes': v:true
            \        },
            \        'pythonPath': 'python',
            \        'venvPath': ''
            \    }
            \}
let g:ale_python_vulture_options = '--min-confidence 100'

""" sh
let g:ale_sh_shellcheck_options = '-a -Calways -o all -P SCRIPTDIR -S style -x'
let g:ale_sh_shfmt_options = '-ci -fn -i 4 -sr'

""" tex
let g:ale_tex_chktex_options = '-H -I -n 36 -n 44'
let g:ale_tex_latexindent_options = '-c /tmp/latexindent/'

""" typescript
let g:ale_biome_lsp_project_root = $XDG_CONFIG_HOME . '/biome/'

""" yaml
let g:ale_yaml_yamlfmt_options = '-conf ' . $XDG_CONFIG_HOME . '/yamlfmt/yamlfmt.yaml'
let g:ale_yaml_yamllint_options = '-c ' . $XDG_CONFIG_HOME . '/yamllint/yamllint.yaml'

"" vim-code-minimap
let g:minimap_auto_start = 1
let g:minimap_git_colors = 1
let g:minimap_highlight_search = 1
let g:minimap_width = 25

"" vim-gruvbox-community
let g:gruvbox_italic = 1

"" vim-nerdtree
let g:NERDTreeShowHidden = 1

"" vim-youcompleteme
let g:ycm_enable_semantic_highlighting = 1
""" Clang, jdt.ls, Jedi and TSServer are supported natively and therefore not included here.
let g:ycm_language_server =
            \[
            \    {
            \        'cmdline': ['autotools-language-server'],
            \        'filetypes': ['automake', 'config', 'make'],
            \        'name': 'autotools'
            \    },
            \    {
            \        'cmdline': ['cmake-language-server', 'start'],
            \        'filetypes': ['cmake'],
            \        'name': 'cmake'
            \    },
            \    {
            \        'cmdline': ['vscode-css-language-server', '--stdio'],
            \        'filetypes': ['css'],
            \        'name': 'css'
            \    },
            \    {
            \        'cmdline': ['vscode-html-language-server', '--stdio'],
            \        'filetypes': ['html'],
            \        'name': 'html'
            \    },
            \    {
            \        'cmdline': ['java-language-server'],
            \        'filetypes': ['java'],
            \        'name': 'java'
            \    },
            \    {
            \        'capabilities':
            \        {
            \            'textDocument':
            \            {
            \                'completion':
            \                {
            \                    'completionItem':
            \                    {
            \                        'snippetSupport': v:true
            \                    }
            \                }
            \            }
            \        },
            \        'cmdline': ['vscode-json-language-server', '--stdio'],
            \        'filetypes': ['json'],
            \        'name': 'json'
            \    },
            \    {
            \        'cmdline': ['marksman', 'server'],
            \        'filetypes': ['markdown'],
            \        'name': 'markdown'
            \    },
            \    {
            \        'cmdline': ['mutt-language-server'],
            \        'filetypes': ['neomuttrc'],
            \        'name': 'neomuttrc'
            \    },
            \    {
            \        'cmdline': ['termux-language-server'],
            \        'filetypes': ['PKGBUILD'],
            \        'name': 'pkgbuild'
            \    },
            \    {
            \        'cmdline': ['requirements-language-server'],
            \        'filetypes': ['requirements'],
            \        'name': 'requirements'
            \    },
            \    {
            \        'cmdline': ['bash-language-server', 'start'],
            \        'filetypes': ['sh', 'zsh'],
            \        'name': 'shell'
            \    },
            \    {
            \        'cmdline': ['texlab'],
            \        'filetypes': ['tex'],
            \        'name': 'tex'
            \    },
            \    {
            \        'cmdline': ['tmux-language-server'],
            \        'filetypes': ['tmux'],
            \        'name': 'tmux'
            \    },
            \    {
            \        'cmdline': ['vim-language-server', '--stdio'],
            \        'filetypes': ['vim'],
            \        'name': 'vim'
            \    },
            \    {
            \        'capabilities':
            \        {
            \            'textDocument':
            \            {
            \                'completion':
            \                {
            \                    'completionItem':
            \                    {
            \                        'snippetSupport': v:true
            \                    }
            \                }
            \            },
            \            'workspace':
            \            {
            \                'configuration': v:true
            \            }
            \        },
            \        'cmdline': ['yaml-language-server', '--stdio'],
            \        'filetypes': ['yaml'],
            \        'name': 'yaml'
            \    }
            \]

"" Setup (The plugins need to be loaded at the end of the plugin configuration.)
call plug#begin($XDG_DATA_HOME . '/vim/plugged/')
Plug '/usr/share/vim/vimfiles/'
call plug#end()

" Autocommands
augroup vimrc
    autocmd!
    "" File types
    autocmd vimrc BufNewFile,BufRead *.html set filetype=html

    "" Navigation
    autocmd vimrc VimEnter * NERDTree | wincmd p
    autocmd vimrc BufEnter NERD_tree_* | execute 'normal R'
augroup end

" Basic
colorscheme gruvbox
filetype indent on
filetype plugin on
set autoindent
set autoread
set background=dark
set backspace=eol,indent,start
set breakindent
set cdhome
set encoding=UTF-8
scriptencoding UTF-8
set laststatus=2
set list
set listchars=tab:>-,trail:~
" vint: -ProhibitSetNoCompatible
set nocompatible
set number
set shiftwidth=4
set smartindent
set termguicolors
set ttimeoutlen=10
syntax on

" Commands
set history=100
set wildmenu

" Cursor
set cursorline
set cursorlineopt=line,number
set scrolloff=5

" Search
set hlsearch
set ignorecase
set incsearch
set showmatch
set smartcase

" Shortcuts
nnoremap <C-q> :qa<CR>
nnoremap <C-t> :NERDTreeToggle<CR>

" Spell checking
set spell
set spelllang=de_de,en_gb

" Tabs
set expandtab
set smarttab
set tabstop=4

" XDG
set runtimepath^=$XDG_CONFIG_HOME/vim/
set runtimepath+=$XDG_DATA_HOME/vim/
set runtimepath+=$XDG_CONFIG_HOME/vim/after/

set packpath^=$XDG_DATA_HOME/vim/,$XDG_CONFIG_HOME/vim/
set packpath+=$XDG_CONFIG_HOME/vim/after/,$XDG_DATA_HOME/vim/after/

let g:netrw_home = $XDG_DATA_HOME . '/vim/'
call mkdir($XDG_DATA_HOME . '/vim/spell/', 'p')

set backupdir=$XDG_STATE_HOME/vim/backup/ | call mkdir(&backupdir, 'p')
set directory=$XDG_STATE_HOME/vim/swap/ | call mkdir(&directory, 'p')
set undodir=$XDG_STATE_HOME/vim/undo/ | call mkdir(&undodir, 'p')
set viewdir=$XDG_STATE_HOME/vim/view/ | call mkdir(&viewdir, 'p')

set viminfofile=$XDG_STATE_HOME/vim/viminfo

" Highlights (Set at the end to not be overwritten.)
highlight clear ALEError
highlight ALEError cterm=underline ctermfg=red

highlight clear ALEWarning
highlight ALEWarning cterm=underline ctermfg=yellow

highlight clear SpellBad
highlight SpellBad cterm=underline

Spixmaster avatar Oct 28 '25 18:10 Spixmaster

I believe this is caused by ale hanging if being sent with unsupported methods. More specifically in this case, it is workspace/configure

See

https://github.com/dense-analysis/ale/issues/5058#issuecomment-3463326122

HerringtonDarkholme avatar Oct 30 '25 15:10 HerringtonDarkholme