intellij-lsp-server
ncm2
intellij-lsp-server | ncm2 | |
---|---|---|
2 | 2 | |
314 | 1,332 | |
- | 0.0% | |
0.0 | 1.8 | |
about 5 years ago | about 2 years ago | |
Kotlin | Python | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
intellij-lsp-server
-
Why LSP?
I once had the idea of implementing an LSP server by embedding it as an IntelliJ plugin and backgrounding the IDE while doing the actual coding in Emacs.
It kind of worked, but once I stopped needing to use Java for my job it became too much of a hassle to flesh out.
https://github.com/Ruin0x11/intellij-lsp-server
-
Rust-Analyzer Architecture
The LSP means every single language server has to reinvent the wheel again and again.
It’d have been much more useful to build bindings for IDEA plugins so they could be integrated into arbitrary editors, especially as the IDEA plugins for most languages even after several years of LSP development are still superior.
All in all it’s like the whole JVM vs. WASM, Java vs Electron story again, with someone deciding to reinvent the wheel but worse.
There’s even bindings like https://github.com/Ruin0x11/intellij-lsp-server or https://plugins.jetbrains.com/plugin/10209-lsp-support to glue it all back together.
It’d have been much simpler to reuse an existing ecosystem from the start.
ncm2
-
Why LSP?
Assuming you're talking about this ncm[0], are you aware that ncm is a " completion framework for neovim", which is different from an LSP? ncm is either an LSP client itself, or, it is talking to neovim's internal LSP client, to get completions from LSPs.
It's also important to note that LSPs almost always provide you more than auto completion (for example, go to definition, go to implementation, find references).
Do let me know if you have more questions, neovim and LSPs are my "daily driver" as a dev, so to speak.
[0] https://github.com/ncm2/ncm2
-
Getting ncm2 and ncm-r to work
call plug#begin() " assuming you're using vim-plug: https://github.com/junegunn/vim-plug Plug 'ncm2/ncm2' Plug 'roxma/nvim-yarp' " enable ncm2 for all buffers autocmd BufEnter * call ncm2#enable_for_buffer() " IMPORTANT: :help Ncm2PopupOpen for more information set completeopt=noinsert,menuone,noselect " NOTE: you need to install completion sources to get completions. Check " our wiki page for a list of sources: https://github.com/ncm2/ncm2/wiki Plug 'ncm2/ncm2-bufword' Plug 'ncm2/ncm2-path' " R plugin " Plug 'jalvesaq/Nvim-R' " Plug 'ncm2/ncm2' " Plug 'roxma/nvim-yarp' Plug 'gaalcaras/ncm-R' if !has('nvim') Plug 'roxma/vim-hug-neovim-rpc' endif Plug 'ncm2/ncm2-bufword' Plug 'ncm2/ncm2-path' call plug#end()
What are some alternatives?
language-server-protocol - Defines a common protocol for language servers.
Nvim-R - Vim plugin to work with R
neovim - Vim-fork focused on extensibility and usability
telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time.
nvim-lspconfig - Quickstart configs for Nvim LSP
ncm-R - R autocompletion for Neovim and vim 8 :memo: :bar_chart: :zap:
rust-analyzer - A Rust compiler front-end for IDEs [Moved to: https://github.com/rust-lang/rust-analyzer]
semshi - 🌈 Semantic Highlighting for Python in Neovim
rust-analyzer - A Rust compiler front-end for IDEs
defx.nvim - :file_folder: The dark powered file explorer implementation for neovim/Vim8
eglot - A client for Language Server Protocol servers
NeoVintageous - Vim for Sublime Text.