Skip to content

Neovim featuresλ︎

A clean UI provides for a distraction free development experience, with only the essential information presented in the Neovim statusline or inline with the code

Neovim News for new developments

Keep up to date with new features within Neovim

:help news

View the news from a previous verion of Neovim

:help news-0.10

Clojure developmentλ︎

Support for the Clojure programming language, providing tools for REPL driven development.

  • Conjure REPL client - automatic Clojure REPL connection, evaluation, test runners
  • Clojure LSP - auto-completion, snippets, inline linting, reference navigation, refactor and unit test coverage
  • Structural editing with paredit and parinfer
  • Clojure snippets for common code and config
  • Babashka files set to Clojure filetype (feedback welcome on Babashka support)
  • JSON support

Conjureλ︎

Conjure An interactive environment for evaluating code, e.g. a Clojure REPL. Conjure automatically connects to an nREPL process running in the current project.

Evaluate Clojure code as its developed for an instant feedback workflow.

Run unit tests with Kaocha test runner (Cognitect Labs and ClojureScript runners also available)

Plugin manager & Tools Managerλ︎

Lazy.nvim manages neovim plugins with a rich UI that provides an enjoyable user experience. Plugins are automatically installed during startup and lists the status of each plugins.

Plugins are automatic cached & bytecode compiled and can be lazy loaded to streamline startup time and resource usage based on events, commands, filetypes, and key mappings. Efficient plugin downloads using partial blob-less clones of plugin repositories, i.e. --filter=blob:none

Lazy package manager UI

Lazy.nvim

Mason installs and updates LSP servers, format and lint tools.

Treesitterλ︎

Incremental parsing of code for efficient manipulation and decoration (syntax highlighting, errors, warnings, etc.)

Tree-sitter parses files opened in Neovim and builds a concrete syntax tree that any Neovim plugin can use to efficiently provide feedback. Treesitter uses incremental parsing to efficiently update the syntax tree as a file is edited.

  • parse on every keystroke in a text editor
  • provide useful results even in the presence of syntax errors

🌐 Treesitter

Language Server Protocolλ︎

Neovim includes an LSP client which uses the information recieved from a language specific LSP server in real-time to provide a range of services:

  • auto-completion of function and symbol names
  • live linting as code is typed or opened from a file
  • formatting
  • function signatures and help documentation
  • diagnostics (syntax errors & idioms)
  • symantic analysis providing rename through project, go-to-definition & find-references

LSP feedback is often presented in the buffer, file browser and status line of Neovim.

LSP Server implementation is not universal

LSP is a relatively new specification and many server implmentations are still evolving or are yet to be created.

Lint tools tend to be more prevelent and may be required in concert with or in the absence of an LSP server.

LSP related Plugins
  • neovim/nvim-lspconfig - connect Neovim lsp client to lsp servers
  • jose-elias-alvarez/null-ls.nvim - hook format and lint tools into the Neovim LSP client
  • jayp0521/mason-null-ls.nvim - automatically install formatters/linters to be used by null-ls
  • williamboman/mason - install and manage LSP servers, DAP servers, linters, and formatters
  • williamboman/mason-lspconfig - register LSP configs with neovim so LSP client can connect to servers

Lint and format tools:λ︎

Linters check code for common problems and provide hints on how to correct any detected issues.

Format tools suppor code to conforming to a specified coding style, typically these run when save-file is run.

null-ls provides extensive builtin configuration for programming languages and configuration formats. null-ls also passes lint and format tool information to the Neovim LSP client, extending the range of language support.

Selection Narrowingλ︎

telescope.nvim is a highly extendable fuzzy finder over lists with community driven pickers, sorters and previewers.

Navigate and narrow lists of files, packages, environment variables, ports, colour schemes (themes) and any other list of items effectively.

Telescope File browser popup also explores the file system and in Normal mode can be used to create files and directories

The telescope list narrows matches as characters are typed

Version Controlλ︎

Gitsigns hightlights buffer changes in the gutter

Diffview to review all changes for any git revision

Neogit provides a rich git client to add, stash, commit, push & pull changes (like Emacs Magit & VSCode Edamagit).

LazyGit integration (requires local lazygit install)

Octo provides a GitHub specific client to manage issues and pull requests, using GitHub CLI authentication.

LazyGit UI

File Browserλ︎

neo-tree provides a visual file system explorer that can also create and delete files and directories

TODO Commentsλ︎

Highlight tasks, fixes, notes and dragons comments, including icons in the gutter. Use Telescope to navigate TODO comments in the current project.

Status Lineλ︎

LSP feedback

Markdownλ︎

  • LSP server
  • Marksman: select anchors and pages for links

General Editing toolsλ︎

  • todo comments todo, fix, notes, indicators with gutter icons
  • relative line numbers for vim-style navigation
  • Clojure LSP server install & integration (install via mason or local install)
  • Switch between associate src and test files (speeds up writing/fixing tests) :gratitude: to @dominicm
  • Treesitter highlighting & rainbow delimiters
  • Search & Replace (grug-far)
  • Multiple Cursors

UIλ︎

  • Selection narrowing (Snacks picker) completion of files, packages, colour schemes, etc
  • Folke Snacks picker & Notifications
  • Noice fancy command line UI
  • File browser - selection narrowing and visual file system navigation
  • statusline - LSP status, diff changes, filetype, cursor position

Colorschemes & Themesλ︎

Catppuccin is a very clean theme with Treesitter integration and support from a wide range of Neovim plugins.

Astro5 also includes a color selector and color code highlighting.

Emoji completions are shown when typing :

Neovide (GUI) integration (scaling fonts, etc) Show key presses in when Neovim normal mode (demos, screen-casts)