This commit is contained in:
davidon-top 2023-08-02 16:39:49 +02:00
commit 9d3d05066f
80 changed files with 7776 additions and 0 deletions

69
lua/config/commands.lua Normal file
View file

@ -0,0 +1,69 @@
local pickers = require "telescope.pickers"
local finders = require "telescope.finders"
local conf = require("telescope.config").values
local actions = require "telescope.actions"
local action_state = require "telescope.actions.state"
vim.api.nvim_create_user_command("OP", function ()
local folders = vim.fn.systemlist("\\ls -d $HOME/projects/*/")
for i, folder in ipairs(folders) do
folders[i] = string.match(string.match(folder, "[^/]*/$"), "^[^/]*")
end
pickers.new({}, {
prompt_title = "Open project",
finder = finders.new_table {
results = folders
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd("cd $HOME/projects/" .. selection)
vim.cmd("Alpha")
vim.cmd("BWipeout other")
end)
return true
end
}):find()
end, {})
vim.api.nvim_create_user_command("OD", function ()
local folders = vim.fn.systemlist("\\ls -d */")
for i, folder in ipairs(folders) do
folders[i] = string.match(string.match(folder, "[^/]*/$"), "^[^/]*")
end
pickers.new({}, {
prompt_title = "Open directory",
finder = finders.new_table {
results = folders
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd("cd " .. selection)
vim.cmd("Alpha")
vim.cmd("BWipeout other")
end)
return true
end
}):find()
end, {})
vim.api.nvim_create_user_command("Config", function ()
vim.cmd("cd $HOME/.config/nvim")
vim.cmd("Alpha")
vim.cmd("BWipeout other")
end, {})
vim.api.nvim_create_user_command("O", function ()
require("oil").open_float(vim.fn.getcwd())
end, {})
vim.api.nvim_create_user_command("RetabFile", function ()
vim.cmd(":set ts=2 sts=2 noet | retab! | set ts=4 sts=4 et | retab!")
end, {})

4
lua/config/init.lua Normal file
View file

@ -0,0 +1,4 @@
require("config.pmstrap")
require("config.sets")
require("config.keymap")
require("config.commands")

171
lua/config/keymap.lua Normal file
View file

@ -0,0 +1,171 @@
local wk = require("which-key")
local keys = {
e = {
name = "Toggle",
e = {"<cmd>NeoTreeFloatToggle<CR>", "NeoTree"},
w = {vim.cmd.Ex, "netrw"},
g = {"<cmd>NeoTreeFloatToggle git_status<CR>", "Git Status"},
b = {"<cmd>NeoTreeFloatToggle buffers<CR>", "Buffers"},
c = {"<cmd>NeoTreeClose<CR>" , "Close"},
u = {vim.cmd.UndotreeToggle, "UndoTree"},
o = {function () require("oil").open_float(vim.fn.getcwd()) end, "Oil"},
},
c = {
name = "LSP",
S = {vim.cmd.AerialToggle, "Symbol sidebar"},
w = {function () vim.lsp.buf.workspace_symbol("") end, "workspace symbol"},
d = {function () vim.diagnostic.open_float() end, "diagnostic"},
a = {function () vim.lsp.buf.code_action() end, "code actions"},
R = {function () vim.lsp.buf.references() end, "references"},
r = {function () vim.lsp.buf.rename() end, "rename"},
h = {function () vim.lsp.buf.hover() end, "Hover"},
t = {function () vim.lsp.buf.type_definition() end,"Type Definition"},
s = {"<cmd>Navbuddy<cr>", "Navbuddy"},
-- s = {require("telescope.builtin").lsp_document_symbols, "Document Symbols"},
g = {
name = "Goto Preview",
d = {function () require('goto-preview').goto_preview_definition() end, "Definition"},
r = {function () require('goto-preview').goto_preview_references() end, "References"},
t = {function () require("goto-preview").goto_preview_type_definitions() end, "Type"},
i = {function () require("goto-preview").goto_preview_implementation() end, "Implementation"},
c = {function () require("goto-preview").close_all_win() end, "Close"},
},
c = {
name = "LSP",
k = {"<cmd>LspStop<cr>", "Stop"},
s = {"<cmd>LspStart<cr>", "Start"},
r = {"<cmd>LspRestart<cr>", "Restart"},
},
},
q = {
name = "Nvim",
q = {"<cmd>q<cr>", "Quit"},
W = {"<cmd>wq<cr>", "Save and Quit"},
w = {"<cmd>w<cr>", "Save"},
},
b = {
name = "Buffer",
h = {vim.cmd.bprevious, "Previous"},
l = {vim.cmd.bnext, "Next"},
H = {vim.cmd.bfirst, "First"},
L = {vim.cmd.blast, "Last"},
b = {require("telescope.builtin").buffers, "Picker"},
c = {"<cmd>:bp | sp | bn | bd<cr>", "Close"},
},
f = {
name = "Telescope & fzf",
c = {require("telescope.builtin").colorscheme, "Find Colorscheme"},
d = {require("telescope.builtin").diagnostics, "Find Diagnostics"},
w = {require("telescope.builtin").grep_string, "Find current Word"},
f = {require("telescope.builtin").find_files, "telescope find files"},
g = {require("telescope.builtin").live_grep, "live grep"},
b = {require("telescope.builtin").buffers, "buffers"},
h = {require("telescope.builtin").help_tags, "help tags"},
s = {function () require("telescope.builtin").grep_string({ search = vim.fn.input("Grep > ")}); end, "grep search through files"},
p = {"<cmd>Telescope projects<cr>", "Projects"},
},
s = {
name = "Settings",
c = {function ()
vim.opt.scrolloff = 100
end, "Always center cursor"},
x = {function ()
vim.opt.scrolloff = 8
end, "Disable Cursor center"},
f = {function ()
vim.opt.nu = true
vim.opt.relativenumber = true
end, "Fix number and relative numbers"},
m = {function ()
vim.cmd[[
highlight CursorColumn guibg=none ctermbg=none
highlight link CursorColumn CursorLine
]]
end, "Fix cursor highlight"},
},
h = {
name = "Hop",
w = {"<cmd>HopWord<cr>", "Word"},
a = {"<cmd>HopAnywhere<cr>", "Anywhere"},
l = {"<cmd>HopLine<cr>", "Line"},
p = {"<cmd>HopPattern<cr>", "Pattern"},
c = {"<cmd>HopChar1<cr>", "Char1"},
x = {"<cmd>HopChar2<cr>", "Char2"},
h = {vim.cmd.HopChar2, "Hop"},
},
d = {
name = "Debug",
b = {function () require("dap").toggle_breakpoint() end, "toggle breakpoint"},
c = {function () require("dap").continue() end, "launch or continue execution"},
s = {function () require("dap").step_into() end, "step into"},
o = {function () require("dap").step_over() end, "step over"},
r = {function () require("dap").repl.open() end, "open repl"},
w = {"<cmd>DapUIFloat<cr>", "DapUI"},
},
w = {
name = "workspace",
a = {vim.lsp.buf.add_workspace_folder, "add folder"},
r = {vim.lsp.buf.remove_workspace_folder, "remove folder"},
l = {function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, "list folders"},
},
q = {
name = "Quick nav",
q = {require("harpoon.ui").toggle_quick_menu, "Menu"},
a = {require("harpoon.mark").add_file, "Add file"},
r = {require("harpoon.mark").rm_file, "Remove File"},
},
}
wk.register(keys, {prefix = "<leader>"})
wk.register(keys, {prefix = "<C-Space>"})
wk.register(keys, {prefix = "<C-Space>", mode = "i"})
wk.register(keys, {prefix = "<C-Space>", mode = "v"})
-- LSP
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, {desc = "goto definition"})
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, {})
vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, {desc = "goto next"})
vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, {desc = "goto prev"})
vim.keymap.set("i", "<C-s>", function() vim.lsp.buf.signature_help() end)
vim.keymap.set("i", "<C-h>", function () vim.lsp.buf.hover() end, {})
-- term
vim.keymap.set("n", "<C-\\>", vim.cmd.ToggleTerm)
vim.keymap.set("t", "<C-\\>", vim.cmd.ToggleTerm)
-- center
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")
-- visual move
vim.keymap.set("x", "K", ":move '<-2<CR>gv=gv")
vim.keymap.set("x", "J", ":move '>+1<CR>gv=gv")
-- me lazy
vim.keymap.set("i", "<C-c>", "<Esc>")
-- non char keybinds
vim.keymap.set("n", "<leader>f/", function ()
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown {
winblend = 10,
previewer = false,
})
end, {desc = "fuzzy find"})
vim.keymap.set('n', '<leader>f?', require('telescope.builtin').oldfiles, { desc = 'Find recently opened files' })
vim.keymap.set("i", "<C-Space>f/", function ()
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown {
winblend = 10,
previewer = false,
})
end, {desc = "fuzzy find"})
vim.keymap.set('i', '<C-Space>f?', require('telescope.builtin').oldfiles, { desc = 'Find recently opened files' })
for i = 9, 1, -1 do
vim.keymap.set("n", "<M-" .. i .. ">", function() require("harpoon.ui").nav_file(i) end, {desc = ""})
end

485
lua/config/packages.lua Normal file
View file

@ -0,0 +1,485 @@
return {
{
"neovim/nvim-lspconfig",
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
"j-hui/fidget.nvim",
"folke/neodev.nvim",
},
},
{
"jinzhongjia/LspUI.nvim",
},
{
"VidocqH/lsp-lens.nvim",
},
{
"j-hui/fidget.nvim",
tag = "legacy",
dependencies = {
"neovim/nvim-lspconfig",
},
},
"jose-elias-alvarez/null-ls.nvim",
"jay-babu/mason-null-ls.nvim",
{
"SmiteshP/nvim-navic",
dependencies = {"neovim/nvim-lspconfig"},
opts = {highlight = true},
},
{
"ray-x/lsp_signature.nvim",
event = "BufRead",
config = function() require"lsp_signature".on_attach() end,
},
'stevearc/aerial.nvim',
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"hrsh7th/cmp-nvim-lua",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"rafamadriz/friendly-snippets"
},
},
{
"roobert/tailwindcss-colorizer-cmp.nvim",
opts = {color_square_width = 2},
},
-- syntax highlighting
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate"
},
'nvim-treesitter/nvim-treesitter-context',
{
"nvim-treesitter/nvim-treesitter-textobjects",
dependencies = {"nvim-treesitter"},
},
"nvim-treesitter/playground",
-- fzf Telescope
{
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim"
}
},
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
"nvim-lua/popup.nvim",
-- debugging
"mfussenegger/nvim-dap",
"jay-babu/mason-nvim-dap.nvim",
{
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap"
},
},
"nvim-telescope/telescope-dap.nvim",
-- git
{
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim"
},
config=true,
},
"tpope/vim-fugitive",
"tpope/vim-rhubarb",
"lewis6991/gitsigns.nvim",
"lvimuser/lsp-inlayhints.nvim",
"s1n7ax/nvim-window-picker",
"echasnovski/mini.nvim",
{
'stevearc/oil.nvim',
opts = {
columns = {
"icon",
"permissions",
"size",
},
-- keymap = {
-- ["<C-c>"] = "actions.close",
-- },
view_options = {
show_hidden = true,
},
}
},
"ThePrimeagen/vim-be-good",
'kazhala/close-buffers.nvim',
-- {
-- "VonHeikemen/fine-cmdline.nvim",
-- dependencies = {{"MunifTanjim/nui.nvim"}},
-- config = function()
-- require("fine-cmdline").setup({
-- cmdline = {
-- prompt = ">",
-- }
-- })
-- vim.api.nvim_set_keymap('n', ':', '<cmd>FineCmdline<CR>', {noremap = true})
-- end
-- },
'stevearc/dressing.nvim',
{
'stevearc/overseer.nvim',
opts = {
strategy = "toggleterm",
}
},
"itchyny/screensaver.vim",
"christoomey/vim-tmux-navigator",
'anuvyklack/pretty-fold.nvim',
'eandrju/cellular-automaton.nvim',
"ahmedkhalf/project.nvim",
"dhruvasagar/vim-table-mode",
"editorconfig/editorconfig-vim",
"andweeb/presence.nvim",
"nacro90/numb.nvim",
{"ellisonleao/glow.nvim", config = true, cmd = "Glow"},
"kylechui/nvim-surround",
{
"phaazon/hop.nvim",
event = "BufRead",
opts = {}
},
{
"nvim-tree/nvim-tree.lua",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
opts = {
filters = {
dotfiles = true,
},
}
},
{
"ThePrimeagen/harpoon"
},
{
"sQVe/sort.nvim",
opts = {}
},
-- misc editing
{
"ziontee113/color-picker.nvim",
opts = {
["border"] = "rounded",
},
},
{
"natecraddock/workspaces.nvim",
opts = {
auto_open = true,
hooks = {
add = {},
remove = {},
rename = {},
open_pre = {},
open = {},
},
}
},
"lambdalisue/suda.vim",
"tpope/vim-sleuth",
"mbbill/undotree",
"windwp/nvim-autopairs",
"windwp/nvim-ts-autotag",
{
"mg979/vim-visual-multi",
config = function ()
vim.cmd("let g:VM_leader='<Space>m'")
end
},
-- mics visuals
{
'bennypowers/nvim-regexplainer',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'MunifTanjim/nui.nvim',
}
},
{
"rcarriga/nvim-notify",
config = function ()
vim.notify = require("notify")
end
},
'nmac427/guess-indent.nvim',
'mrjones2014/smart-splits.nvim',
"goolord/alpha-nvim",
"preservim/nerdtree",
"luukvbaal/nnn.nvim",
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v2.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
},
"jistr/vim-nerdtree-tabs",
{
"kevinhwang91/nvim-bqf",
event = { "BufRead", "BufNew" },
opts = {
auto_enable = true,
preview = {
win_height = 12,
win_vheight = 12,
delay_syntax = 80,
border_chars = { "", "", "", "", "", "", "", "", "" },
},
func_map = {
vsplit = "",
ptogglemode = "z,",
stoggleup = "",
},
filter = {
fzf = {
action_for = { ["ctrl-s"] = "split" },
extra_opts = { "--bind", "ctrl-o:toggle-all", "--prompt", "> " },
},
},
}
},
"nvim-tree/nvim-web-devicons",
"ap/vim-css-color",
{
"lukas-reineke/indent-blankline.nvim",
opts = {
char = '',
show_trailing_blankline_indent = false,
filetype_exclude = {"dashboard"},
show_end_of_line = true,
show_current_context = true,
show_current_context_start = true,
}
},
{
"folke/which-key.nvim",
config = function()
local wk = require("which-key")
wk.setup {
popup_mappings = {
scroll_down = "<C-j>",
scroll_up = "<C-k>",
},
window = {
border = "single",
},
}
end
},
"rebelot/heirline.nvim",
{
"akinsho/toggleterm.nvim",
version = "*",
opts = {
direction = "float",
float_opts = {
border = "curved"
},
}
},
{
"karb94/neoscroll.nvim",
event = "WinScrolled",
opts = {
mappings = {"<C-u>", "<C-d>", "<C-b>", "<C-f>", "<C-y>", "<C-e>", "zt", "zz", "zb"},
hide_cursor = true,
stop_eof = true,
use_local_scrolloff = false,
respect_scrolloff = false,
cursor_scrolls_alone = true,
easing_function = nil,
pre_hook = nil,
post_hook = nil,
}
},
{
"folke/todo-comments.nvim",
event = "BufRead",
},
'numToStr/Comment.nvim',
{
"SmiteshP/nvim-navbuddy",
dependencies = {
"neovim/nvim-lspconfig",
"SmiteshP/nvim-navic",
"MunifTanjim/nui.nvim",
"numToStr/Comment.nvim",
"nvim-telescope/telescope.nvim"
},
opts = {
window = {border="rounded",},
}
},
'rmagatti/goto-preview',
{
"felipec/vim-sanegx",
event = "BufRead",
},
{
"gelguy/wilder.nvim",
config = function()
vim.cmd('call wilder#setup({"modes": [":", "/", "?"]})')
vim.cmd('call wilder#set_option("renderer", wilder#popupmenu_renderer({"highlighter": wilder#basic_highlighter(), "left": [ " ", wilder#popupmenu_devicons(), ], "right": [ " ", wilder#popupmenu_scrollbar(), ], "pumblend": 20}))')
vim.cmd('call wilder#set_option("renderer", wilder#popupmenu_renderer(wilder#popupmenu_border_theme({"highlighter": wilder#basic_highlighter(), "min_width": "100%", "min_height": "50%", "reverse": 0, "highlights": {"border": "Normal",},"border": "rounded"})))')
end,
},
-- lenguage specific
-- nim
"alaviss/nim.nvim",
-- csv
'cameron-wags/rainbow_csv.nvim',
-- rust
{"racer-rust/vim-racer",
config = function ()
vim.cmd [[ let g:racer_cmd = "/usr/bin/racer"]]
end
},
"simrat39/rust-tools.nvim",
{
"saecki/crates.nvim",
tag = "v0.3.0",
dependencies = {
"nvim-lua/plenary.nvim"
},
},
-- zig
"ziglang/zig.vim",
{
"NTBBloodbath/zig-tools.nvim",
ft = "zig",
opts = {
integrations = {
zls = {
hints = true,
}
}
}
},
-- glsl
"tikhomirov/vim-glsl",
-- java
"mfussenegger/nvim-jdtls",
-- c && c++ && cmake
{ "igankevich/mesonic",
config = function()
vim.cmd[[
let b:meson_command = 'meson'
let b:meson_ninja_command = 'ninja'
autocmd FileType c call ConsiderMesonForLinting()
function ConsiderMesonForLinting()
if filereadable('meson.build')
let g:syntastic_c_checkers = ['meson']
endif
endfunction
]]
end
},
"cdelledonne/vim-cmake",
-- web
"evanleck/vim-svelte",
"posva/vim-vue",
-- yuck
"elkowar/yuck.vim",
-- f#
"adelarsq/neofsharp.vim",
{
"ionide/Ionide-vim",
config = function ()
vim.cmd [[
let g:fsharp#backend = "nvim"
]]
end
},
"aurum77/dotnet.nvim",
-- themes
"xiyaowong/transparent.nvim",
"sainnhe/gruvbox-material",
"shaunsingh/nord.nvim",
"projekt0n/github-nvim-theme",
"EdenEast/nightfox.nvim",
"Everblush/nvim",
"olimorris/onedarkpro.nvim",
"rmehri01/onenord.nvim",
"luisiacc/gruvbox-baby",
"tiagovla/tokyodark.nvim",
"cpea2506/one_monokai.nvim",
"yazeed1s/minimal.nvim",
"Mofiqul/adwaita.nvim",
"kvrohit/mellow.nvim",
"yazeed1s/oh-lucy.nvim",
"marko-cerovac/material.nvim",
"sainnhe/sonokai",
"rebelot/kanagawa.nvim",
{
"catppuccin/nvim",
priority = 1000,
name = "catppuccin",
config = function()
require("catppuccin").setup{
flavor = "mocha",
navic = {
enabled = true,
custom_bg = "NONE",
},
indent_blankline = {
enabled = true,
colored_indent_levels = true,
},
dap = {
enabled = true,
enable_ui = true,
},
integrations = {
hop = true,
cmp = true,
telescope = true,
which_key = true,
},
-- color_overrides = {
-- macchiato = {
-- base = "#000000",
-- mantle = "#000000",
-- crust = "#000000"
-- }
-- }
}
vim.cmd("colorscheme catppuccin")
end
},
}

24
lua/config/pmstrap.lua Normal file
View file

@ -0,0 +1,24 @@
vim.g.mapleader = " "
vim.g.maplocalleader = " "
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)
-- bootstrap lazy.nvim
require("lazy").setup("config.packages", {
defaults = {
lazy = false
},
-- install = {
-- colorscheme = { "catppuccin" },
-- }
})

57
lua/config/sets.lua Normal file
View file

@ -0,0 +1,57 @@
-- numbers
vim.opt.nu = true
vim.opt.number = true
vim.opt.relativenumber = true
-- tab && indent
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.o.breakindent = true
-- lines
vim.opt.wrap = true
vim.opt.smarttab = true
vim.opt.list = true
vim.opt.listchars:append "eol:↴"
-- undo
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
-- search
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.o.ignorecase = true
vim.o.smartcase = true
-- colors
vim.opt.termguicolors = true
vim.cmd("colorscheme catppuccin")
vim.opt.cursorline = true
vim.opt.cursorcolumn = true
vim.cmd[[
highlight CursorColumn guibg=none ctermbg=none
highlight link CursorColumn CursorLine
]]
-- misc
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.scrolloff = 8
vim.opt.sidescrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.o.mouse = "a"
vim.opt.showmode = false
vim.o.completeopt = "menuone,noselect"
-- idfk pls fix nim
vim.opt.path = vim.opt.path + "/home/d/.nimble/bin/**"