{"id":13578392,"url":"https://github.com/xoac/nvim","last_synced_at":"2025-04-09T21:33:48.834Z","repository":{"id":98056868,"uuid":"435279528","full_name":"xoac/nvim","owner":"xoac","description":"Simple and ready configuration for neovim(nvim) with LSP. Inited with rust and go support","archived":false,"fork":false,"pushed_at":"2022-02-14T18:26:45.000Z","size":279,"stargazers_count":11,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T23:27:11.181Z","etag":null,"topics":["dots","lua","neovide","neovim","neovim-configuration","nvim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xoac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-12-05T21:08:48.000Z","updated_at":"2024-07-01T06:09:28.000Z","dependencies_parsed_at":"2024-01-16T20:28:32.878Z","dependency_job_id":null,"html_url":"https://github.com/xoac/nvim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoac%2Fnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoac%2Fnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoac%2Fnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoac%2Fnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xoac","download_url":"https://codeload.github.com/xoac/nvim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248115061,"owners_count":21050160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dots","lua","neovide","neovim","neovim-configuration","nvim"],"created_at":"2024-08-01T15:01:30.153Z","updated_at":"2025-04-09T21:33:48.804Z","avatar_url":"https://github.com/xoac.png","language":"Lua","readme":"# Neovim configuration\n\nThis 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.\n\n![Screenshot](./screenshot.png)\n\n## Installation\n\n### Requirements\n\n__There can be more binaries that are required but some could be installed already in my OS use `checkhealth`__\n\n\u003cdetails\u003e\n  \u003csummary\u003eArch-linux based systems\u003c/summary\u003e\n\n```sh\nsudo pacman -S ripgreap \\ # for telescope\n    tar curl \\ # nvim-treesitter\n    community/wl-clipboard # allow copy/past to `+` register (system) on Wayland\n\npamac build stylua-bin\ngo install github.com/lighttiger2505/sqls  # for SQL support with LSP (need configuration file in $HOME/.config/config.yml)\n```\n\nLSPs:\n```sh\nsudo pacman -S \\\n    lua-language-serve \\\n\trust-analyzer rust \\\n    go gopls revive \\ # golang\n\t\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eUbunut based systems\u003c/summary\u003e\n\nTODO\n\u003c/details\u003e\n\n### Plugins\n\nDownload neovim configuration:\n```sh\ngit clone https://github.com/xoac/nvim ~/.config/\n```\n\nNext 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).\n\n## Structure\n\nThis configuration uses a different approach than the standard ones. Most of them have a struct of files like this:\n\u003cdetails\u003e\n  \u003csummary\u003e Standard structure \u003c/summary\u003e\n\n```\n├── init.lua\n├── lua\n│   ├── keymap\n│   │   ├── buffer.lua\n│   │   ├── escape.lua\n│   │   ├── global.lua\n│   │   ├── init.lua\n│   │   ├── lsp.lua\n│   │   ├── move.lua\n│   │   ├── neovide.lua\n│   │   ├── resize.lua\n│   │   ├── toggleterm.lua\n│   │   └── window.lua\n│   ├── lsp\n│   │   ├── config\n│   │   │   ├── init.lua\n│   │   │   ├── rust.lua\n│   │   │   ├── s-lua.lua\n│   │   │   ├── styl.lua\n│   │   │   └── ts-js.lua\n│   │   ├── init.lua\n│   │   ├── lsp-setup.lua\n│   │   └── ts-js-deno.lua\n│   ├── packer\n│   │   ├── loader.lua\n│   │   ├── plugins.lua\n│   │   └── settings\n│   │       ├── alpha.lua\n│   │       ├── autopairs.lua\n│   │       ├── bufferline.lua\n│   │       ├── compe.lua\n│   │       ├── format.lua\n│   │       ├── kommantary.lua\n│   │       ├── luasnip.lua\n│   │       ├── nvimtree.lua\n│   │       ├── snippets\n│   │       │   ├── global.lua\n│   │       │   ├── init.lua\n│   │       │   ├── lua.lua\n│   │       │   └── rust.lua\n│   │       ├── toggleterm.lua\n│   │       ├── treesitter.lua\n│   │       ├── which-key.lua\n│   │       └── windline.lua\n│   ├── settings.lua\n│   └── terminal.lua\n```\n\u003c/details\u003e\n\u003cbr/\u003e\n\n**My approach should be simpler, and looks like this:**\n\n\u003cdetails\u003e \n  \u003csummary\u003eOne plugin one file approach\u003c/summary\u003e\n\n```\n├── init.lua\n├── lua\n│   ├── packer\n│   │   ├── loader.lua\n│   │   └── plugs\n│   │       ├── bufferline.lua\n│   │       ├── comment.lua\n│   │       ├── formatter.lua\n│   │       ├── gitsigns.lua\n│   │       ├── indent-blankline.lua\n│   │       ├── init.lua\n│   │       ├── lightbulb.lua\n│   │       ├── lsp\n│   │       │   ├── go.lua\n│   │       │   ├── init.lua\n│   │       │   ├── rust.lua\n│   │       │   └── sql.lua\n│   │       ├── luasnip.lua\n│   │       ├── nvim-treesitter.lua\n│   │       ├── packer.lua\n│   │       ├── renamer.lua\n│   │       ├── telescope.lua\n│   │       ├── tokyonight.lua\n│   │       ├── trouble.lua\n│   │       ├── twilight.lua\n│   │       ├── which-key.lua\n│   │       └── windline.lua\n│   └── settings.lua\n```\n\u003c/details\u003e\n\u003c/br\u003e\n\n**The rules are:**\n1. In `lua/packer/plugs/init.lua` - one line, one plugin\n2. in `lua/packer/plugs/\u003cplug_name\u003e.lua` - one file, one plugin with settings and key mapping\n3. In `lua/packer/plugs/\u003cfolder\u003e` - a group of plugins that add special functionality. In my case LSP \n4. There are 2 plugins that should be accessible everywhere:\n    - `packer` with global variable `packer` - used to add more plugins\n    - `which-key` that should be accessed with `local wk = require(\"which-key\")` and this is suggested way to add new key mapping\n\n\n**Example benefits of this approach**:\n  - disable one plugin with all settings and key mapping, all you need is to comment one line in `/lua/packer/plugs/init.lua`\n  - conflict key mapping you can check with `checkhealth which-key`\n  - if you want modify plugin settings you only look in one file.\n  - should be simpler for beginners \n\n### Credits\n\nI was looking for inspiration in this repositories:\n\n - https://github.com/MiaadTeam/lesvim\n - https://github.com/jonhoo/configs\n\n### Contribiution\n\nFeel free to open PR or issue.\n","funding_links":[],"categories":["Lua"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoac%2Fnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoac%2Fnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoac%2Fnvim/lists"}