visually updated by A LOT! made it readable and "modifiable"
This commit is contained in:
203
init.lua
203
init.lua
@@ -5,7 +5,7 @@
|
|||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
vim.g.maplocalleader = " "
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
-- Editor Settings (unchanged from previous)
|
-- Editor Settings
|
||||||
vim.opt.number = true
|
vim.opt.number = true
|
||||||
vim.opt.relativenumber = true
|
vim.opt.relativenumber = true
|
||||||
vim.opt.mouse = "a"
|
vim.opt.mouse = "a"
|
||||||
@@ -36,6 +36,9 @@ vim.opt.swapfile = false
|
|||||||
vim.opt.backup = false
|
vim.opt.backup = false
|
||||||
vim.opt.writebackup = false
|
vim.opt.writebackup = false
|
||||||
|
|
||||||
|
-- Smoother scrolling
|
||||||
|
vim.opt.smoothscroll = true
|
||||||
|
|
||||||
-- ======================
|
-- ======================
|
||||||
-- 2. Plugin Management
|
-- 2. Plugin Management
|
||||||
-- ======================
|
-- ======================
|
||||||
@@ -54,7 +57,7 @@ end
|
|||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
-- ======================
|
-- ======================
|
||||||
-- 3. Plugin Specifications
|
-- 3. Plugin Specifications (Updated)
|
||||||
-- ======================
|
-- ======================
|
||||||
|
|
||||||
local plugins = {
|
local plugins = {
|
||||||
@@ -108,29 +111,7 @@ local plugins = {
|
|||||||
{
|
{
|
||||||
"windwp/nvim-autopairs",
|
"windwp/nvim-autopairs",
|
||||||
event = "InsertEnter",
|
event = "InsertEnter",
|
||||||
config = function()
|
config = true,
|
||||||
require("nvim-autopairs").setup({
|
|
||||||
check_ts = true,
|
|
||||||
ts_config = {
|
|
||||||
lua = { "string", "source" },
|
|
||||||
javascript = { "string", "template_string" },
|
|
||||||
typescript = { "string", "template_string" },
|
|
||||||
},
|
|
||||||
disable_filetype = { "TelescopePrompt", "spectre_panel" },
|
|
||||||
fast_wrap = {
|
|
||||||
map = "<M-e>",
|
|
||||||
chars = { "{", "[", "(", '"', "'", "<" },
|
|
||||||
pattern = [=[[%'%"%)%>%]%)%}%,]]=],
|
|
||||||
end_key = "$",
|
|
||||||
highlight = "Search",
|
|
||||||
highlight_grey = "Comment",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
|
||||||
local cmp = require("cmp")
|
|
||||||
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Git Integration
|
-- Git Integration
|
||||||
@@ -140,9 +121,89 @@ local plugins = {
|
|||||||
{ "akinsho/git-conflict.nvim", version = "*" },
|
{ "akinsho/git-conflict.nvim", version = "*" },
|
||||||
|
|
||||||
-- UI Enhancements
|
-- UI Enhancements
|
||||||
{ "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" } },
|
{
|
||||||
{ "akinsho/bufferline.nvim", version = "*", dependencies = "nvim-tree/nvim-web-devicons" },
|
"nvim-lualine/lualine.nvim",
|
||||||
{ "lukas-reineke/indent-blankline.nvim", main = "ibl", opts = {} },
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
theme = "palenight",
|
||||||
|
component_separators = { left = '', right = '' },
|
||||||
|
section_separators = { left = '', right = '' },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Modern tab/bufferline with animations
|
||||||
|
{
|
||||||
|
"akinsho/bufferline.nvim",
|
||||||
|
version = "*",
|
||||||
|
dependencies = "nvim-tree/nvim-web-devicons",
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
mode = "tabs",
|
||||||
|
diagnostics = "nvim_lsp",
|
||||||
|
always_show_bufferline = true,
|
||||||
|
show_close_icon = false,
|
||||||
|
color_icons = true,
|
||||||
|
offsets = {
|
||||||
|
{
|
||||||
|
filetype = "neo-tree",
|
||||||
|
text = "File Explorer",
|
||||||
|
highlight = "Directory",
|
||||||
|
text_align = "left",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hover = {
|
||||||
|
enabled = true,
|
||||||
|
delay = 200,
|
||||||
|
reveal = { 'close' }
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Better split resizing with animations
|
||||||
|
{
|
||||||
|
"anuvyklack/windows.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"anuvyklack/middleclass",
|
||||||
|
"anuvyklack/animation.nvim"
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
vim.o.winwidth = 10
|
||||||
|
vim.o.winminwidth = 10
|
||||||
|
vim.o.equalalways = false
|
||||||
|
require('windows').setup({
|
||||||
|
autowidth = {
|
||||||
|
enable = true,
|
||||||
|
winwidth = 10,
|
||||||
|
filetype = {
|
||||||
|
help = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ignore = {
|
||||||
|
buftype = { 'quickfix' },
|
||||||
|
filetype = { 'NvimTree', 'neo-tree', 'undotree', 'gundo' }
|
||||||
|
},
|
||||||
|
animation = {
|
||||||
|
enable = true,
|
||||||
|
duration = 300,
|
||||||
|
fps = 30,
|
||||||
|
easing = 'in_out_sine'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Better indent guides
|
||||||
|
{
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
main = "ibl",
|
||||||
|
opts = {
|
||||||
|
indent = { char = "│" },
|
||||||
|
scope = { enabled = true },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
-- Syntax & Editing
|
-- Syntax & Editing
|
||||||
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
||||||
@@ -153,6 +214,17 @@ local plugins = {
|
|||||||
{ "folke/which-key.nvim", event = "VimEnter" },
|
{ "folke/which-key.nvim", event = "VimEnter" },
|
||||||
{ "stevearc/conform.nvim" },
|
{ "stevearc/conform.nvim" },
|
||||||
{ "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile" } },
|
{ "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile" } },
|
||||||
|
|
||||||
|
-- Smooth scrolling
|
||||||
|
{ "karb94/neoscroll.nvim", config = true },
|
||||||
|
|
||||||
|
-- Better notifications
|
||||||
|
{
|
||||||
|
"rcarriga/nvim-notify",
|
||||||
|
config = function()
|
||||||
|
vim.notify = require("notify")
|
||||||
|
end
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-- ======================
|
-- ======================
|
||||||
@@ -173,12 +245,12 @@ require("lazy").setup(plugins, {
|
|||||||
source = "📄",
|
source = "📄",
|
||||||
start = "🚀",
|
start = "🚀",
|
||||||
task = "📌",
|
task = "📌",
|
||||||
lazy = "💤",
|
lazy = "💤 ",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Neo-tree Configuration with Keymaps
|
-- Neo-tree Configuration
|
||||||
require("neo-tree").setup({
|
require("neo-tree").setup({
|
||||||
close_if_last_window = false,
|
close_if_last_window = false,
|
||||||
popup_border_style = "rounded",
|
popup_border_style = "rounded",
|
||||||
@@ -193,7 +265,7 @@ require("neo-tree").setup({
|
|||||||
position = "right",
|
position = "right",
|
||||||
width = 30,
|
width = 30,
|
||||||
mappings = {
|
mappings = {
|
||||||
["<space>"] = "none", -- disable space as it's our leader key
|
["<space>"] = "none",
|
||||||
["o"] = "open",
|
["o"] = "open",
|
||||||
["<CR>"] = "open",
|
["<CR>"] = "open",
|
||||||
["t"] = "open_tabnew",
|
["t"] = "open_tabnew",
|
||||||
@@ -209,7 +281,7 @@ require("neo-tree").setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Telescope Configuration with Keymaps
|
-- Telescope Configuration
|
||||||
require("telescope").setup({
|
require("telescope").setup({
|
||||||
defaults = {
|
defaults = {
|
||||||
mappings = {
|
mappings = {
|
||||||
@@ -225,6 +297,20 @@ require("telescope").setup({
|
|||||||
["<C-c>"] = "close",
|
["<C-c>"] = "close",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
layout_strategy = "flex",
|
||||||
|
layout_config = {
|
||||||
|
horizontal = {
|
||||||
|
preview_width = 0.6,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
theme = "dropdown",
|
||||||
|
},
|
||||||
|
live_grep = {
|
||||||
|
theme = "dropdown",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -313,7 +399,7 @@ cmp.setup({
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- ======================
|
-- ======================
|
||||||
-- 5. Key Mappings
|
-- 5. Key Mappings (Enhanced)
|
||||||
-- ======================
|
-- ======================
|
||||||
|
|
||||||
-- 🚀 General Keybinds
|
-- 🚀 General Keybinds
|
||||||
@@ -340,11 +426,31 @@ vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder)
|
|||||||
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder)
|
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder)
|
||||||
vim.keymap.set("n", "<leader>wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end)
|
vim.keymap.set("n", "<leader>wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end)
|
||||||
|
|
||||||
-- 💾 Buffer Management
|
-- 💾 Buffer/Tab Management
|
||||||
vim.keymap.set("n", "<leader>bd", ":bdelete<CR>")
|
vim.keymap.set("n", "<leader>bd", ":bdelete<CR>")
|
||||||
vim.keymap.set("n", "<leader>bn", ":bnext<CR>")
|
vim.keymap.set("n", "<leader>bn", ":BufferLineCycleNext<CR>")
|
||||||
vim.keymap.set("n", "<leader>bp", ":bprevious<CR>")
|
vim.keymap.set("n", "<leader>bp", ":BufferLineCyclePrev<CR>")
|
||||||
vim.keymap.set("n", "<leader>bl", ":Telescope buffers<CR>")
|
vim.keymap.set("n", "<leader>bl", ":Telescope buffers<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>1", ":BufferLineGoToBuffer 1<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>2", ":BufferLineGoToBuffer 2<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>3", ":BufferLineGoToBuffer 3<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>4", ":BufferLineGoToBuffer 4<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>5", ":BufferLineGoToBuffer 5<CR>")
|
||||||
|
|
||||||
|
-- 🖥️ Window Management
|
||||||
|
vim.keymap.set("n", "<C-h>", "<C-w>h")
|
||||||
|
vim.keymap.set("n", "<C-j>", "<C-w>j")
|
||||||
|
vim.keymap.set("n", "<C-k>", "<C-w>k")
|
||||||
|
vim.keymap.set("n", "<C-l>", "<C-w>l")
|
||||||
|
|
||||||
|
-- Split resizing with Ctrl+Arrow keys
|
||||||
|
vim.keymap.set("n", "<C-Up>", ":resize +2<CR>")
|
||||||
|
vim.keymap.set("n", "<C-Down>", ":resize -2<CR>")
|
||||||
|
vim.keymap.set("n", "<C-Left>", ":vertical resize -2<CR>")
|
||||||
|
vim.keymap.set("n", "<C-Right>", ":vertical resize +2<CR>")
|
||||||
|
|
||||||
|
-- Maximize current split
|
||||||
|
vim.keymap.set("n", "<leader>wm", ":WindowsMaximize<CR>")
|
||||||
|
|
||||||
-- 🐱 Git
|
-- 🐱 Git
|
||||||
vim.keymap.set("n", "<leader>gc", ":Git commit<CR>")
|
vim.keymap.set("n", "<leader>gc", ":Git commit<CR>")
|
||||||
@@ -354,8 +460,8 @@ vim.keymap.set("n", "<leader>gd", ":Gdiff<CR>")
|
|||||||
vim.keymap.set("n", "<leader>gb", ":Git blame<CR>")
|
vim.keymap.set("n", "<leader>gb", ":Git blame<CR>")
|
||||||
|
|
||||||
-- 🔄 Terminal
|
-- 🔄 Terminal
|
||||||
vim.keymap.set("t", "<C-\\>", "<C-\\><C-n>") -- Escape terminal mode
|
vim.keymap.set("t", "<C-\\>", "<C-\\><C-n>")
|
||||||
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>") -- Alternative escape
|
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>")
|
||||||
vim.keymap.set("n", "<leader>tt", ":ToggleTerm<CR>")
|
vim.keymap.set("n", "<leader>tt", ":ToggleTerm<CR>")
|
||||||
vim.keymap.set("n", "<leader>tf", ":ToggleTerm direction=float<CR>")
|
vim.keymap.set("n", "<leader>tf", ":ToggleTerm direction=float<CR>")
|
||||||
|
|
||||||
@@ -381,4 +487,25 @@ require("nvim-treesitter.configs").setup({
|
|||||||
ensure_installed = { "lua", "python", "javascript", "typescript", "html", "css", "bash", "json", "yaml" },
|
ensure_installed = { "lua", "python", "javascript", "typescript", "html", "css", "bash", "json", "yaml" },
|
||||||
highlight = { enable = true },
|
highlight = { enable = true },
|
||||||
indent = { enable = true },
|
indent = { enable = true },
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = "gnn",
|
||||||
|
node_incremental = "grn",
|
||||||
|
scope_incremental = "grc",
|
||||||
|
node_decremental = "grm",
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Enable smooth scrolling
|
||||||
|
require('neoscroll').setup({
|
||||||
|
mappings = { '<C-u>', '<C-d>', '<C-b>', '<C-f>' },
|
||||||
|
hide_cursor = true,
|
||||||
|
stop_eof = true,
|
||||||
|
respect_scrolloff = false,
|
||||||
|
cursor_scrolls_alone = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Enable better window management
|
||||||
|
require('windows').setup()
|
||||||
|
|||||||
Reference in New Issue
Block a user