From: Bernie Innocenti Date: Mon, 1 Aug 2022 10:29:49 +0000 (-0400) Subject: rename Nwiz to nwiz X-Git-Url: https://codewiz.org/gitweb?p=wiki.git;a=commitdiff_plain;h=1b6e7d9fb35cab21a35725983e8e605c1bb477fd rename Nwiz to nwiz --- diff --git a/Nwiz b/Nwiz deleted file mode 100644 index 331906c..0000000 --- a/Nwiz +++ /dev/null @@ -1,116 +0,0 @@ -== 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. - -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 - * Virtual text, for inline diagnostics - * 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 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 without becoming the editor's programmer! ** - - -=== Features === - - * 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: - -{{{ - curl https://codewiz.org/pub/dotfiles/nwiz.lua -o ~/.config/nvim/plugin/nwiz.lua -}}} - -Everything is in a single file for ease of installation and to remind me to keep it short and simple. - -I'm also sharing my generic .vimrc, which doesn't use Lua and works with both Neovim and Vim 9: - -{{{ - curl https://codewiz.org/pub/dotfiles/vimrc -}}} - -Rather than overwrite your existing ##~./vimrc##, you might want to review and take some of my settings -for syntax highlighting and smart indentation. - - -=== Packer ==== - -On first run, Packer (the plugin manager) will bootstrap itself and install all plugins. -There's a good chance this will fail the first time due to the asynchronous nature of PackerSync -(patches welcome!) - -Any time you edit the list of plugins, run ##:PackerSync## to install, uninstall & update them. Easy! - -=== Language Servers === - -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, I installed these: - -{{{ -: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 diff --git a/nwiz b/nwiz new file mode 100644 index 0000000..331906c --- /dev/null +++ b/nwiz @@ -0,0 +1,116 @@ +== 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. + +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 + * Virtual text, for inline diagnostics + * 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 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 without becoming the editor's programmer! ** + + +=== Features === + + * 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: + +{{{ + curl https://codewiz.org/pub/dotfiles/nwiz.lua -o ~/.config/nvim/plugin/nwiz.lua +}}} + +Everything is in a single file for ease of installation and to remind me to keep it short and simple. + +I'm also sharing my generic .vimrc, which doesn't use Lua and works with both Neovim and Vim 9: + +{{{ + curl https://codewiz.org/pub/dotfiles/vimrc +}}} + +Rather than overwrite your existing ##~./vimrc##, you might want to review and take some of my settings +for syntax highlighting and smart indentation. + + +=== Packer ==== + +On first run, Packer (the plugin manager) will bootstrap itself and install all plugins. +There's a good chance this will fail the first time due to the asynchronous nature of PackerSync +(patches welcome!) + +Any time you edit the list of plugins, run ##:PackerSync## to install, uninstall & update them. Easy! + +=== Language Servers === + +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, I installed these: + +{{{ +: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