Tidy neovim configuration

* Remove some unused plugins and packages.
  * e.g. floaterm, projectionist, vim-wiki, vim-easy-align,
    vim-surround, visual-star-search, vim-rhubarb
* Replace none-ls with conform.nvim and nvim-lint.
* Replace lualine.nvim with mini-statusline.
* Add neodev.
* Simplify cmp completion sources.
This commit is contained in:
Oliver Davies 2024-02-22 23:23:12 +00:00
parent 94581a9c7f
commit 3afe1bd12b
16 changed files with 184 additions and 193 deletions

1
.luacheckrc Normal file
View file

@ -0,0 +1 @@
globals = { "vim" }

View file

@ -1,5 +1,58 @@
# Changelog # Changelog
## 24th February 2024
### Added
* Add `neodev`.
### Removed
* Remove some unused plugins and packages.
* e.g. floaterm, projectionist, vim-wiki, vim-easy-align,
vim-surround, visual-star-search, vim-rhubarb
### Changed
* Tidy neovim configuration
* Replace none-ls with conform.nvim and nvim-lint.
* Replace lualine.nvim with mini-statusline.
* Simplify cmp completion sources.
## 21st February 2024
### Added
* Re-add `vim-just` and `fidget.nvim`.
## 13th February 2024
### Changed
* Use `alejandra` to format Nix files.
## 5th February 2024
### Fixed
* Fix PHPUnit command in `vim-test`.
## 27th January 2024
### Added
* Add vim-floaterm.
### Removed
* Remove Astro plugin and language server.
## 26th January 2024
### Added
* Add vim-wiki.
## 25th January 2024 ## 25th January 2024
### Added ### Added

View file

@ -8,6 +8,10 @@ catppuccin.setup {
integrations = { integrations = {
cmp = true, cmp = true,
gitsigns = true, gitsigns = true,
mini = {
enabled = true,
indentscope_color = "",
},
native_lsp = { native_lsp = {
enabled = true, enabled = true,
}, },

View file

@ -26,13 +26,9 @@ cmp.setup {
}, },
sources = { sources = {
{ name = "nvim_lsp_signature_help" },
{ name = "nvim_lsp" }, { name = "nvim_lsp" },
{ name = "nvim_lua" }, { name = "nvim_lua" },
{ name = "cmp_tabnine" },
{ name = "path" },
{ name = "luasnip" }, { name = "luasnip" },
{ name = "buffer", keyword_length = 5, max_item_count = 5 },
}, },
sorting = { sorting = {

View file

@ -1,8 +0,0 @@
-- Based on https://github.com/ALT-F4-LLC/thealtf4stream.nvim/blob/main/lua/TheAltF4Stream/floaterm.lua.
local nmap = require "opdavies.keymap".nmap
nmap { "<leader>ld", "<cmd>FloatermNew --autoclose=2 --height=0.9 --width=0.9 lazydocker<cr>" }
nmap { "<leader>lg", "<cmd>FloatermNew --autoclose=2 --height=0.9 --width=0.9 lazygit<cr>" }
nmap { "<leader>nn", "<cmd>FloatermNew --autoclose=2 --height=0.75 --width=0.75 nnn -Hde<cr>" }
nmap { "<leader>tt", "<cmd>FloatermNew --autoclose=2 --height=0.9 --width=0.9 zsh<cr>" }

View file

@ -1,9 +0,0 @@
require("lualine").setup {
options = {
component_separators = { left = "", right = "" },
extensions = { "fzf", "quickfix" },
icons_enabled = false,
section_separators = { left = "", right = "" },
theme = "catppuccin",
},
}

22
after/plugin/mini.lua Normal file
View file

@ -0,0 +1,22 @@
require("mini.ai").setup {}
require("mini.align").setup {}
require("mini.bracketed").setup {}
require("mini.hipatterns").setup {
highlighters = {
note = { pattern = "%f[%w]()NOTE()%f[%W]", group = "MiniHipatternsNote" },
todo = { pattern = "%f[%w]()TODO()%f[%W]", group = "MiniHipatternsTodo" },
},
}
require("mini.move").setup {}
require("mini.operators").setup {}
require("mini.splitjoin").setup {}
require("mini.statusline").setup {}
require("mini.surround").setup {}

View file

@ -1,58 +0,0 @@
local heuristics = {
["composer.json"] = {
["src/*.php"] = {
type = "source",
alternate = "tests/{}Test.php",
},
["src/Controller/*.php"] = {
type = "controller",
},
["src/Model/*.php"] = {
type = "model",
},
["src/Service/*.php"] = {
type = "service",
},
["tests/*Test.php"] = {
type = "test",
alternate = "src/{}.php",
},
},
["fractal.config.js"] = {
["*.config.yml"] = {
alternate = "{dirname}/{basename}.twig",
},
["*.twig"] = {
alternate = "{dirname}/{basename}.config.yml",
},
},
["package.json"] = {
["src/*.ts"] = {
type = "source",
alternate = "tests/{}.test.ts",
},
["src/*.service.ts"] = {
type = "source",
alternate = "tests/{}.test.ts",
},
["tests/*.test.ts"] = {
type = "test",
alternate = "src/{}.ts",
},
},
}
vim.g.projectionist_heuristics = heuristics
local nmap = require("opdavies.keymap").nmap
nmap { "<leader>aa", "<cmd>A<cr>" }

View file

@ -1,7 +0,0 @@
vim.g.vimwiki_list = {
{
ext = 'md',
path = '~/Documents/Google Drive/vim-wiki',
syntax = 'markdown',
}
}

View file

@ -19,11 +19,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1708118438, "lastModified": 1708655239,
"narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", "narHash": "sha256-ZrP/yACUvDB+zbqYJsln4iwotbH6CTZiTkANJ0AgDv4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", "rev": "cbc4211f0afffe6dfd2478a62615dd5175a13f9a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -33,6 +33,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-2305": {
"locked": {
"lastModified": 1704290814,
"narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"dir": "lib", "dir": "lib",
@ -54,7 +70,8 @@
"root": { "root": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"nixpkgs-2305": "nixpkgs-2305"
} }
} }
}, },

View file

@ -1,5 +1,8 @@
{ {
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-2305.url = "github:NixOS/nixpkgs/nixos-23.05";
};
outputs = inputs @ { outputs = inputs @ {
self, self,

8
justfile Normal file
View file

@ -0,0 +1,8 @@
_default:
just --list
build profile:
nix build --json --no-link --print-build-logs ".#{{ profile }}"
check:
nix flake check

View file

@ -4,6 +4,7 @@ in rec {
mkVimPlugin = {system}: let mkVimPlugin = {system}: let
inherit (pkgs) vimUtils; inherit (pkgs) vimUtils;
inherit (vimUtils) buildVimPlugin; inherit (vimUtils) buildVimPlugin;
pkgs = legacyPackages.${system}; pkgs = legacyPackages.${system};
in in
buildVimPlugin { buildVimPlugin {
@ -11,9 +12,11 @@ in rec {
postInstall = '' postInstall = ''
rm -rf $out/.envrc rm -rf $out/.envrc
rm -rf $out/.gitignore rm -rf $out/.gitignore
rm -rf $out/.luacheckrc
rm -rf $out/CHANGELOG.md rm -rf $out/CHANGELOG.md
rm -rf $out/flake.lock rm -rf $out/flake.lock
rm -rf $out/flake.nix rm -rf $out/flake.nix
rm -rf $out/justfile
rm -rf $out/lib rm -rf $out/lib
rm -rf $out/run rm -rf $out/run
rm -rf $out/stylua.toml rm -rf $out/stylua.toml
@ -22,7 +25,7 @@ in rec {
}; };
mkNeovimPlugins = {system}: let mkNeovimPlugins = {system}: let
inherit (pkgs) vimPlugins; inherit (pkgs) php82Packages vimPlugins;
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;
@ -30,6 +33,8 @@ in rec {
config.allowUnfree = true; config.allowUnfree = true;
}; };
pkgs2305 = inputs.nixpkgs-2305.legacyPackages.${system};
customVim = { customVim = {
tabline-vim = pkgs.vimUtils.buildVimPlugin { tabline-vim = pkgs.vimUtils.buildVimPlugin {
name = "tabline-vim"; name = "tabline-vim";
@ -41,16 +46,6 @@ in rec {
}; };
}; };
toggle-checkbox-nvim = pkgs.vimUtils.buildVimPlugin {
name = "toggle-checkbox-nvim";
src = pkgs.fetchFromGitHub {
owner = "opdavies";
repo = "toggle-checkbox.nvim";
rev = "main";
sha256 = "4YSEagQnLK5MBl2z53e6sOBlCDm220GYVlc6A+HNywg=";
};
};
vim-caser = pkgs.vimUtils.buildVimPlugin { vim-caser = pkgs.vimUtils.buildVimPlugin {
name = "vim-caser"; name = "vim-caser";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -100,43 +95,31 @@ in rec {
customVim.vim-textobj-xmlattr customVim.vim-textobj-xmlattr
customVim.vim-zoom customVim.vim-zoom
# {
# plugin = customVim.toggle-checkbox-nvim;
# type = "lua";
# config = ''
# vim.keymap.set("n", "<leader>t", ":lua require('toggle-checkbox').toggle()<CR>")
# '';
# }
vimPlugins.fidget-nvim
vimPlugins.harpoon
vimPlugins.refactoring-nvim
vimPlugins.comment-nvim vimPlugins.comment-nvim
vimPlugins.dial-nvim vimPlugins.dial-nvim
vimPlugins.fidget-nvim
vimPlugins.gitsigns-nvim vimPlugins.gitsigns-nvim
vimPlugins.harpoon
vimPlugins.impatient-nvim vimPlugins.impatient-nvim
vimPlugins.mini-nvim
vimPlugins.neodev-nvim
vimPlugins.nvim-web-devicons vimPlugins.nvim-web-devicons
vimPlugins.refactoring-nvim
vimPlugins.rest-nvim vimPlugins.rest-nvim
vimPlugins.undotree vimPlugins.undotree
vimPlugins.vim-easy-align
vimPlugins.vim-eunuch vimPlugins.vim-eunuch
vimPlugins.vim-highlightedyank vimPlugins.vim-highlightedyank
vimPlugins.vim-nix
vimPlugins.vim-just vimPlugins.vim-just
vimPlugins.vim-nix
vimPlugins.vim-obsession vimPlugins.vim-obsession
vimPlugins.vim-pasta vimPlugins.vim-pasta
vimPlugins.vim-polyglot vimPlugins.vim-polyglot
vimPlugins.vim-projectionist
vimPlugins.vim-repeat vimPlugins.vim-repeat
vimPlugins.vim-sleuth vimPlugins.vim-sleuth
vimPlugins.vim-surround
vimPlugins.vim-terraform vimPlugins.vim-terraform
vimPlugins.vim-textobj-user vimPlugins.vim-textobj-user
vimPlugins.vim-tmux-navigator vimPlugins.vim-tmux-navigator
vimPlugins.vim-unimpaired vimPlugins.vim-unimpaired
vimPlugins.vim-visual-star-search
vimPlugins.lualine-nvim
# { # {
# plugin = vimPlugins.vim-sort-motion; # plugin = vimPlugins.vim-sort-motion;
@ -160,7 +143,6 @@ in rec {
# Git # Git
vimPlugins.vim-fugitive vimPlugins.vim-fugitive
vimPlugins.vim-rhubarb
# Debugging # Debugging
vimPlugins.nvim-dap vimPlugins.nvim-dap
@ -175,22 +157,19 @@ in rec {
# LSP, linting and formatting # LSP, linting and formatting
vimPlugins.conform-nvim vimPlugins.conform-nvim
vimPlugins.lsp-status-nvim vimPlugins.lsp-status-nvim
vimPlugins.none-ls-nvim vimPlugins.nvim-lint
vimPlugins.nvim-lspconfig vimPlugins.nvim-lspconfig
# Completion # Completion
pkgs2305.vimPlugins.phpactor
vimPlugins.cmp-buffer vimPlugins.cmp-buffer
vimPlugins.cmp-cmdline vimPlugins.cmp-cmdline
vimPlugins.cmp-nvim-lsp vimPlugins.cmp-nvim-lsp
vimPlugins.cmp-nvim-lsp-signature-help
vimPlugins.cmp-path vimPlugins.cmp-path
vimPlugins.cmp-tabnine
vimPlugins.cmp-treesitter vimPlugins.cmp-treesitter
vimPlugins.cmp-vsnip
vimPlugins.cmp_luasnip vimPlugins.cmp_luasnip
vimPlugins.lspkind-nvim vimPlugins.lspkind-nvim
vimPlugins.nvim-cmp vimPlugins.nvim-cmp
vimPlugins.phpactor
# Snippets # Snippets
vimPlugins.friendly-snippets vimPlugins.friendly-snippets
@ -211,8 +190,6 @@ in rec {
vimPlugins.vim-dadbod-ui vimPlugins.vim-dadbod-ui
vimPlugins.vim-dadbod-completion vimPlugins.vim-dadbod-completion
vimPlugins.vim-floaterm
# # Markdown # # Markdown
# { # {
# plugin = vimPlugins.markdown-preview-nvim; # plugin = vimPlugins.markdown-preview-nvim;
@ -225,15 +202,12 @@ in rec {
# Themes # Themes
vimPlugins.catppuccin-nvim vimPlugins.catppuccin-nvim
# Wiki
vimPlugins.vimwiki
# Configuration. # Configuration.
opdavies-nvim opdavies-nvim
]; ];
mkExtraPackages = {system}: let mkExtraPackages = {system}: let
inherit (pkgs) nodePackages; inherit (pkgs) nodePackages lua54Packages php82Packages;
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;
@ -246,6 +220,7 @@ in rec {
pkgs.php81 pkgs.php81
# Language servers # Language servers
lua54Packages.luacheck
nodePackages."@tailwindcss/language-server" nodePackages."@tailwindcss/language-server"
nodePackages.bash-language-server nodePackages.bash-language-server
nodePackages.dockerfile-language-server-nodejs nodePackages.dockerfile-language-server-nodejs
@ -272,11 +247,11 @@ in rec {
pkgs.stylua pkgs.stylua
# Tools # Tools
nodePackages.markdownlint-cli
php82Packages.phpcbf
php82Packages.phpcs
php82Packages.phpstan
pkgs.html-tidy pkgs.html-tidy
pkgs.lazygit
pkgs.lazydocker
pkgs.nnn
pkgs.nodePackages.markdownlint-cli
pkgs.proselint pkgs.proselint
pkgs.shellcheck pkgs.shellcheck
]; ];

View file

@ -33,7 +33,7 @@ local custom_attach = function(client)
nvim_status.on_attach(client) nvim_status.on_attach(client)
buf_inoremap { "<C-s>", vim.lsp.buf.signature_help } buf_inoremap { "<C-k>", vim.lsp.buf.signature_help }
buf_nnoremap { "<leader>ca", vim.lsp.buf.code_action } buf_nnoremap { "<leader>ca", vim.lsp.buf.code_action }
buf_nnoremap { "<leader>d", vim.diagnostic.open_float } buf_nnoremap { "<leader>d", vim.diagnostic.open_float }
buf_nnoremap { "<leader>rn", vim.lsp.buf.rename } buf_nnoremap { "<leader>rn", vim.lsp.buf.rename }
@ -66,6 +66,8 @@ local custom_attach = function(client)
-- filetype_attach[filetype](client) -- filetype_attach[filetype](client)
end end
require("neodev").setup {}
local servers = { local servers = {
ansiblels = true, ansiblels = true,
bashls = true, bashls = true,
@ -85,9 +87,21 @@ local servers = {
lua_ls = { lua_ls = {
settings = { settings = {
Lua = { Lua = {
completion = {
callSnippet = "Replace",
},
diagnostics = { diagnostics = {
globals = { "vim" }, globals = { "vim" },
}, },
runtime = {
version = "LuaJIT",
},
workspace = {
checkThirdParty = false,
},
}, },
}, },
}, },
@ -146,9 +160,42 @@ vim.diagnostic.config {
virtual_text = { spacing = 2 }, virtual_text = { spacing = 2 },
} }
local conform = require "conform"
conform.setup {
formatters_by_ft = {
bash = { "shellcheck" },
javascript = { { "prettierd", "prettier" } },
just = { "just" },
lua = { "stylua" },
nix = { { "alejandra", "nixfmt" } },
php = { { "php_cs_fixer", "phpcbf" } },
terraform = { "terraform_fmt" },
yaml = { "yamlfmt" },
},
}
vim.keymap.set("n", "<leader>f", function() vim.keymap.set("n", "<leader>f", function()
vim.lsp.buf.format { async = true } conform.format { lsp_fallback = true, async = false, timeout_ms = 500 }
end) end)
require "opdavies.lsp.none-ls" local lint = require "lint"
require "opdavies.lsp.signature"
lint.linters_by_ft = {
dockerfile = { "hadolint" },
javascript = { "eslint_d" },
json = { "jsonlint" },
lua = { "luacheck" },
markdown = { "markdownlint" },
nix = { "nix" },
php = { "php", "phpcs", "phpstan" },
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})

View file

@ -1,47 +0,0 @@
local status_ok, null_ls = pcall(require, "null-ls")
if not status_ok then
return
end
local code_actions = null_ls.builtins.code_actions
local diagnostics = null_ls.builtins.diagnostics
local formatting = null_ls.builtins.formatting
null_ls.setup {
sources = {
code_actions.gitsigns,
formatting.alejandra,
formatting.black,
formatting.markdownlint,
formatting.phpcbf.with {
command = "./vendor/bin/phpcbf",
condition = function(utils)
return utils.root_has_file { "phpcs.xml.dist" }
end,
},
formatting.prettier,
formatting.rustywind,
formatting.stylua,
diagnostics.eslint.with {
condition = function(utils)
return utils.root_has_file { ".eslintrc.js" }
end,
},
diagnostics.markdownlint.with {
extra_args = { "--config", "~/.markdownlint.yaml" },
},
diagnostics.php,
diagnostics.phpcs.with {
command = "./vendor/bin/phpcs",
condition = function(utils)
return utils.root_has_file { "phpcs.xml.dist" }
end,
},
diagnostics.phpstan,
diagnostics.shellcheck,
},
temp_dir = "/tmp",
}

View file

@ -1,6 +0,0 @@
local status_ok, lsp_signature = pcall(require, "lsp_signature")
if not status_ok then
return
end
lsp_signature.setup {}