Extract neovim configuration to a separate

...repository

https://github.com/opdavies/opdavies.nvim
This commit is contained in:
Oliver Davies 2024-01-24 08:32:38 +00:00
parent 16520cca16
commit 6d27e72b02
40 changed files with 70 additions and 1696 deletions

View file

@ -1,4 +0,0 @@
setlocal norelativenumber
setlocal nonumber
setlocal scrolloff=0

View file

@ -1,21 +0,0 @@
local status_ok, catppuccin = pcall(require, "catppuccin")
if not status_ok then
return
end
catppuccin.setup {
flavour = "macchiato",
integrations = {
cmp = true,
gitsigns = true,
native_lsp = {
enabled = true,
},
telescope = true,
treesitter = true,
},
term_colors = true,
transparent_background = true,
}
vim.cmd.colorscheme "catppuccin"

View file

@ -1,19 +0,0 @@
local status_ok, comment = pcall(require, "Comment")
if not status_ok then
return
end
comment.setup {
padding = true,
opleader = {
line = "gc",
block = "gb",
},
mappings = {
basic = true,
extra = true,
extended = false,
},
}

View file

@ -1,82 +0,0 @@
local cmp_status_ok, cmp = pcall(require, "cmp")
if not cmp_status_ok then
return
end
local snip_status_ok, luasnip = pcall(require, "luasnip")
if not snip_status_ok then
return
end
vim.opt.shortmess:append "c"
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-e>"] = cmp.mapping.close(),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-y>"] = cmp.mapping.confirm { select = true },
["<tab>"] = cmp.config.disable,
},
sources = {
{ name = "nvim_lsp_signature_help" },
{ name = "nvim_lsp" },
{ name = "nvim_lua" },
{ name = "cmp_tabnine" },
{ name = "path" },
{ name = "luasnip" },
{ name = "buffer", keyword_length = 5, max_item_count = 5 },
},
sorting = {
comparators = {
cmp.config.compare.offset,
cmp.config.compare.exact,
cmp.config.compare.score,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
formatting = {
format = require("lspkind").cmp_format {
with_text = true,
menu = {
buffer = "[buf]",
cmp_tabnine = "[tn]",
luasnip = "[snip]",
nvim_lsp = "[lsp]",
nvim_lua = "[lua]",
path = "[path]",
},
},
},
experimental = {
ghost_text = true,
native_menu = false,
},
}
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "buffer" },
},
})
vim.cmd [[
augroup DadbodSql
au!
autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer { sources = { { name = 'vim-dadbod-completion' } } }
augroup END
]]

View file

@ -1,11 +0,0 @@
local conform = require "conform"
conform.setup {
formatters_by_ft = {
rst = { "rstfmt" },
},
}
conform.formatters.rstfmt = {
command = "rstfmt";
}

View file

@ -1,74 +0,0 @@
local has_dap, dap = pcall(require, "dap")
if not has_dap then
return
end
local has_dap_ui, dapui = pcall(require, "dapui")
if not has_dap_ui then
return
end
dap.adapters.php = {
type = "executable",
command = "node",
args = { os.getenv "HOME" .. "/build/vscode-php-debug/out/phpDebug.js" },
}
dap.configurations.php = {
{
type = "php",
request = "launch",
name = "Listen for Xdebug",
port = 9003,
pathMappings = {
["/var/www/html"] = "${workspaceFolder}",
},
},
}
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dapui.close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close()
end
require("dapui").setup {
layouts = {
{
elements = {
{ id = "scopes", size = 0.25 },
"breakpoints",
"stacks",
"watches",
},
size = 40, -- 40 columns
position = "right",
},
{
elements = {
"repl",
"console",
},
size = 0.25, -- 25% of total lines
position = "bottom",
},
},
}
require("nvim-dap-virtual-text").setup {
commented = true,
}
local nmap = require("opdavies.keymap").nmap
nmap { "<F12>", ":lua require'dap'.step_over()<cr>" }
nmap { "<F2>", ":lua require'dap'.step_into()<cr>" }
nmap { "<F3>", ":lua require'dap'.step_over()<cr>" }
nmap { "<F5>", ":lua require'dap'.continue()<cr>" }
nmap { "<leader>b", ":lua require'dap'.toggle_breakpoint()<cr>" }

View file

@ -1,52 +0,0 @@
local status_ok, dial_config = pcall(require, "dial.config")
if not status_ok then
return
end
local augend = require "dial.augend"
dial_config.augends:register_group {
visual = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.date.alias["%Y/%m/%d"],
augend.constant.alias.alpha,
augend.constant.alias.Alpha,
},
mygroup = {
augend.constant.new {
elements = { "TRUE", "FALSE" },
word = true,
cyclic = true,
},
augend.constant.new {
elements = { "public", "protected", "private" },
word = true,
cyclic = true,
},
augend.constant.new {
elements = { "&&", "||" },
word = false,
cyclic = true,
},
augend.date.alias["%d/%m/%Y"],
augend.constant.alias.bool, -- boolean value (true <-> false)
augend.integer.alias.decimal,
augend.integer.alias.hex,
augend.semver.alias.semver,
},
}
local dial_map = require "dial.map"
local nmap = require("opdavies.keymap").nmap
local vmap = require("opdavies.keymap").vmap
nmap { "<C-a>", dial_map.inc_normal "mygroup" }
nmap { "<C-x>", dial_map.dec_normal "mygroup" }
vmap { "<C-a>", dial_map.inc_normal "visual" }
vmap { "<C-x>", dial_map.dec_normal "visual" }

View file

@ -1,23 +0,0 @@
vim.keymap.set("n", "<leader>gc", "<cmd>Git commit<cr><C-w>K")
vim.keymap.set("n", "<leader>gs", "<cmd>Git<cr><C-w>K")
vim.api.nvim_create_autocmd("BufWinEnter", {
pattern = "*",
callback = function()
if vim.bo.ft ~= "fugitive" then
return
end
local bufnr = vim.api.nvim_get_current_buf()
local opts = { buffer = bufnr, remap = false }
vim.keymap.set("n", "<leader>p", function()
vim.cmd.Git "push"
end, opts)
vim.keymap.set("n", "<leader>P", function()
vim.cmd.Git { "pull", "--rebase" }
end, opts)
end,
})

View file

@ -1,40 +0,0 @@
local gitsigns_status_ok, gitsigns = pcall(require, "gitsigns")
if not gitsigns_status_ok then
return
end
gitsigns.setup {
linehl = false,
numhl = true,
}
local bufnr = vim.api.nvim_get_current_buf()
local map = require("opdavies.keymap").map
local nmap = require("opdavies.keymap").nmap
local vmap = require("opdavies.keymap").vmap
nmap { "[h", "<cmd>Gitsigns prev_hunk<CR>" }
nmap { "]h", "<cmd>Gitsigns next_hunk<CR>" }
nmap { "<leader>hR", gitsigns.reset_buffer }
nmap { "<leader>hS", gitsigns.stage_buffer }
nmap { "<leader>hp", gitsigns.preview_hunk }
nmap { "<leader>hr", gitsigns.reset_hunk }
nmap { "<leader>hs", gitsigns.stage_hunk }
nmap { "<leader>hu", gitsigns.undo_stage_hunk }
vmap {
"<leader>hr",
function()
gitsigns.reset_hunk { vim.fn.line ".", vim.fn.line "v" }
end,
}
vmap {
"<leader>hs",
function()
gitsigns.stage_hunk { vim.fn.line ".", vim.fn.line "v" }
end,
}
-- Text object.
map { { "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>" }

View file

@ -1,18 +0,0 @@
require("harpoon").setup()
local nmap = require("opdavies.keymap").nmap
nmap { "<M-h><M-l>", require("harpoon.ui").toggle_quick_menu }
nmap { "<M-h><M-m>", require("harpoon.mark").add_file }
nmap { "<leader>hl", require("harpoon.ui").toggle_quick_menu }
nmap { "<leader>hm", require("harpoon.mark").add_file }
for i = 1, 5 do
nmap {
string.format("<space>%s", i),
function()
require("harpoon.ui").nav_file(i)
end,
}
end

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",
},
}

View file

@ -1,97 +0,0 @@
if not pcall(require, "luasnip") then
return
end
local api = vim.api
local fn = vim.fn
local ls = require "luasnip"
local snippet = ls.snippet
local t = ls.text_node
local shortcut = function(val)
if type(val) == "string" then
return { t { val }, i(0) }
end
if type(val) == "table" then
for k, v in ipairs(val) do
if type(v) == "string" then
val[k] = t { v }
end
end
end
return val
end
local make = function(tbl)
local result = {}
for k, v in pairs(tbl) do
table.insert(result, (snippet({ trig = k, desc = v.desc }, shortcut(v))))
end
return result
end
local snippets = {}
for _, ft_path in ipairs(api.nvim_get_runtime_file("lua/opdavies/snippets/ft/*.lua", true)) do
local ft = fn.fnamemodify(ft_path, ":t:r")
snippets[ft] = make(loadfile(ft_path)())
ls.add_snippets(ft, snippets[ft])
end
ls.add_snippets("js", snippets.javascript)
ls.add_snippets("typescript", snippets.javascript)
ls.add_snippets("vue", snippets.javascript)
require("luasnip.loaders.from_vscode").lazy_load()
ls.config.set_config {
enable_autosnippets = true,
history = true,
updateevents = "TextChanged,TextChangedI",
}
local imap = require("opdavies.keymap").imap
local map = require("opdavies.keymap").map
local nmap = require("opdavies.keymap").nmap
-- Expand the current item or just to the next item within the snippet.
map {
{ "i", "s" },
"<c-k>",
function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end,
{ silent = true },
}
-- Jump backwards.
map {
{ "i", "s" },
"<c-j>",
function()
if ls.jumpable(-1) then
ls.jump(-1)
end
end,
{ silent = true },
}
-- Select within a list of options.
imap {
"<c-l>",
function()
if ls.choice_active() then
ls.change_choice(1)
end
end,
}
nmap { "<leader><leader>s", "<cmd>source ~/Code/github.com/opdavies/dotfiles/config/neovim/after/plugin/luasnip.lua<CR>" }

View file

@ -1,6 +0,0 @@
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
vim.g.netrw_banner = 0
vim.g.netrw_browse_split = 0
vim.g.netrw_liststyle = 3
vim.g.netrw_winsize = 20

View file

@ -1,12 +0,0 @@
local status_ok, rest_nvim = pcall(require, "rest-nvim")
if not status_ok then
return
end
rest_nvim.setup()
local nmap = require("opdavies.keymap").nmap
nmap { "<leader>rr", "<plug>RestNvim<cr>" }
nmap { "<leader>rp", "<plug>RestNvimPreview<cr>" }
nmap { "<leader>rl", "<plug>RestNvimLast<cr>" }

View file

@ -1,4 +0,0 @@
local nmap = require("opdavies.keymap").nmap
nmap { "<leader>pm", "<cmd>:PhpactorContextMenu<CR>" }
nmap { "<leader>pn", "<cmd>:PhpactorClassNew<CR>" }

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,18 +0,0 @@
local status_ok, refactoring = pcall(require, "refactoring")
if not status_ok then
return
end
local nmap = require("opdavies.keymap").nmap
local vmap = require("opdavies.keymap").vmap
-- TODO: add keymaps - https://github.com/ThePrimeagen/refactoring.nvim#configuration-for-refactoring-operations
refactoring.setup {}
local opts = { silent = true }
nmap { "<Leader>ri", "<Cmd>lua require 'refactoring'.refactor 'Inline Variable'<Cr>", opts }
vmap { "<Leader>re", "<Esc><Cmd>lua require 'refactoring'.refactor 'Extract Function'<Cr>", opts }
vmap { "<Leader>ri", "<Esc><Cmd>lua require 'refactoring'.refactor 'Inline Variable'<Cr>", opts }
vmap { "<Leader>rv", "<Esc><Cmd>lua require 'refactoring'.refactor 'Extract Variable'<Cr>", opts }

View file

@ -1,137 +0,0 @@
local configs = require "nvim-treesitter.configs"
local context = require "treesitter-context"
local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move"
local map = require("opdavies.keymap").map
local nmap = require("opdavies.keymap").nmap
configs.setup {
autotag = {
enable = true,
},
context_commenting = {
enable = true,
},
highlight = {
enable = true,
},
indent = {
disable = { "yaml" },
enable = true,
},
matchup = {
enable = true,
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" },
["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" },
["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" },
["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" },
["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" },
["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" },
["l:"] = { query = "@property.lhs", desc = "Select left part of an object property" },
["r:"] = { query = "@property.rhs", desc = "Select right part of an object property" },
["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" },
["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" },
["ac"] = { query = "@class.outer", desc = "Select outer part of a class" },
["ic"] = { query = "@class.inner", desc = "Select inner part of a class" },
["af"] = { query = "@call.outer", desc = "Select outer part of a function call" },
["if"] = { query = "@call.inner", desc = "Select inner part of a function call" },
["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" },
["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" },
["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" },
["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" },
["am"] = { query = "@function.outer", desc = "Select outer part of a method/function definition" },
["im"] = { query = "@function.inner", desc = "Select inner part of a method/function definition" },
},
},
},
swap = {
enable = true,
swap_next = {
["<leader>na"] = "@parameter.inner", -- swap parameters/argument with next
["<leader>n:"] = "@property.outer", -- swap object property with next
["<leader>nm"] = "@function.outer", -- swap function with next
},
swap_previous = {
["<leader>pa"] = "@parameter.inner", -- swap parameters/argument with prev
["<leader>p:"] = "@property.outer", -- swap object property with prev
["<leader>pm"] = "@function.outer", -- swap function with previous
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
["]f"] = { query = "@call.outer", desc = "Next function call start" },
["]m"] = { query = "@function.outer", desc = "Next method/function def start" },
["]c"] = { query = "@class.outer", desc = "Next class start" },
["]i"] = { query = "@conditional.outer", desc = "Next conditional start" },
["]l"] = { query = "@loop.outer", desc = "Next loop start" },
["]s"] = { query = "@scope", query_group = "locals", desc = "Next scope" },
["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" },
},
goto_next_end = {
["]F"] = { query = "@call.outer", desc = "Next function call end" },
["]M"] = { query = "@function.outer", desc = "Next method/function def end" },
["]C"] = { query = "@class.outer", desc = "Next class end" },
["]I"] = { query = "@conditional.outer", desc = "Next conditional end" },
["]L"] = { query = "@loop.outer", desc = "Next loop end" },
},
goto_previous_start = {
["[f"] = { query = "@call.outer", desc = "Prev function call start" },
["[m"] = { query = "@function.outer", desc = "Prev method/function def start" },
["[c"] = { query = "@class.outer", desc = "Prev class start" },
["[i"] = { query = "@conditional.outer", desc = "Prev conditional start" },
["[l"] = { query = "@loop.outer", desc = "Prev loop start" },
},
goto_previous_end = {
["[F"] = { query = "@call.outer", desc = "Prev function call end" },
["[M"] = { query = "@function.outer", desc = "Prev method/function def end" },
["[C"] = { query = "@class.outer", desc = "Prev class end" },
["[I"] = { query = "@conditional.outer", desc = "Prev conditional end" },
["[L"] = { query = "@loop.outer", desc = "Prev loop end" },
},
},
}
nmap { "<leader>th", "<cmd>TSHighlightCapturesUnderCursor<CR>" }
nmap { "<leader>tp", "<cmd>TSPlaygroundToggle<CR>" }
-- vim way: ; goes to the direction you were moving.
map {{ "n", "o", "x" }, ";", ts_repeat_move.repeat_last_move}
map {{ "n", "o", "x" }, ",", ts_repeat_move.repeat_last_move_opposite}
-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
map {{ "n", "o", "x" }, "f", ts_repeat_move.builtin_f}
map {{ "n", "o", "x" }, "F", ts_repeat_move.builtin_F}
map {{ "n", "o", "x" }, "t", ts_repeat_move.builtin_t}
map {{ "n", "o", "x" }, "T", ts_repeat_move.builtin_T}
context.setup { enable = true }

View file

@ -1,3 +0,0 @@
local nmap = require("opdavies.keymap").nmap
nmap { "<leader>u", vim.cmd.UndotreeToggle }

View file

@ -1,20 +0,0 @@
local map = vim.api.nvim_set_keymap
local options = {
silent = true,
}
map("n", "<leader>tf", ":TestFile<CR>", options)
map("n", "<leader>tg", ":TestVisit<CR>", options)
map("n", "<leader>tl", ":TestLast<CR>", options)
map("n", "<leader>tn", ":TestNearest<CR>", options)
map("n", "<leader>ts", ":TestSuite<CR>", options)
vim.cmd [[
let test#echo_command = 0
let test#neovim#start_normal = 1
let test#strategy = "neoterm"
let test#php#phpunit#executable = 'run test'
let test#php#phpunit#options = '--colors=always --testdox'
]]