feat(lazy)!: Rewrite config with lazy.nvim

This commit is contained in:
Simon Lasbrugnas 2023-11-26 03:42:10 +01:00
parent 054186ccf1
commit cb49ba5c9a
Signed by untrusted user who does not match committer: simon
GPG key ID: 86039876BA6ED8DE
35 changed files with 429 additions and 675 deletions

View file

@ -1,18 +0,0 @@
-- Base 16 fleet theme (kinda)
-- require('base16-colorscheme').setup({
-- base00 = '#181818', base01 = '#292929', base02 = '#292929', base03 = '#6D6D6D',
-- base04 = '#535353', base05 = '#d6d6dd', base06 = '#292929', base07 = '#292929',
-- base08 = '#d6d6dd', base09 = '#e5c995', base0A = '#70cdb7', base0B = '#d898d8',
-- base0C = '#d898d8', base0D = '#e5c995', base0E = '#70cdb7', base0F = '#d6d6dd',
-- })
-- require('base16-colorscheme').setup()
-- require('base16-colorscheme').with_config({
-- telescope = true,
-- indentblankline = true,
-- notify = true,
-- ts_rainbow = true,
-- cmp = true,
-- illuminate = true,
-- })
--

View file

@ -1,6 +0,0 @@
function ColorMyPencils(color)
color = color or "fleet"
vim.cmd.colorscheme(color)
end
ColorMyPencils()

View file

@ -1,3 +0,0 @@
require("conform").setup{
javascript = { { "prettierd", "prettier" } },
}

View file

@ -1,29 +0,0 @@
vim.keymap.set("n", "<leader>gs", vim.cmd.Git)
local default_Fugitive = vim.api.nvim_create_augroup("default_Fugitive", {})
local autocmd = vim.api.nvim_create_autocmd
autocmd("BufWinEnter", {
group = default_Fugitive,
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>gp", function()
vim.cmd.Git('push')
end, opts)
-- rebase always
vim.keymap.set("n", "<leader>gP", function()
vim.cmd.Git({'pull', '--rebase'})
end, opts)
-- NOTE: It allows me to easily set the branch i am pushing and any tracking
-- needed if i did not set the branch up correctly
vim.keymap.set("n", "<leader>gt", ":Git push -u origin ", opts);
end,
})

View file

@ -1,50 +0,0 @@
require('gitsigns').setup{
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, {expr=true})
map('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, {expr=true})
-- Actions
map('n', '<leader>hs', gs.stage_hunk)
map('n', '<leader>hr', gs.reset_hunk)
map('v', '<leader>hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('v', '<leader>hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('n', '<leader>hS', gs.stage_buffer)
map('n', '<leader>hu', gs.undo_stage_hunk)
map('n', '<leader>hR', gs.reset_buffer)
map('n', '<leader>hp', gs.preview_hunk)
map('n', '<leader>hb', function() gs.blame_line{full=true} end)
map('n', '<leader>tb', gs.toggle_current_line_blame)
map('n', '<leader>hd', gs.diffthis)
map('n', '<leader>hD', function() gs.diffthis('~') end)
map('n', '<leader>td', gs.toggle_deleted)
-- Text object
map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end
}

View file

@ -1,19 +0,0 @@
require "ibl".setup {
scope = {
enabled = true,
highlight = "Label",
show_start = false,
show_end = false,
include = {
node_type = {
lua = { "table_constructor" },
},
},
},
indent = {
char = "",
},
exclude = {
buftypes = { "terminal", "nofile" },
},
}

View file

@ -1,6 +0,0 @@
-- require('lualine').setup{
-- options = {
-- theme = 'base16',
-- icons_enabled = true,
-- },
-- }

View file

@ -1,3 +0,0 @@
require('mini.comment').setup()
require('mini.surround').setup()
require('mini.clue').setup()

View file

@ -1,90 +0,0 @@
require('neoai').setup({
models = {
{
name = "openai",
model = "gpt-3.5-turbo-1106", -- "gpt-4-1106-preview",
params = nil,
},
},
open_ai = {
api_key = {
get = function()
local key = vim.fn.system("pass show openai/api_key")
key = string.gsub(key, "\n", "")
return key
end,
},
},
prompts = {
context_prompt = function(context)
return context
end,
},
shortcuts = {
{
name = "textify",
key = "<leader>as",
desc = "fix text with AI",
use_context = true,
prompt = [[
Please rewrite the text to make it more readable, clear,
concise, and fix any grammatical, punctuation, or spelling
errors
]],
modes = { "v" },
strip_function = nil,
},
{
name = "gitcommit",
key = "<leader>ag",
desc = "generate git commit message",
use_context = false,
prompt = function()
return [[
With specifications from conventionalcommits.org,
the commit message should be formatted as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Here are some examples of commit messages:
=========================================
feat: holiday-themed devcard
Our DevCard now features a holiday theme for both Halloween and Christmas!
This also includes a link pointing to Chris' article on how to embed it on your GitHub Profile.
DD-267 #done
=========================================
build(extension): version 3.8.0
=========================================
chore!: drop Node 6 from testing matrix
BREAKING CHANGE: dropping Node 6 which hits end of life in April
=========================================
ci: use pulumi common new kubernetes helpers
=========================================
Using the following git diff in order to generate
a consise and clear git commit message:
]] .. vim.fn.system("git diff --cached --ignore-space-at-eol")
end,
modes = { "n" },
strip_function = nil,
},
},
})
-- Keybindings
vim.keymap.set("n", "<leader>at", "<cmd>NeoAIToggle<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>ai", ":NeoAIInject YOUR MAY ONLY PROVIDE ONLY THE CODE SNIPPET AND WITHOUT THE CODE BLOCK",
{silent = true, noremap = true}
)
vim.keymap.set("v", "<leader>ac", "<cmd>'<,'>NeoAIContext<cr>iPlease explain shortly",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>ap", "<cmd>put c<cr><cmd>let @c=''<cr>",
{silent = true, noremap = true}
)

View file

@ -1,68 +0,0 @@
require("nvim-tree").setup({
sort_by = "case_sensitive",
view = { width = 40, },
filters = {
git_ignored = false,
dotfiles = false,
},
actions = {
open_file = {
quit_on_open = true,
},
},
renderer = {
group_empty = true,
icons = {
web_devicons = {
file = {
enable = true,
color = true,
},
folder = {
enable = false,
color = true,
},
},
git_placement = "before",
modified_placement = "after",
diagnostics_placement = "signcolumn",
bookmarks_placement = "signcolumn",
padding = " ",
symlink_arrow = "",
show = {
file = true,
folder = true,
folder_arrow = true,
git = true,
modified = true,
diagnostics = true,
bookmarks = true,
},
glyphs = {
default = "",
symlink = "",
bookmark = "󰆤",
modified = "",
folder = {
arrow_closed = "",
arrow_open = "",
default = "",
open = "",
empty = "",
empty_open = "",
symlink = "",
symlink_open = "",
},
git = {
unstaged = "",
staged = "",
unmerged = "",
renamed = "",
untracked = "",
deleted = "",
ignored = "",
},
},
},
},
})

View file

@ -1,11 +0,0 @@
require('refactoring').setup()
vim.keymap.set("x", "<leader>re", ":Refactor extract ")
vim.keymap.set("x", "<leader>rf", ":Refactor extract_to_file ")
vim.keymap.set("x", "<leader>rv", ":Refactor extract_var ")
vim.keymap.set({ "n", "x" }, "<leader>ri", ":Refactor inline_var")
vim.keymap.set("n", "<leader>rb", ":Refactor extract_block")
vim.keymap.set("n", "<leader>rbf", ":Refactor extract_block_to_file")

View file

@ -1,28 +0,0 @@
local builtin = require('telescope.builtin')
-- Function to check if the current directory is a git directory
local function is_git_directory()
return vim.fn.system('git rev-parse --is-inside-work-tree') == 1
end
-- Custom function that calls git_files if in a git directory, otherwise find_files
local function custom_git_files()
if is_git_directory() then
builtin.git_files()
else
builtin.find_files()
end
end
-- Keybindings
vim.keymap.set('n', '<leader>pf', function()
builtin.find_files({ no_ignore = true, hidden = true })
end)
vim.keymap.set('n', '<C-p>', custom_git_files, {})
vim.keymap.set('n', '<leader>ps', function() builtin.live_grep() end)
vim.keymap.set('n', '<leader>vh', builtin.help_tags, {})
vim.keymap.set('n', '<leader>fa', function() builtin.find_files({ follow = true, no_ignore = true, hidden = true }) end)
vim.keymap.set('n', '<leader>fb', function() builtin.buffers() end)
vim.keymap.set('n', '<leader>fc', function() builtin.git_commits() end)
vim.keymap.set('n', '<leader>gt', function() builtin.git_status() end)
vim.keymap.set('n', '<leader>gg', function() builtin.colorscheme({ enable_preview = true }) end)

View file

@ -1,4 +0,0 @@
require("toggleterm").setup()
-- floating terminal
vim.keymap.set("n", "<leader>\\", "<cmd>ToggleTerm direction=float<CR>")

View file

@ -1,26 +0,0 @@
require'nvim-treesitter.configs'.setup {
indent = {
enable = true
},
-- A list of parser names, or "all"
ensure_installed = { "vimdoc", "javascript", "typescript", "c", "lua", "rust" },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
highlight = {
-- `false` will disable the whole extension
enable = true,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = { "php", "twig" }
},
}

View file

@ -1,9 +0,0 @@
vim.keymap.set("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>xt", "<cmd>TroubleToggle telescope<cr>",
{silent = true, noremap = true}
)

View file

@ -1,2 +0,0 @@
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)

View file

@ -1,28 +0,0 @@
vim.keymap.set("n", "<leader>zz", function()
require("zen-mode").setup {
window = {
width = 90,
options = { }
},
}
require("zen-mode").toggle()
vim.wo.wrap = false
vim.wo.number = true
vim.wo.rnu = true
end)
vim.keymap.set("n", "<leader>zZ", function()
require("zen-mode").setup {
window = {
width = 80,
options = { }
},
}
require("zen-mode").toggle()
vim.wo.wrap = false
vim.wo.number = false
vim.wo.rnu = false
vim.opt.colorcolumn = "0"
end)

View file

@ -1 +1,4 @@
require("default")
require("config.options")
require("config.keymaps")
require("config.autocmds")
require("core.lazy")

31
lazy-lock.json Normal file
View file

@ -0,0 +1,31 @@
{
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
"LuaSnip": { "branch": "master", "commit": "df58ee1664cfda71479cd2bbd56114f56599eba6" },
"cellular-automaton.nvim": { "branch": "main", "commit": "b7d056dab963b5d3f2c560d92937cb51db61cb5b" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"copilot.vim": { "branch": "release", "commit": "2c31989063b145830d5f0bea8ab529d2aef2427b" },
"fleet-theme-nvim": { "branch": "master", "commit": "3d2dfd88583a4fa2c73d8244229490e6d021ceb2" },
"gitsigns.nvim": { "branch": "main", "commit": "5fc573f2d2a49aec74dd6dc977e8b137429d1897" },
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lsp-zero.nvim": { "branch": "v3.x", "commit": "8a9ee4e11a3e23101d1d1d11aaac3159ad925cc9" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "a5476087db0a20c05bd1163e1cd4a29b795e73a7" },
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neodev.nvim": { "branch": "main", "commit": "f972d7e6cd21b691199565cfe3e6487e774a4e8f" },
"nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" },
"nvim-lspconfig": { "branch": "master", "commit": "553c4e0e667167640c5398573f6f3a488ff8047a" },
"nvim-treesitter": { "branch": "master", "commit": "d8a71826a20dfc9ed3d8a43e28a00611a302b456" },
"nvim-treesitter-context": { "branch": "master", "commit": "bf4d15ee4e96ff5201f16a4ed14443670662eb90" },
"nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
"nvim-web-devicons": { "branch": "master", "commit": "cdbcca210cf3655aa9b31ebf2422763ecd85ee5c" },
"plenary.nvim": { "branch": "master", "commit": "366b0837486f60ae0e7550c15de8ff66d057c4cd" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
"telescope.nvim": { "branch": "master", "commit": "18774ec7929c8a8003a91e9e1f69f6c32258bbfe" },
"vim-fetch": { "branch": "master", "commit": "bbb75c3172f766d1a62832df0ec7674c69a560ad" },
"vim-fugitive": { "branch": "master", "commit": "46eaf8918b347906789df296143117774e827616" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
}

5
lua/config/autocmds.lua Normal file
View file

@ -0,0 +1,5 @@
vim.api.nvim_create_autocmd({"BufWritePre"}, {
group = vim.api.nvim_create_augroup("Default", {}),
pattern = "*",
command = [[%s/\s\+$//e]],
})

30
lua/config/keymaps.lua Normal file
View file

@ -0,0 +1,30 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>e", "<cmd>:Ex<CR>")
vim.keymap.set("i", "<C-c>", "<Esc>")
-- Keep things centered
vim.keymap.set("n", "n", "nzz")
vim.keymap.set("n", "N", "Nzz")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "<C-j>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-k>", "<cmd>cprev<CR>zz")
-- Copy to system clipboard
vim.keymap.set({"n", "v"}, "<leader>y", [["+y]])
-- Escape terminal mode
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>")
vim.keymap.set("n", "<leader>bd", "<cmd>bd<CR>")
-- Thanks to Mr. Primeagen
vim.keymap.set({"n", "v"}, "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
-- Typing too fast...
vim.keymap.set("n", "q:", ":q<CR>")

View file

@ -1,15 +1,10 @@
-- disable netrw
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.opt.nu = true
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = false
@ -26,7 +21,9 @@ vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.sidescrolloff = 16
vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.opt.updatetime = 100
vim.g.netrw_browse_split = 0
vim.g.netrw_banner = 0
vim.g.netrw_winsize = 25

21
lua/core/lazy.lua Normal file
View file

@ -0,0 +1,21 @@
-- Boostrap Lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{ import = "plugins" },
}, {
install = {
colorscheme = { "fleet" },
},
})

View file

@ -1,33 +0,0 @@
require("default.set")
require("default.remap")
local augroup = vim.api.nvim_create_augroup
local default_group = augroup('Default', {})
local autocmd = vim.api.nvim_create_autocmd
local yank_group = augroup('HighlightYank', {})
function R(name)
require("plenary.reload").reload_module(name)
end
autocmd('TextYankPost', {
group = yank_group,
pattern = '*',
callback = function()
vim.highlight.on_yank({
higroup = 'IncSearch',
timeout = 40,
})
end,
})
autocmd({"BufWritePre"}, {
group = default_group,
pattern = "*",
command = [[%s/\s\+$//e]],
})
vim.g.netrw_browse_split = 0
vim.g.netrw_banner = 0
vim.g.netrw_winsize = 25

View file

@ -1,111 +0,0 @@
vim.cmd.packadd("packer.nvim")
return require("packer").startup(function(use)
-- Packer can manage itself
use "wbthomason/packer.nvim"
-- gF but better (and real)
use "wsdjeg/vim-fetch"
-- terminal in neovim which already exists but is pretty bad and this one is better
use { "akinsho/toggleterm.nvim", tag = '*' }
-- find everything, maybe too much
use {
"nvim-telescope/telescope.nvim",
requires = { { "nvim-lua/plenary.nvim" } }
}
-- easy mode
use("stevearc/conform.nvim")
use("rafamadriz/friendly-snippets")
use({ 'echasnovski/mini.nvim', branch = 'stable' })
use("ThePrimeagen/refactoring.nvim")
-- theme stuff
-- use {
-- 'nvim-lualine/lualine.nvim',
-- requires = {
-- 'nvim-tree/nvim-web-devicons',
-- 'RRethy/nvim-base16',
-- }
-- }
-- use("RRethy/nvim-base16")
use("markvincze/panda-vim")
use("rebelot/kanagawa.nvim")
use("felipeagc/fleet-theme-nvim")
use("lukas-reineke/indent-blankline.nvim")
-- do I need this ?
use({
"folke/trouble.nvim",
config = function()
require("trouble").setup {
icons = true,
}
end
})
-- I'm not a netrw fan
use {
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons',
},
}
use {
"nvim-treesitter/nvim-treesitter",
run = function()
local ts_update = require("nvim-treesitter.install").update({ with_sync = true })
ts_update()
end
}
use("nvim-treesitter/nvim-treesitter-context");
use("nvim-treesitter/playground")
-- versionning
use("mbbill/undotree")
use("tpope/vim-fugitive")
use("lewis6991/gitsigns.nvim")
-- important
use("folke/zen-mode.nvim")
use("eandrju/cellular-automaton.nvim")
-- AI stuff
use("github/copilot.vim")
use {
"Bryley/neoai.nvim",
requires = {
"MunifTanjim/nui.nvim",
}
}
-- making neovim actually usable
use {
"VonHeikemen/lsp-zero.nvim",
branch = 'v1.x',
requires = {
-- LSP Support
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim" },
{ "williamboman/mason-lspconfig.nvim" },
-- Autocompletion
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-nvim-lua" },
-- Snippets
{ "L3MON4D3/LuaSnip" },
{ "rafamadriz/friendly-snippets" },
-- Colors
{ "folke/lsp-colors.nvim" },
}
}
end)

View file

@ -1,68 +0,0 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>e", "<cmd>:NvimTreeFindFileToggle<CR>")
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
vim.keymap.set("n", "J", "mzJ`z")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
vim.keymap.set("x", "<leader>p", [["_dP]])
vim.keymap.set({"n", "v"}, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]])
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]])
vim.keymap.set("i", "<C-c>", "<Esc>")
vim.keymap.set("n", "Q", "<nop>")
vim.keymap.set("n", "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
vim.keymap.set("n", "<leader>ff", vim.lsp.buf.format)
vim.keymap.set("n", "<C-j>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-k>", "<cmd>cprev<CR>zz")
vim.keymap.set("n", "<leader>j", "<cmd>lnext<CR>zz")
vim.keymap.set("n", "<leader>k", "<cmd>lprev<CR>zz")
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
vim.keymap.set("n", "<leader><leader>", function()
vim.cmd("so")
end)
-- get out of terminal mode
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>")
-- tab stuff
vim.keymap.set("n", "<leader>tn", function()
vim.cmd("tabn")
end, {})
vim.keymap.set("n", "<Tab>", function()
vim.cmd("tabn")
end, {})
vim.keymap.set("n", "<leader>tp", function()
vim.cmd("tabp")
end, {})
vim.keymap.set("n", "<leader>tc", function()
vim.cmd("tabc")
end, {})
vim.keymap.set("n", "<leader>tt", function()
vim.cmd("tabnew")
end, {})
-- buffer stuff
vim.keymap.set("n", "<leader>bd", function()
vim.cmd("bd")
end, {})
vim.keymap.set("n", "<leader>bn", function()
vim.cmd("bn")
end, {})
vim.keymap.set("n", "<leader>bp", function()
vim.cmd("bp")
end, {})

67
lua/plugins/coding.lua Normal file
View file

@ -0,0 +1,67 @@
return {
-- Autocomplete
{
"hrsh7th/nvim-cmp",
version = false,
event = "InsertEnter",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
},
opts = function()
local cmp = require("cmp")
local defaults = require("cmp.config.default")()
local cmp_format = require("lsp-zero").cmp_format()
return {
completion = {
completeopt = "menu,menuone,noinsert",
},
mapping = cmp.mapping.preset.insert({
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-u>"] = cmp.mapping.scroll_docs(-4),
["<C-d>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<C-y>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<S-CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<C-CR>"] = function(fallback)
cmp.abort()
fallback()
end,
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "path" },
}, {
{ name = "buffer" },
}),
sorting = defaults.sorting,
formatting = cmp_format,
}
end,
config = function(_, opts)
require("cmp").setup(opts)
end,
},
-- Copilot
{ 'github/copilot.vim' },
-- Comment
{
'numToStr/Comment.nvim',
opts = {
-- add any options here
},
lazy = false,
config = function ()
require("Comment").setup()
end
},
{ "L3MON4D3/LuaSnip", event = "InsertEnter", },
-- Surround
{ 'tpope/vim-surround', event = "BufRead", },
}

19
lua/plugins/editor.lua Normal file
View file

@ -0,0 +1,19 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = { },
keys = {
{ '<leader>wk', '<cmd>WhichKey<CR>', desc = 'Show key mappings' },
},
},
{ 'wsdjeg/vim-fetch', event = "VeryLazy" },
{ 'nvim-tree/nvim-web-devicons' },
{
'eandrju/cellular-automaton.nvim',
event = "VeryLazy",
keys = {
{ '<leader>mr', '<cmd>CellularAutomaton make_it_rain<CR>', desc = 'Make it rain' },
},
},
}

4
lua/plugins/fleet.lua Normal file
View file

@ -0,0 +1,4 @@
return {
"felipeagc/fleet-theme-nvim",
config = function() vim.cmd("colorscheme fleet") end
}

59
lua/plugins/git.lua Normal file
View file

@ -0,0 +1,59 @@
return {
-- Fugitive
{
"tpope/vim-fugitive",
event = { "BufReadPost", "BufNewFile", "BufWritePre" },
config = function()
local function map(mode, l, r, desc)
vim.keymap.set(mode, l, r, { silent = true, noremap = true, desc = desc })
end
map("n", "<leader>gs", "<cmd>Git<CR>", "Git Status")
map("n", "<leader>gd", "<cmd>Gvdiffsplit!<CR>", "Git Diff")
map("n", "<leader>gbl", "<cmd>Git blame<CR>", "Git Blame")
map("n", "<leader>gc", "<cmd>Git commit<CR>", "Git Commit")
map("n", "<leader>gC", "<cmd>Git commit --amend<CR>", "Git Commit Amend")
map("n", "<leader>gp", "<cmd>Git push<CR>", "Git Push")
map("n", "<leader>gS", "<cmd>Git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)<CR>", "Git Push Set Upstream")
map("n", "<leader>gbs", "<cmd>Git bisect start<CR>", "Git Bisect Start")
map("n", "<leader>gbg", "<cmd>Git bisect good<CR>", "Git Bisect Good")
map("n", "<leader>gbb", "<cmd>Git bisect bad<CR>", "Git Bisect Bad")
map("n", "<leader>gbr", "<cmd>Git bisect reset<CR>", "Git Bisect Reset")
end
},
-- Gitsigns
{
"lewis6991/gitsigns.nvim",
event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" },
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "" },
topdelete = { text = "" },
changedelete = { text = "" },
untracked = { text = "" },
},
on_attach = function(buffer)
local gs = package.loaded.gitsigns
local function map(mode, l, r, desc)
vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc })
end
map("n", "]h", gs.next_hunk, "Next Hunk")
map("n", "[h", gs.prev_hunk, "Prev Hunk")
map({ "n", "v" }, "<leader>ghs", "<cmd>Gitsigns stage_hunk<CR>", "Stage Hunk")
map({ "n", "v" }, "<leader>ghr", "<cmd>Gitsigns reset_hunk<CR>", "Reset Hunk")
map("n", "<leader>ghS", gs.stage_buffer, "Stage Buffer")
map("n", "<leader>ghu", gs.undo_stage_hunk, "Undo Stage Hunk")
map("n", "<leader>ghR", gs.reset_buffer, "Reset Buffer")
map("n", "<leader>ghp", gs.preview_hunk, "Preview Hunk")
map("n", "<leader>ghb", function() gs.blame_line({ full = true }) end, "Blame Line")
map("n", "<leader>ghd", gs.diffthis, "Diff This")
map("n", "<leader>ghD", function() gs.diffthis("~") end, "Diff This ~")
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns Select Hunk")
end,
},
},
}

30
lua/plugins/lsp.lua Normal file
View file

@ -0,0 +1,30 @@
return {
-- LSP
{
"VonHeikemen/lsp-zero.nvim",
config = function()
require("plugins.lsp.config")
end,
dependencies = {
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason-lspconfig.nvim" },
{ "folke/neodev.nvim" },
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "saadparwaiz1/cmp_luasnip" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-nvim-lua" },
}
},
-- Mason
{
"williamboman/mason.nvim",
cmd = "Mason",
keys = { { "<leader>cm", "<cmd>Mason<cr>", desc = "Mason" } },
build = ":MasonUpdate",
config = function (_, opts)
require("mason").setup(opts)
end
}
}

View file

@ -1,67 +1,41 @@
local lsp = require("lsp-zero")
local lsp_zero = require('lsp-zero')
local lspconfig = require('lspconfig')
local home = vim.fn.expand('$HOME')
-- Activate intelephense because I paid for it, yes
lspconfig.intelephense.setup {
cmd = { "intelephense", "--stdio" },
lspconfig.lua_ls.setup({
settings = {
intelephense = {
licenceKeyPath = home .. '/intelephense/license.txt'
}
}
}
lsp.preset("recommended")
lsp.ensure_installed({
'tsserver',
'rust_analyzer',
Lua = {
diagnostics = {
globals = { 'vim' },
},
},
},
})
-- Fix Undefined global 'vim'
lsp.nvim_workspace()
local cmp = require('cmp')
local cmp_select = { behavior = cmp.SelectBehavior.Select }
local cmp_mappings = lsp.defaults.cmp_mappings({
['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
['<C-y>'] = cmp.mapping.confirm({ select = true }),
["<C-Space>"] = cmp.mapping.complete(),
lsp_zero.set_sign_icons({
error = '',
warn = '',
hint = '',
info = ''
})
cmp_mappings['<Tab>'] = nil
cmp_mappings['<S-Tab>'] = nil
lsp.setup_nvim_cmp({
mapping = cmp_mappings
vim.diagnostic.config({
virtual_text = false,
severity_sort = true,
float = {
style = 'minimal',
border = 'none',
source = 'always',
header = '',
prefix = '',
},
})
lsp.set_preferences({
suggest_lsp_servers = true,
sign_icons = {
error = 'E',
warn = 'W',
hint = 'H',
info = 'I'
}
})
lsp.on_attach(function(client, bufnr)
lsp_zero.on_attach(function(_, bufnr)
local opts = { buffer = bufnr, remap = false }
lsp_zero.default_keymaps({buffer = bufnr})
-- Format on save
-- vim.api.nvim_create_autocmd("BufWritePost", {
-- callback = function()
-- vim.lsp.buf.format()
-- end
-- })
-- Eslint auto fix on save
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = { '*.tsx', '*.ts', '*.jsx', '*.js', '*.vue', '*.cjs', '*.mjs', '*.json', '*.css', '*.scss', '*.less', '*.yml' },
pattern = { '*.tsx', '*.ts', '*.jsx', '*.js', '*.vue', '*.cjs', '*.mjs', '*.json', '*.css', '*.scss', '*.less', '*.yml', '*.svelte' },
command = 'silent! EslintFixAll',
group = vim.api.nvim_create_augroup('EslintAutocmdsFormatting', {}),
})
@ -80,7 +54,19 @@ lsp.on_attach(function(client, bufnr)
vim.keymap.set("n", "<leader>D", function() vim.lsp.buf.type_definition() end, opts)
end)
lsp.setup()
require('mason-lspconfig').setup({
handlers = {
lsp_zero.default_setup,
},
ensure_installed = {
'lua_ls',
'html',
'eslint',
'gopls',
'rust_analyzer',
'zls',
},
})
vim.diagnostic.config({
virtual_text = true

View file

@ -0,0 +1,21 @@
vim.keymap.set('n', '<leader>do', vim.diagnostic.open_float)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<leader><leader>', function()
vim.lsp.buf.format { async = true }
end, opts)

30
lua/plugins/telescope.lua Normal file
View file

@ -0,0 +1,30 @@
return {
'nvim-telescope/telescope.nvim',
cmd = "Telescope",
version = false,
dependencies = {
{ 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
{ 'nvim-lua/plenary.nvim' },
},
extensions = {
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
}
},
keys = {
{ '<C-p>', "<cmd>Telescope find_files<CR>", desc = 'Find files' },
{ '<leader>ps', "<cmd>Telescope live_grep<CR>", desc = 'Live Grep' },
{ '<leader>vh', "<cmd>Telescope help_tags<CR>", desc = 'Help Tags' },
{
'<leader>fa',
function() require("telescope.builtin").find_files({ follow = true, no_ignore = true, hidden = true }) end,
desc = 'Find all files'
},
{ '<leader>fb', "<cmd>Telescope buffers<CR>", desc = 'Find buffer' },
{ '<leader>fc', "<cmd>Telescope git_commits<CR>", desc = 'Find commits' },
{ '<leader>fg', "<cmd>Telescope git_status<CR>", desc = 'Find git status' },
},
}

View file

@ -0,0 +1,63 @@
return {
{
"nvim-treesitter/nvim-treesitter",
version = false,
build = ":TSUpdate",
event = { "BufReadPost", "BufWritePost", "BufNewFile", "VeryLazy" },
init = function(plugin)
require("lazy.core.loader").add_to_rtp(plugin)
require("nvim-treesitter.query_predicates")
end,
cmd = { "TSUpdateSync", "TSUpdate", "TSInstall" },
keys = {
{ "<c-space>", desc = "Increment selection" },
{ "<bs>", desc = "Decrement selection", mode = "x" },
},
opts = {
highlight = {
enable = true,
additional_vim_regex_highlighting = { "php", "twig" },
},
auto_install = true,
indent = { enable = true },
ensure_installed = { "lua", "vim", "vimdoc", "typescript", "javascript", "go", "c", "cpp", "rust", "zig", "html", "css" },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
},
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
},
-- Show context of the current function
{
"nvim-treesitter/nvim-treesitter-context",
event = { "BufReadPost", "BufWritePost", "BufNewFile" },
enabled = true,
opts = { mode = "cursor", max_lines = 3 },
keys = {
{
"<leader>ut",
function()
local tsc = require("treesitter-context")
tsc.toggle()
end,
desc = "Toggle Treesitter Context",
},
},
},
-- Automatically add closing tags for HTML and JSX
{
"windwp/nvim-ts-autotag",
event = { "BufReadPost", "BufWritePost", "BufNewFile" },
opts = {},
},
}