Skip to content
/ nvim Public

Simple and ready configuration for neovim(nvim) with LSP. Inited with rust and go support

Notifications You must be signed in to change notification settings

xoac/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim configuration

This is my nvim configuration. I use it to work with rust and go lang programs (LSP). But highlight works for all maintained languages with tree-sitter. It should be easy to add new languages.

Screenshot

Installation

Requirements

There can be more binaries that are required but some could be installed already in my OS use checkhealth

Arch-linux based systems
sudo pacman -S ripgreap \ # for telescope
    tar curl \ # nvim-treesitter
    community/wl-clipboard # allow copy/past to `+` register (system) on Wayland

pamac build stylua-bin
go install github.com/lighttiger2505/sqls  # for SQL support with LSP (need configuration file in $HOME/.config/config.yml)

LSPs:

sudo pacman -S \
    lua-language-serve \
	rust-analyzer rust \
    go gopls revive \ # golang
	
Ubunut based systems

TODO

Plugins

Download neovim configuration:

git clone https://github.com/xoac/nvim ~/.config/

Next you need to run nvim (you got some errors) and then :PackerSync. Unfortunately you need to close nvim and repeat procedure until you are out of errors (this is bug).

Structure

This configuration uses a different approach than the standard ones. Most of them have a struct of files like this:

Standard structure
├── init.lua
├── lua
│   ├── keymap
│   │   ├── buffer.lua
│   │   ├── escape.lua
│   │   ├── global.lua
│   │   ├── init.lua
│   │   ├── lsp.lua
│   │   ├── move.lua
│   │   ├── neovide.lua
│   │   ├── resize.lua
│   │   ├── toggleterm.lua
│   │   └── window.lua
│   ├── lsp
│   │   ├── config
│   │   │   ├── init.lua
│   │   │   ├── rust.lua
│   │   │   ├── s-lua.lua
│   │   │   ├── styl.lua
│   │   │   └── ts-js.lua
│   │   ├── init.lua
│   │   ├── lsp-setup.lua
│   │   └── ts-js-deno.lua
│   ├── packer
│   │   ├── loader.lua
│   │   ├── plugins.lua
│   │   └── settings
│   │       ├── alpha.lua
│   │       ├── autopairs.lua
│   │       ├── bufferline.lua
│   │       ├── compe.lua
│   │       ├── format.lua
│   │       ├── kommantary.lua
│   │       ├── luasnip.lua
│   │       ├── nvimtree.lua
│   │       ├── snippets
│   │       │   ├── global.lua
│   │       │   ├── init.lua
│   │       │   ├── lua.lua
│   │       │   └── rust.lua
│   │       ├── toggleterm.lua
│   │       ├── treesitter.lua
│   │       ├── which-key.lua
│   │       └── windline.lua
│   ├── settings.lua
│   └── terminal.lua

My approach should be simpler, and looks like this:

One plugin one file approach
├── init.lua
├── lua
│   ├── packer
│   │   ├── loader.lua
│   │   └── plugs
│   │       ├── bufferline.lua
│   │       ├── comment.lua
│   │       ├── formatter.lua
│   │       ├── gitsigns.lua
│   │       ├── indent-blankline.lua
│   │       ├── init.lua
│   │       ├── lightbulb.lua
│   │       ├── lsp
│   │       │   ├── go.lua
│   │       │   ├── init.lua
│   │       │   ├── rust.lua
│   │       │   └── sql.lua
│   │       ├── luasnip.lua
│   │       ├── nvim-treesitter.lua
│   │       ├── packer.lua
│   │       ├── renamer.lua
│   │       ├── telescope.lua
│   │       ├── tokyonight.lua
│   │       ├── trouble.lua
│   │       ├── twilight.lua
│   │       ├── which-key.lua
│   │       └── windline.lua
│   └── settings.lua

The rules are:

  1. In lua/packer/plugs/init.lua - one line, one plugin
  2. in lua/packer/plugs/<plug_name>.lua - one file, one plugin with settings and key mapping
  3. In lua/packer/plugs/<folder> - a group of plugins that add special functionality. In my case LSP
  4. There are 2 plugins that should be accessible everywhere:
    • packer with global variable packer - used to add more plugins
    • which-key that should be accessed with local wk = require("which-key") and this is suggested way to add new key mapping

Example benefits of this approach:

  • disable one plugin with all settings and key mapping, all you need is to comment one line in /lua/packer/plugs/init.lua
  • conflict key mapping you can check with checkhealth which-key
  • if you want modify plugin settings you only look in one file.
  • should be simpler for beginners

Credits

I was looking for inspiration in this repositories:

Contribiution

Feel free to open PR or issue.

About

Simple and ready configuration for neovim(nvim) with LSP. Inited with rust and go support

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages