ALE has existed since 2016. ALE was created as an asynchronous replacement for Syntastic following the advice of the Syntastic maintainer, and has served in that function for quite some time. Since the creation of ALE, it became obvious that TypeScript was going to become extremely popular, and so @w0rp added integration with tsserver into ALE to leverage tsserver diagnostics, and then adding on top capabilties for fixing code and some light "IDE" like features became obvious. tsserver inspired LSP, which @w0rp added support for, both having come from Microsoft, and LSP has become commonplace now across all editors.
@w0rp has contributed to the LSP spec itself by way of recommending the diagnostic pull model, which still has yet to be implemented in ALE for Vim. #3600
ALE will always be maintained in Vim script with zero external dependencies so it can offer first class support for both Vim and Neovim, in every possible environment, from Debian Stable packages for ALE right through to modern advanced editors. ALE now forms a part of the DAFT under Dense Analysis, a 501(c)(3) nonprofit created by @w0rp and friends for improving IT education and training, and improving the quality of every day lives for both IT persons and the world at large.
Since time has marched on, the bleeding edge developer experience for users interested in Vim has become use of Neovim, Tree-sitter, Lua-based plugin configuration, fancy Neovim GUIs, embedding in other editors such as VS Code, and so on. This is an entirely different and exciting modern development world, and those developers have certain expectations about how to leverage a plugin for Neovim and how to configure it. In order to adapt to the modern world, ALE's code needs to be cleaned up so unnecessary aspects of ALE are removed, and tighter integration with Neovim is achieved, without loss of functionality for Vim.
Proposal
In order to faciliate a better developer experience and tighten integration, we will achieve the following.
Support Neovim's native LSP client for better integration without plugins, without loss of functionality in Vim.
Enable this support in Neovim by default for "new enough" Neovim versions, so no configuration is needed.
Run through ALE functionality and ensure all current functionality is supported.
Rewrite all documentation and tweak options so ALE can be configured entirely from Lua with relevant Lua functions. Neural has prior art for this.
Tweak any code needed to ensure that the ale_filename_mappings option works correctly for running linters and language servers from inside of Docker and docker compose.
Adjust ALE code so it automatically interferes with native VSCode functionality less when embedded in VSCode, by default.
Adjust ALE code so Tree-sitter and other UI enhancements function at their best by default.
Amend ALE code with better default for Neovide, as the preffered Neovim GUI experience.
Absorb all nvim-lspconfig default configurations into ALE, with proper author credits, so ALE supersets the default configurations for LSP, for the convenience of users.
Ensure ALE works seamlessly in combination with nvim-lspconfig.
Ensure ALE continues to work seamlessly with other LSP client plugins, such as coc.nvim.
Add support for mason.nvim, if installed, for making the installation of language servers much easier, and update documentation to point to how to use mason.
Why?
@w0rp uses ALE every single day, and will never use anything else. @w0rp will use Neovim when it actually has a 1.0.0 version, and does not sponsor it, but ironically something else with a very similar name does. 😆
Prior Reading & Watching
ThePrimeagen
- 0 to LSP : Neovim RC From ScratchHistory
ALE has existed since 2016. ALE was created as an asynchronous replacement for Syntastic following the advice of the Syntastic maintainer, and has served in that function for quite some time. Since the creation of ALE, it became obvious that TypeScript was going to become extremely popular, and so @w0rp added integration with
tsserver
into ALE to leveragetsserver
diagnostics, and then adding on top capabilties for fixing code and some light "IDE" like features became obvious.tsserver
inspired LSP, which @w0rp added support for, both having come from Microsoft, and LSP has become commonplace now across all editors.@w0rp has contributed to the LSP spec itself by way of recommending the diagnostic pull model, which still has yet to be implemented in ALE for Vim. #3600
ALE will always be maintained in Vim script with zero external dependencies so it can offer first class support for both Vim and Neovim, in every possible environment, from Debian Stable packages for ALE right through to modern advanced editors. ALE now forms a part of the DAFT under Dense Analysis, a 501(c)(3) nonprofit created by @w0rp and friends for improving IT education and training, and improving the quality of every day lives for both IT persons and the world at large.
Since time has marched on, the bleeding edge developer experience for users interested in Vim has become use of Neovim, Tree-sitter, Lua-based plugin configuration, fancy Neovim GUIs, embedding in other editors such as VS Code, and so on. This is an entirely different and exciting modern development world, and those developers have certain expectations about how to leverage a plugin for Neovim and how to configure it. In order to adapt to the modern world, ALE's code needs to be cleaned up so unnecessary aspects of ALE are removed, and tighter integration with Neovim is achieved, without loss of functionality for Vim.
Proposal
In order to faciliate a better developer experience and tighten integration, we will achieve the following.
ale_filename_mappings
option works correctly for running linters and language servers from inside of Docker and docker compose.Why?
@w0rp uses ALE every single day, and will never use anything else. @w0rp will use Neovim when it actually has a 1.0.0 version, and does not sponsor it, but ironically something else with a very similar name does. 😆