init config base
This commit is contained in:
commit
851bdaa611
4
init.lua
Normal file
4
init.lua
Normal file
@ -0,0 +1,4 @@
|
||||
require("config.keymaps")
|
||||
require("config.lazy")
|
||||
|
||||
vim.cmd.colorscheme "catppuccin-mocha"
|
22
lazy-lock.json
Normal file
22
lazy-lock.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "ba3ea5bcfd969679f38fefb1bc801cd45524045b" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "99337f63f0a3c3ab9519f3d1da7618ca4f91cffe" },
|
||||
"catppuccin": { "branch": "main", "commit": "894efb557728e532aa98b98029d16907a214ec05" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "fa42613096ebfa5fee1ea87d70f8625ab9685d01" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "aa1c9572aa1916e582f9b9c3d43e272b4f23b326" },
|
||||
"lazygit.nvim": { "branch": "main", "commit": "ad3e1ea592f9d13e86e0d4e850224d9d78069508" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" },
|
||||
"mason.nvim": { "branch": "main", "commit": "0950b15060067f752fde13a779a994f59516ce3d" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "9c9eb07fecc578e25e28db8dc9002b43fff2ed79" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" },
|
||||
"oil.nvim": { "branch": "master", "commit": "65c53dbe4f2140236590a7568a5f22a77d16be39" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
|
||||
"supermaven-nvim": { "branch": "main", "commit": "ec7ae4c8190c96002aa466b1eb4a23aa51e24812" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "0099511294f16b81c696004fa6a403b0ae61f7a0" }
|
||||
}
|
28
lua/config/keymaps.lua
Normal file
28
lua/config/keymaps.lua
Normal file
@ -0,0 +1,28 @@
|
||||
local map = vim.keymap.set
|
||||
vim.g.mapleader = " "
|
||||
|
||||
map({ "n", "v" }, "<Space>", "<Nop>", { silent = true })
|
||||
map("n", "Q", "<Nop>")
|
||||
map("n", "q:", "<Nop>")
|
||||
map("n", "<C-c>", "<Esc>")
|
||||
map("n", "<C-s>", "<cmd>w<CR>")
|
||||
map("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||
map("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||
map("n", "<CR>", '{->v:hlsearch ? ":nohl\\<CR>" : "\\<CR>"}()', { expr = true })
|
||||
map("v", "J", ":m '>+1<CR>gv=gv")
|
||||
map("v", "K", ":m '<-2<CR>gv=gv")
|
||||
|
||||
-- Buffers
|
||||
map("n", "<Tab>", "<cmd>bn<CR>")
|
||||
map("n", "<S-Tab>", "<cmd>bp<CR>")
|
||||
map("n", "<space>bd", "<cmd>bd<CR>")
|
||||
|
||||
-- Visual
|
||||
map("x", "<", "<gv")
|
||||
map("x", ">", ">gv")
|
||||
map("x", "K", ":move '<-2<CR>gv-gv")
|
||||
map("x", "J", ":move '>+1<CR>gv-gv")
|
||||
|
||||
-- Oil keymaps
|
||||
map("n", "<space>e", "<cmd>Oil<CR>")
|
||||
|
31
lua/config/lazy.lua
Normal file
31
lua/config/lazy.lua
Normal file
@ -0,0 +1,31 @@
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Make sure to setup `mapleader` and `maplocalleader` before
|
||||
-- loading lazy.nvim so that mappings are correct.
|
||||
-- This is also a good place to setup other settings (vim.opt)
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = "\\"
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.inccommand = "split"
|
||||
vim.opt.termguicolors = true
|
||||
vim.opt.number = true
|
||||
|
||||
-- Setup lazy.nvim
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- import your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
-- Configure any other settings here. See the documentation for more details.
|
||||
-- colorscheme that will be used when installing plugins.
|
||||
install = { colorscheme = { "catpuccin-mocha" } },
|
||||
-- automatically check for plugin updates
|
||||
checker = { enabled = true, notify = false },
|
||||
})
|
22
lua/config/util.lua
Normal file
22
lua/config/util.lua
Normal file
@ -0,0 +1,22 @@
|
||||
local Util = require("lazy.core.util")
|
||||
|
||||
local M = {}
|
||||
|
||||
M.format_on_save = true
|
||||
function M.toggle_format_on_save()
|
||||
if vim.b.autoformat == false then
|
||||
vim.b.autoformat = nil
|
||||
M.format_on_save = true
|
||||
else
|
||||
M.format_on_save = not M.format_on_save
|
||||
end
|
||||
|
||||
if M.format_on_save then
|
||||
Util.info("Enabled format on save", { title = "Format" })
|
||||
else
|
||||
Util.warn("Disabled format on save", { title = "Format" })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return M
|
10
lua/plugins/bufferline.lua
Normal file
10
lua/plugins/bufferline.lua
Normal file
@ -0,0 +1,10 @@
|
||||
return {
|
||||
{
|
||||
'akinsho/bufferline.nvim',
|
||||
version = "*",
|
||||
dependencies = 'nvim-tree/nvim-web-devicons',
|
||||
config = function()
|
||||
require('bufferline').setup()
|
||||
end,
|
||||
},
|
||||
}
|
20
lua/plugins/gitsigns.lua
Normal file
20
lua/plugins/gitsigns.lua
Normal file
@ -0,0 +1,20 @@
|
||||
return {
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {
|
||||
signs = {
|
||||
add = { text = "▎" },
|
||||
change = { text = "▎" },
|
||||
delete = { text = "" },
|
||||
topdelete = { text = "" },
|
||||
changedelete = { text = "▎" },
|
||||
untracked = { text = "▎" },
|
||||
},
|
||||
current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>",
|
||||
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
},
|
||||
keys = {
|
||||
{ "]g", "<cmd>Gitsigns next_hunk<CR>", desc = "Next Git Hunk" },
|
||||
{ "[g", "<cmd>Gitsigns prev_hunk<CR>", desc = "Previous Git Hunk" },
|
||||
},
|
||||
}
|
20
lua/plugins/lazygit.lua
Normal file
20
lua/plugins/lazygit.lua
Normal file
@ -0,0 +1,20 @@
|
||||
-- nvim v0.8.0
|
||||
return {
|
||||
"kdheepak/lazygit.nvim",
|
||||
cmd = {
|
||||
"LazyGit",
|
||||
"LazyGitConfig",
|
||||
"LazyGitCurrentFile",
|
||||
"LazyGitFilter",
|
||||
"LazyGitFilterCurrentFile",
|
||||
},
|
||||
-- optional for floating window border decoration
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
-- setting the keybinding for LazyGit with 'keys' is recommended in
|
||||
-- order to load the plugin when the command is run for the first time
|
||||
keys = {
|
||||
{ "<leader>gg", "<cmd>LazyGit<cr>", desc = "LazyGit" }
|
||||
}
|
||||
}
|
175
lua/plugins/lsp.lua
Normal file
175
lua/plugins/lsp.lua
Normal file
@ -0,0 +1,175 @@
|
||||
return {
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
-- LSP Support
|
||||
{ "williamboman/mason.nvim", cmd = "Mason", build = ":MasonUpdate" },
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
config = function(_, opts) end,
|
||||
},
|
||||
},
|
||||
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
tsserver = {
|
||||
settings = {},
|
||||
},
|
||||
lua_ls = {
|
||||
settings = { Lua = { diagnostics = { globals = { "vim" } } } },
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("mason").setup()
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
local lsp_config = require("lspconfig")
|
||||
|
||||
local lsp_capabilities = vim.tbl_deep_extend(
|
||||
"force",
|
||||
{},
|
||||
vim.lsp.protocol.make_client_capabilities(),
|
||||
require("cmp_nvim_lsp").default_capabilities()
|
||||
)
|
||||
|
||||
local lsp_attach = function(client, bufnr)
|
||||
local key_opts = { buffer = bufnr, remap = false }
|
||||
|
||||
-- Keymaps
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, key_opts)
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, key_opts)
|
||||
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, key_opts)
|
||||
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, key_opts)
|
||||
vim.keymap.set("n", "gr", vim.lsp.buf.references, key_opts)
|
||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_next, key_opts)
|
||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_prev, key_opts)
|
||||
vim.keymap.set("n", "<leader>df", vim.diagnostic.open_float, key_opts)
|
||||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, key_opts)
|
||||
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, key_opts)
|
||||
vim.keymap.set("i", "<C-h>", vim.lsp.buf.signature_help, key_opts)
|
||||
end
|
||||
|
||||
mason_lspconfig.setup({
|
||||
ensure_installed = {
|
||||
"cssls",
|
||||
"emmet_ls",
|
||||
"eslint",
|
||||
"jsonls",
|
||||
"lua_ls",
|
||||
--"tailwindcss",
|
||||
"tsserver",
|
||||
-- linter
|
||||
-- "eslint_d",
|
||||
-- formatter
|
||||
-- "stylua",
|
||||
-- "prettierd",
|
||||
},
|
||||
})
|
||||
mason_lspconfig.setup_handlers({
|
||||
function(server_name)
|
||||
lsp_config[server_name].setup({
|
||||
on_attach = lsp_attach,
|
||||
capabilities = lsp_capabilities,
|
||||
settings = opts.servers[server_name] and opts.servers[server_name].settings or {},
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
vim.diagnostic.config({
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
virtual_text = {
|
||||
spacing = 4,
|
||||
source = "if_many",
|
||||
},
|
||||
severity_sort = true,
|
||||
float = {
|
||||
focusable = true,
|
||||
style = "minimal",
|
||||
border = "rounded",
|
||||
source = "always",
|
||||
header = "",
|
||||
prefix = "",
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
build = (not jit.os:find("Windows"))
|
||||
and "echo -e 'NOTE: jsregexp is optional, so not a big deal if it fails to build\n'; make install_jsregexp"
|
||||
or nil,
|
||||
-- dependencies = {
|
||||
-- "rafamadriz/friendly-snippets",
|
||||
-- config = function()
|
||||
-- require("luasnip.loaders.from_vscode").lazy_load()
|
||||
-- end,
|
||||
-- },
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
version = false, -- last release is way too old
|
||||
event = "InsertEnter",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-path",
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
},
|
||||
config = function()
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local cmp = require("cmp")
|
||||
local compare = require("cmp.config.compare")
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require("luasnip").lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp", priority = 1 },
|
||||
{ name = "luasnip", priority = 5, keyword_length = 2 },
|
||||
-- { name = "buffer", priority = 10, keyword_length = 3 },
|
||||
{ name = "path", priority = 2 },
|
||||
}),
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.close(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
|
||||
-- they way you will only jump inside the snippet region
|
||||
elseif luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
}),
|
||||
})
|
||||
end,
|
||||
}
|
||||
}
|
8
lua/plugins/mason.lua
Normal file
8
lua/plugins/mason.lua
Normal file
@ -0,0 +1,8 @@
|
||||
return {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
config = function()
|
||||
require("mason").setup()
|
||||
end
|
||||
}
|
||||
}
|
6
lua/plugins/oil.lua
Normal file
6
lua/plugins/oil.lua
Normal file
@ -0,0 +1,6 @@
|
||||
return {
|
||||
'stevearc/oil.nvim',
|
||||
opts = {},
|
||||
-- Optional dependencies
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
}
|
12
lua/plugins/supermaven.lua
Normal file
12
lua/plugins/supermaven.lua
Normal file
@ -0,0 +1,12 @@
|
||||
return {
|
||||
"supermaven-inc/supermaven-nvim",
|
||||
config = function()
|
||||
require("supermaven-nvim").setup({
|
||||
keymap = {
|
||||
accept_suggestion = "<C-[>",
|
||||
clear_suggestion = "<C-]>",
|
||||
accept_word = "<C-j>",
|
||||
}
|
||||
})
|
||||
end,
|
||||
}
|
3
lua/plugins/telescope.lua
Normal file
3
lua/plugins/telescope.lua
Normal file
@ -0,0 +1,3 @@
|
||||
return {
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.8',
|
||||
}
|
3
lua/plugins/theme.lua
Normal file
3
lua/plugins/theme.lua
Normal file
@ -0,0 +1,3 @@
|
||||
return {
|
||||
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }
|
||||
}
|
25
lua/plugins/whichkey.lua
Normal file
25
lua/plugins/whichkey.lua
Normal file
@ -0,0 +1,25 @@
|
||||
return {
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
init = function()
|
||||
vim.o.timeout = true
|
||||
vim.o.timeoutlen = 300
|
||||
end,
|
||||
config = function()
|
||||
local wk = require("which-key")
|
||||
-- f key register
|
||||
wk.register({
|
||||
f = {
|
||||
name = "Buffers",
|
||||
f = { "<cmd>Telescope buffers<cr>", "Find Buffer" }
|
||||
}
|
||||
}, { prefix = "<leader>" })
|
||||
|
||||
|
||||
-- q key register
|
||||
wk.register({
|
||||
q = {"<cmd>bdelete<cr>", "Close Buffer"}
|
||||
}, { prefix = "<leader>" })
|
||||
|
||||
end
|
||||
}
|
Loading…
Reference in New Issue
Block a user