X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=Nwiz;h=331906c988db21524b07f406233efb163a17f6f9;hb=aa53b75cd516e60aca08b2c2c15c470d0065f729;hp=2374a6cd91ab7d5d2d6b651dafdeec4928e1a52b;hpb=5a2bfdcaaef0685bd2c0843a0774084fccb2c6f3;p=wiki.git diff --git a/Nwiz b/Nwiz index 2374a6c..331906c 100644 --- a/Nwiz +++ b/Nwiz @@ -1,15 +1,17 @@ -== nwiz.lua - A Neovim config for a more civilized age == +== nwiz, the code editor for a more civilized era == === What's this? === +** My goal is to use [[https://neovim.io/ | Neovim]] as a modern coding environment for C, C++, Rust, Python and other languages. ** + +
{{nvim-completion.png | maxwidth=600}}
+ Neovim has no shortage of powerful plugins for programmers, but it's a fast moving ecosystem. Picking the right combination of plugins and configuring them as an integrated development environment is still far from trivial. I also reviewed a number of GUIs and "super plugins" which aim to be a complete IDE, but all of them had maturity and usability issues. -My goal is using Neovim as a productive and unintrusive IDE for C, C++, Rust and Python. -I curated a short list of well-maintained plugins that take advantage of Neovim's built-in -IDE components: +I curated a list of well-maintained plugins that take advantage of Neovim's built-in IDE components: * Language Server Protocol, for semantic completion * Treesitter, for semantic syntax highlighting @@ -17,20 +19,30 @@ IDE components: * Floating windows, for inline help and function parameter assistance The plugin ecosystem is still maturing, but over time the amount of Lua scripting required -to piece together a functional IDE seems to be going down. Ideally, you wouldn't have +to piece together a fully functional IDE seems to be going down. Ideally, you wouldn't have to learn Lua to edit your Neovim config. -** I want a programmer's editor, not become an editor's programmer! ** +** I want a programmer's editor without becoming the editor's programmer! ** + === Features === - * Quick open files + * Quickly open files with fuzzy search * Semantic completion * Configures language servers for C/C++, Rust, Python * Adding more languages made easy by lspconfig * Inline diagnostics and hints +=== Requirements === + +TODO: Minimum neovim version? + +TODO: Recommend a good terminal with undercurls, mouse support... + +TODO: Nerd fonts installation + + === Installation === To get started, download nwiz.lua to Neovim's plugin dir so it will be autoloaded at startup: @@ -61,14 +73,44 @@ Any time you edit the list of plugins, run ##:PackerSync## to install, uninstall === Language Servers === -TODO +Neovim 0.7 comes with a built-in LSP client. The official [[https://github.com/neovim/nvim-lspconfig | nvim-lspconfig]] +plugin abstracts the details of spawning the correct Language Server for a multitude of filetypes. + +Download and installation of language servers can be managed automatically by +[[https://github.com/williamboman/nvim-lsp-installer | nvim-lsp-installer]], but I find that it's +simpler (and much safer!) to install the already packaged ones from Linux distro. This also ensures +that they stay aligned with the system toolchain. + + * Rust: rust-analyzer + * C++: clangd + * Python: python-lsp-server (which uses mypy, pylint, autopep8...) === Treesitter syntax parsers === Install the ones you like from this list: https://github.com/nvim-treesitter/nvim-treesitter#supported-languages -For instance: +For instance, I installed these: {{{ -:TSInstall c cpp rust lua python bash vim -}}} \ No newline at end of file +:TSInstall cpp rust lua python bash vim +}}} + +You can refresh your parsers at any time with ##:TSUpdate## + +=== Semantic completion === + +Just press TAB! + +TODO: docs for [[https://github.com/hrsh7th/nvim-cmp#readme | cmp-nvim]] + + +=== Finding and opening files === + +{{nvim-telescope.png | maxwidth=400}} + + +TODO: docs for [[https://github.com/nvim-telescope/telescope.nvim | telescope.nvim]] + +=== Realtime diagnostics and hints === + +TODO: document