Initial commit
This commit is contained in:
219
colors/sweet.lua
Normal file
219
colors/sweet.lua
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
-- ~/.config/nvim/colors/sweet.lua
|
||||||
|
-- Sweet colorscheme for Neovim
|
||||||
|
-- Based on the Sweet GTK theme colors
|
||||||
|
|
||||||
|
-- Reset colors
|
||||||
|
vim.cmd("highlight clear")
|
||||||
|
if vim.fn.exists("syntax_on") then
|
||||||
|
vim.cmd("syntax reset")
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
vim.g.colors_name = "sweet"
|
||||||
|
|
||||||
|
-- Sweet GTK Theme Colors (from actual source code)
|
||||||
|
local colors = {
|
||||||
|
-- Core colors
|
||||||
|
bg = "#161925", -- Sweet background
|
||||||
|
fg = "#C3C7D1", -- Sweet foreground
|
||||||
|
bg_dark = "#121520", -- Darker background
|
||||||
|
bg_light = "#1a1f2e", -- Lighter background
|
||||||
|
bg_sidebar = "#222e39", -- Panel background
|
||||||
|
|
||||||
|
-- Sweet Primary Colors
|
||||||
|
lime = "#71f79f", -- Sweet lime
|
||||||
|
red = "#ed254e", -- Sweet red
|
||||||
|
orange = "#ff6a00", -- Sweet orange
|
||||||
|
yellow = "#f9dc5c", -- Sweet yellow
|
||||||
|
purple = "#c74ded", -- Sweet purple
|
||||||
|
dark_purple = "#7b7bbd", -- Sweet dark purple
|
||||||
|
blue = "#7cb7ff", -- Sweet blue
|
||||||
|
cyan = "#00c1e4", -- Sweet cyan
|
||||||
|
teal = "#00e8c6", -- Sweet teal
|
||||||
|
|
||||||
|
-- Sweet UI Colors
|
||||||
|
selected_bg = "#00D3A7", -- Sweet selected background
|
||||||
|
selected_fg = "#fefefe", -- Sweet selected foreground
|
||||||
|
|
||||||
|
-- Derived colors
|
||||||
|
comment = "#6c7086", -- Muted text
|
||||||
|
line_number = "#585b70", -- Line numbers
|
||||||
|
cursor_line = "#1e1e2e", -- Current line highlight
|
||||||
|
visual = "#313244", -- Visual selection
|
||||||
|
search = "#45475a", -- Search highlight
|
||||||
|
|
||||||
|
-- Status colors
|
||||||
|
error = "#ed254e", -- Error (Sweet red)
|
||||||
|
warning = "#f9dc5c", -- Warning (Sweet yellow)
|
||||||
|
info = "#7cb7ff", -- Info (Sweet blue)
|
||||||
|
hint = "#00e8c6", -- Hint (Sweet teal)
|
||||||
|
success = "#71f79f", -- Success (Sweet lime)
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Helper function to set highlight groups
|
||||||
|
local function hl(group, opts)
|
||||||
|
vim.api.nvim_set_hl(0, group, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Editor highlights
|
||||||
|
hl("Normal", { fg = colors.fg, bg = colors.bg })
|
||||||
|
hl("NormalFloat", { fg = colors.fg, bg = colors.bg_light })
|
||||||
|
hl("CursorLine", { bg = colors.cursor_line })
|
||||||
|
hl("CursorColumn", { bg = colors.cursor_line })
|
||||||
|
hl("ColorColumn", { bg = colors.bg_light })
|
||||||
|
hl("LineNr", { fg = colors.line_number })
|
||||||
|
hl("CursorLineNr", { fg = colors.yellow, bold = true })
|
||||||
|
hl("SignColumn", { fg = colors.line_number, bg = colors.bg })
|
||||||
|
hl("Folded", { fg = colors.comment, bg = colors.bg_light })
|
||||||
|
hl("FoldColumn", { fg = colors.comment, bg = colors.bg })
|
||||||
|
|
||||||
|
-- Search and selection
|
||||||
|
hl("Visual", { bg = colors.visual })
|
||||||
|
hl("VisualNOS", { bg = colors.visual })
|
||||||
|
hl("Search", { bg = colors.search, fg = colors.yellow })
|
||||||
|
hl("IncSearch", { bg = colors.yellow, fg = colors.bg })
|
||||||
|
hl("CurSearch", { bg = colors.orange, fg = colors.bg })
|
||||||
|
|
||||||
|
-- UI elements
|
||||||
|
hl("Pmenu", { fg = colors.fg, bg = colors.bg_light })
|
||||||
|
hl("PmenuSel", { fg = colors.selected_fg, bg = colors.selected_bg })
|
||||||
|
hl("PmenuSbar", { bg = colors.bg_sidebar })
|
||||||
|
hl("PmenuThumb", { bg = colors.purple })
|
||||||
|
hl("StatusLine", { fg = colors.fg, bg = colors.bg_sidebar })
|
||||||
|
hl("StatusLineNC", { fg = colors.comment, bg = colors.bg_light })
|
||||||
|
hl("TabLine", { fg = colors.comment, bg = colors.bg_light })
|
||||||
|
hl("TabLineFill", { bg = colors.bg_light })
|
||||||
|
hl("TabLineSel", { fg = colors.fg, bg = colors.bg })
|
||||||
|
hl("WinSeparator", { fg = colors.bg_light })
|
||||||
|
hl("VertSplit", { fg = colors.bg_light })
|
||||||
|
|
||||||
|
-- Syntax highlighting
|
||||||
|
hl("Comment", { fg = colors.comment, italic = true })
|
||||||
|
hl("Constant", { fg = colors.orange })
|
||||||
|
hl("String", { fg = colors.lime })
|
||||||
|
hl("Character", { fg = colors.lime })
|
||||||
|
hl("Number", { fg = colors.purple })
|
||||||
|
hl("Boolean", { fg = colors.purple })
|
||||||
|
hl("Float", { fg = colors.purple })
|
||||||
|
|
||||||
|
hl("Identifier", { fg = colors.cyan })
|
||||||
|
hl("Function", { fg = colors.blue })
|
||||||
|
|
||||||
|
hl("Statement", { fg = colors.red })
|
||||||
|
hl("Conditional", { fg = colors.red })
|
||||||
|
hl("Repeat", { fg = colors.red })
|
||||||
|
hl("Label", { fg = colors.red })
|
||||||
|
hl("Operator", { fg = colors.teal })
|
||||||
|
hl("Keyword", { fg = colors.red })
|
||||||
|
hl("Exception", { fg = colors.red })
|
||||||
|
|
||||||
|
hl("PreProc", { fg = colors.yellow })
|
||||||
|
hl("Include", { fg = colors.yellow })
|
||||||
|
hl("Define", { fg = colors.yellow })
|
||||||
|
hl("Macro", { fg = colors.yellow })
|
||||||
|
hl("PreCondit", { fg = colors.yellow })
|
||||||
|
|
||||||
|
hl("Type", { fg = colors.teal })
|
||||||
|
hl("StorageClass", { fg = colors.teal })
|
||||||
|
hl("Structure", { fg = colors.teal })
|
||||||
|
hl("Typedef", { fg = colors.teal })
|
||||||
|
|
||||||
|
hl("Special", { fg = colors.purple })
|
||||||
|
hl("SpecialChar", { fg = colors.purple })
|
||||||
|
hl("Tag", { fg = colors.cyan })
|
||||||
|
hl("Delimiter", { fg = colors.fg })
|
||||||
|
hl("SpecialComment", { fg = colors.comment, italic = true })
|
||||||
|
hl("Debug", { fg = colors.red })
|
||||||
|
|
||||||
|
-- Diagnostics
|
||||||
|
hl("DiagnosticError", { fg = colors.error })
|
||||||
|
hl("DiagnosticWarn", { fg = colors.warning })
|
||||||
|
hl("DiagnosticInfo", { fg = colors.info })
|
||||||
|
hl("DiagnosticHint", { fg = colors.hint })
|
||||||
|
hl("DiagnosticUnderlineError", { undercurl = true, sp = colors.error })
|
||||||
|
hl("DiagnosticUnderlineWarn", { undercurl = true, sp = colors.warning })
|
||||||
|
hl("DiagnosticUnderlineInfo", { undercurl = true, sp = colors.info })
|
||||||
|
hl("DiagnosticUnderlineHint", { undercurl = true, sp = colors.hint })
|
||||||
|
|
||||||
|
-- Git signs
|
||||||
|
hl("GitSignsAdd", { fg = colors.success })
|
||||||
|
hl("GitSignsChange", { fg = colors.warning })
|
||||||
|
hl("GitSignsDelete", { fg = colors.error })
|
||||||
|
|
||||||
|
-- Tree-sitter highlights
|
||||||
|
hl("@variable", { fg = colors.fg })
|
||||||
|
hl("@variable.builtin", { fg = colors.purple })
|
||||||
|
hl("@variable.parameter", { fg = colors.orange })
|
||||||
|
hl("@variable.member", { fg = colors.cyan })
|
||||||
|
|
||||||
|
hl("@constant", { fg = colors.orange })
|
||||||
|
hl("@constant.builtin", { fg = colors.purple })
|
||||||
|
hl("@constant.macro", { fg = colors.yellow })
|
||||||
|
|
||||||
|
hl("@string", { fg = colors.lime })
|
||||||
|
hl("@string.escape", { fg = colors.purple })
|
||||||
|
hl("@string.special", { fg = colors.purple })
|
||||||
|
|
||||||
|
hl("@character", { fg = colors.lime })
|
||||||
|
hl("@number", { fg = colors.purple })
|
||||||
|
hl("@boolean", { fg = colors.purple })
|
||||||
|
hl("@float", { fg = colors.purple })
|
||||||
|
|
||||||
|
hl("@function", { fg = colors.blue })
|
||||||
|
hl("@function.builtin", { fg = colors.cyan })
|
||||||
|
hl("@function.call", { fg = colors.blue })
|
||||||
|
hl("@function.macro", { fg = colors.yellow })
|
||||||
|
|
||||||
|
hl("@method", { fg = colors.blue })
|
||||||
|
hl("@method.call", { fg = colors.blue })
|
||||||
|
|
||||||
|
hl("@constructor", { fg = colors.teal })
|
||||||
|
hl("@parameter", { fg = colors.orange })
|
||||||
|
|
||||||
|
hl("@keyword", { fg = colors.red })
|
||||||
|
hl("@keyword.function", { fg = colors.red })
|
||||||
|
hl("@keyword.operator", { fg = colors.red })
|
||||||
|
hl("@keyword.return", { fg = colors.red })
|
||||||
|
hl("@keyword.conditional", { fg = colors.red })
|
||||||
|
hl("@keyword.repeat", { fg = colors.red })
|
||||||
|
hl("@keyword.import", { fg = colors.yellow })
|
||||||
|
|
||||||
|
hl("@operator", { fg = colors.teal })
|
||||||
|
|
||||||
|
hl("@type", { fg = colors.teal })
|
||||||
|
hl("@type.builtin", { fg = colors.purple })
|
||||||
|
hl("@type.definition", { fg = colors.teal })
|
||||||
|
|
||||||
|
hl("@property", { fg = colors.cyan })
|
||||||
|
hl("@field", { fg = colors.cyan })
|
||||||
|
|
||||||
|
hl("@tag", { fg = colors.red })
|
||||||
|
hl("@tag.attribute", { fg = colors.orange })
|
||||||
|
hl("@tag.delimiter", { fg = colors.fg })
|
||||||
|
|
||||||
|
hl("@comment", { fg = colors.comment, italic = true })
|
||||||
|
hl("@comment.todo", { fg = colors.yellow, bold = true })
|
||||||
|
hl("@comment.warning", { fg = colors.warning, bold = true })
|
||||||
|
hl("@comment.note", { fg = colors.info, bold = true })
|
||||||
|
hl("@comment.error", { fg = colors.error, bold = true })
|
||||||
|
|
||||||
|
-- Error and warning
|
||||||
|
hl("Error", { fg = colors.error })
|
||||||
|
hl("ErrorMsg", { fg = colors.error })
|
||||||
|
hl("WarningMsg", { fg = colors.warning })
|
||||||
|
hl("Title", { fg = colors.purple, bold = true })
|
||||||
|
hl("Directory", { fg = colors.blue })
|
||||||
|
hl("MoreMsg", { fg = colors.lime })
|
||||||
|
hl("Question", { fg = colors.cyan })
|
||||||
|
|
||||||
|
-- Diff
|
||||||
|
hl("DiffAdd", { bg = "#2a3a2d" })
|
||||||
|
hl("DiffChange", { bg = "#3a3a2d" })
|
||||||
|
hl("DiffDelete", { bg = "#3a2a2d" })
|
||||||
|
hl("DiffText", { bg = "#4a4a3d" })
|
||||||
|
|
||||||
|
-- Spell
|
||||||
|
hl("SpellBad", { undercurl = true, sp = colors.error })
|
||||||
|
hl("SpellCap", { undercurl = true, sp = colors.warning })
|
||||||
|
hl("SpellLocal", { undercurl = true, sp = colors.info })
|
||||||
|
hl("SpellRare", { undercurl = true, sp = colors.hint })
|
||||||
5
init.lua
Executable file
5
init.lua
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
require("config.options")
|
||||||
|
require("config.lazy")
|
||||||
|
require("config.keymaps")
|
||||||
|
|
||||||
|
vim.cmd.colorscheme("sweet")
|
||||||
29
lazy-lock.json
Normal file
29
lazy-lock.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "ccf25a5452b8697a823de3e5ecda63ed3d723b79" },
|
||||||
|
"automkdir.nvim": { "branch": "main", "commit": "e36da288764cc41864dc5b4e1234f1425033ce59" },
|
||||||
|
"cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" },
|
||||||
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
|
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
|
||||||
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
|
"comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "9fd3d5e0b689ec1bf400c53cbbec72c6fdf24081" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
|
||||||
|
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "3590d66effccc7376d8c3dbe45e8291f9fed2843" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
|
||||||
|
"nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" },
|
||||||
|
"nvim-cmp": { "branch": "main", "commit": "a7bcf1d88069fc67c9ace8a62ba480b8fe879025" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "64e0a1c6ba39417ee81a893ebbb4f8e4a949445c" },
|
||||||
|
"nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
|
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
||||||
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
|
||||||
|
"undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" },
|
||||||
|
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||||
|
}
|
||||||
100
lua/config/keymaps.lua
Normal file
100
lua/config/keymaps.lua
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
-- Universal Operations
|
||||||
|
-- n => new/create
|
||||||
|
-- q => quit/close
|
||||||
|
-- s => save/write
|
||||||
|
-- x => exit (save&quit)
|
||||||
|
-- d => delete/remove
|
||||||
|
-- r => rename/reload/refresh
|
||||||
|
-- o => open
|
||||||
|
-- a => add
|
||||||
|
-- A => all
|
||||||
|
-- e => edit
|
||||||
|
-- t => toggle
|
||||||
|
-- h/l => previous/next
|
||||||
|
-- j/k => last/first
|
||||||
|
|
||||||
|
local map = vim.keymap.set
|
||||||
|
-- Leader Key Groups
|
||||||
|
map("n", "<leader>b", "<Nop>", { desc = "+buffers" })
|
||||||
|
map("n", "<leader>c", "<Nop>", { desc = "+code" })
|
||||||
|
map("n", "<leader>d", "<Nop>", { desc = "+diagnostics" })
|
||||||
|
map("n", "<leader>e", "<Nop>", { desc = "+file actions" })
|
||||||
|
map("n", "<leader>f", "<Nop>", { desc = "+find" })
|
||||||
|
map("n", "<leader>g", "<Nop>", { desc = "+git" })
|
||||||
|
map("n", "<leader>l", "<Nop>", { desc = "+lazy" })
|
||||||
|
map("n", "<leader>m", "<Nop>", { desc = "+movement" })
|
||||||
|
map("n", "<leader>s", "<Nop>", { desc = "+search" })
|
||||||
|
map("n", "<leader>t", "<Nop>", { desc = "+tabs" })
|
||||||
|
map("n", "<leader>u", "<Nop>", { desc = "+ui" })
|
||||||
|
map("n", "<leader>w", "<Nop>", { desc = "+windows" })
|
||||||
|
map("n", "<leader>x", "<Nop>", { desc = "+quickfix" })
|
||||||
|
-- MacOs Style
|
||||||
|
map({ "n", "i", "v", "s" }, "<D-s>", "<cmd>w<cr><esc>", { desc = "Save File" })
|
||||||
|
map("n", "<D-z>", "u", { desc = "Undo" })
|
||||||
|
map("n", "<D-S-z>", "<C-r>", { desc = "Redo" })
|
||||||
|
map("n", "<D-a>", "gg<S-v>G", { desc = "Select all" })
|
||||||
|
map("n", "<C-j>", "<C-w>j", { desc = "Clear search highlight" })
|
||||||
|
-- Window
|
||||||
|
map("n", "<leader>wh", "<C-w>h", { desc = "Go to left window" })
|
||||||
|
map("n", "<leader>wj", "<C-w>j", { desc = "Go to lower window" })
|
||||||
|
map("n", "<leader>wk", "<C-w>k", { desc = "Go to upper window" })
|
||||||
|
map("n", "<leader>wl", "<C-w>l", { desc = "Go to right window" })
|
||||||
|
map("n", "<leader>w|", "<C-w>v", { desc = "Split vertically" })
|
||||||
|
map("n", "<leader>w-", "<C-w>s", { desc = "Split horizontally" })
|
||||||
|
map("n", "<leader>wq", "<C-w>c", { desc = "Close window" })
|
||||||
|
map("n", "<leader>wQ", "<C-w>o", { desc = "Close other windows" })
|
||||||
|
map("n", "<leader>w=", "<C-w>=", { desc = "Equal width/height" })
|
||||||
|
map("n", "<leader>ww", "<C-w>w", { desc = "Switch windows" })
|
||||||
|
map("n", "<M-h>", "<cmd>vertical resize -2<cr>", { desc = "Decrease width" })
|
||||||
|
map("n", "<M-l>", "<cmd>vertical resize +2<cr>", { desc = "Increase width" })
|
||||||
|
map("n", "<M-j>", "<cmd>resize -2<cr>", { desc = "Decrease height" })
|
||||||
|
map("n", "<M-k>", "<cmd>resize +2<cr>", { desc = "Increase height" })
|
||||||
|
-- Buffer
|
||||||
|
map("n", "<leader>bA", "<cmd>buffers<cr>", { desc = "List buffers" })
|
||||||
|
map("n", "<leader>bh", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
|
||||||
|
map("n", "<leader>bl", "<cmd>bnext<cr>", { desc = "Next buffer" })
|
||||||
|
map("n", "<leader>bk", "<cmd>bfirst<cr>", { desc = "First buffer" })
|
||||||
|
map("n", "<leader>bj", "<cmd>blast<cr>", { desc = "Last buffer" })
|
||||||
|
map("n", "<leader>bd", "<cmd>bdelete<cr>", { desc = "Delete buffer" })
|
||||||
|
map("n", "<leader>bk", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
|
||||||
|
-- Tabs
|
||||||
|
map("n", "<leader>tn", "<cmd>tabnew<cr>", { desc = "New Tab" })
|
||||||
|
map("n", "<leader>tq", "<cmd>tabclose<cr>", { desc = "Close tab" })
|
||||||
|
map("n", "<leader>tk", "<cmd>tabfirst<cr>", { desc = "First tab" })
|
||||||
|
map("n", "<leader>tj", "<cmd>tabfirst<cr>", { desc = "Last tab" })
|
||||||
|
map("n", "<leader>th", "<cmd>tabprevious<cr>", { desc = "Previous tab" })
|
||||||
|
map("n", "<leader>tl", "<cmd>tabnext<cr>", { desc = "Next tab" })
|
||||||
|
-- File Actions
|
||||||
|
map("n", "<leader>en", "<cmd>enew<cr>", { desc = "New file" })
|
||||||
|
map("n", "<leader>eq", "<cmd>q<cr>", { desc = "Quit file" })
|
||||||
|
map("n", "<leader>eQ", "<cmd>qa!<cr>", { desc = "Quit all" })
|
||||||
|
map("n", "<leader>ex", "<cmd>wq<cr>", { desc = "Save + quit file" })
|
||||||
|
-- Lazy
|
||||||
|
map("n", "<leader>ll", "<cmd>Lazy<cr>", { desc = "Lazy Plugin Manager" })
|
||||||
|
-- UI
|
||||||
|
map("n", "<leader>uw", "<cmd>set wrap!<cr>", { desc = "Toggle word wrap" })
|
||||||
|
map("n", "<leader>un", "<cmd>set number!<cr>", { desc = "Toggle line numbers" })
|
||||||
|
map("n", "<leader>ur", "<cmd>set relativenumber!<cr>", { desc = "Toggle relative number" })
|
||||||
|
-- Quickfixes
|
||||||
|
map("n", "<leader>xl", "<cmd>cnext<cr>", { desc = "Next quickfix" })
|
||||||
|
map("n", "<leader>xh", "<cmd>cprev<cr>", { desc = "Previous quickfix" })
|
||||||
|
map("n", "<leader>xo", "<cmd>copen<cr>", { desc = "Open quickfix" })
|
||||||
|
map("n", "<leader>xq", "<cmd>cclose<cr>", { desc = "Close quickfix" })
|
||||||
|
-- Movement
|
||||||
|
map("n", "j", "gj", { desc = "Move down (Wrapped Line)" })
|
||||||
|
map("n", "k", "gk", { desc = "Move up (Wrapped Line)" })
|
||||||
|
map("n", "<leader>mj", "<cmd>m .+1<cr>==", { desc = "Move line down" })
|
||||||
|
map("n", "<leader>mk", "<cmd>m .-2<cr>==", { desc = "Move line up" })
|
||||||
|
map("n", "<leader>mh", "{", { desc = "Previous paragraph" })
|
||||||
|
map("n", "<leader>ml", "}", { desc = "Next paragraph" })
|
||||||
|
map("v", "<leader>mj", ":m '>.+1<cr>gv=gv", { desc = "Move selection down" })
|
||||||
|
map("v", "<leader>mk", ":m '<-2<cr>gv=gv", { desc = "Move selection up" })
|
||||||
|
-- Identing
|
||||||
|
map("v", "<", "<gv", { desc = "Indent left" })
|
||||||
|
map("v", ">", ">gv", { desc = "Indent right" })
|
||||||
|
map("v", "<Tab>", ">gv", { desc = "Indent right" })
|
||||||
|
map("v", "<S-Tab>", "<gv", { desc = "Indent left" })
|
||||||
|
-- Help/Documentation
|
||||||
|
map("n", "<leader>?", "<cmd>Cheatsheet<cr>", { desc = "Show cheatsheet" })
|
||||||
|
-- Search for selection
|
||||||
|
map("v", "//", 'y/\\V<C-R>=escape(@",\'/\\\')<CR><CR>', { desc = "Search selection" })
|
||||||
30
lua/config/lazy.lua
Normal file
30
lua/config/lazy.lua
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
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"
|
||||||
|
local out = vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"--branch=stable",
|
||||||
|
lazyrepo,
|
||||||
|
lazypath
|
||||||
|
})
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo({
|
||||||
|
{ "Failed to clone lazy.nvim \n", "ErrorMsg" },
|
||||||
|
{ out, "WarningsMsg" },
|
||||||
|
{ "\nPress any key to exit" },
|
||||||
|
}, true, {})
|
||||||
|
vim.gn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = ","
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
import = "plugins"
|
||||||
|
},
|
||||||
|
checker = { enabled = true }
|
||||||
|
})
|
||||||
28
lua/config/options.lua
Normal file
28
lua/config/options.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
local opt = vim.opt
|
||||||
|
|
||||||
|
opt.termguicolors = true
|
||||||
|
opt.number = true
|
||||||
|
opt.relativenumber = true
|
||||||
|
opt.tabstop = 2
|
||||||
|
opt.shiftwidth = 2
|
||||||
|
opt.wrap = false
|
||||||
|
opt.expandtab = true
|
||||||
|
opt.smartindent = true
|
||||||
|
opt.ignorecase = true
|
||||||
|
opt.smartcase = true
|
||||||
|
opt.scrolloff = 8
|
||||||
|
opt.sidescrolloff = 8
|
||||||
|
opt.cursorline = true
|
||||||
|
opt.signcolumn = "yes"
|
||||||
|
opt.splitbelow = true
|
||||||
|
opt.splitright = true
|
||||||
|
opt.hlsearch = true
|
||||||
|
opt.incsearch = true
|
||||||
|
opt.clipboard = "unnamedplus"
|
||||||
|
opt.completeopt = "menuone,noselect"
|
||||||
|
opt.updatetime = 50
|
||||||
|
opt.swapfile = false
|
||||||
|
opt.backup = false
|
||||||
|
opt.undofile = true
|
||||||
|
opt.splitright = true
|
||||||
|
opt.splitbelow = true
|
||||||
4
lua/plugins/automkdir.lua
Normal file
4
lua/plugins/automkdir.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
"mateuszwieloch/automkdir.nvim",
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
18
lua/plugins/autopairs.lua
Normal file
18
lua/plugins/autopairs.lua
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
return {
|
||||||
|
"windwp/nvim-autopairs",
|
||||||
|
event = "InsertEnter",
|
||||||
|
opts = {
|
||||||
|
check_ts = true,
|
||||||
|
ts_config = {
|
||||||
|
lua = { "string" },
|
||||||
|
javascript = { "template_string" }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function (_, opts)
|
||||||
|
local npairs = require("nvim-autopairs")
|
||||||
|
npairs.setup(opts)
|
||||||
|
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
||||||
|
local cmp = require("cmp")
|
||||||
|
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
||||||
|
end
|
||||||
|
}
|
||||||
15
lua/plugins/cheatsheet.lua
Normal file
15
lua/plugins/cheatsheet.lua
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
"sudormrfbin/cheatsheet.nvim",
|
||||||
|
cmd = { "Cheatsheet" },
|
||||||
|
dependencies = {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
"nvim-lua/popup.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("cheatsheet").setup({
|
||||||
|
bundled_cheatsheets = true,
|
||||||
|
bundled_plugin_cheatsheets = true,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
6
lua/plugins/comment.lua
Normal file
6
lua/plugins/comment.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
"numToStr/comment.nvim",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
opts = {},
|
||||||
|
lazy = false
|
||||||
|
}
|
||||||
40
lua/plugins/completion.lua
Normal file
40
lua/plugins/completion.lua
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
return {
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = {
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
"saadparwaiz1/cmp_luasnip",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local luasnip = require("luasnip")
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item(),
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item(),
|
||||||
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<C-e>"] = cmp.mapping.abort(),
|
||||||
|
["<CR>"] = cmp.mapping.confirm({ select = false }),
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "luasnip" },
|
||||||
|
{ name = "path" },
|
||||||
|
}, {
|
||||||
|
{ name = "buffer" },
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
42
lua/plugins/conform.lua
Normal file
42
lua/plugins/conform.lua
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
return {
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
event = { "BufWritePre" },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>cf",
|
||||||
|
function()
|
||||||
|
require("conform").format({ async = true, lsp_fallback = true })
|
||||||
|
end,
|
||||||
|
desc = "Format buffer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>cF",
|
||||||
|
function()
|
||||||
|
require("conform").format({ formatters = { "injected" } })
|
||||||
|
end,
|
||||||
|
desc = "Format injected langs"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
javascript = { "prettier" },
|
||||||
|
typescript = { "prettier" },
|
||||||
|
javascriptreact = { "prettier" },
|
||||||
|
typescriptreact = { "prettier" },
|
||||||
|
css = { "prettier" },
|
||||||
|
html = { "prettier" },
|
||||||
|
json = { "prettier" },
|
||||||
|
yaml = { "prettier" },
|
||||||
|
markdown = { "prettier" },
|
||||||
|
lua = { "stylelua" },
|
||||||
|
python = { "black" },
|
||||||
|
php = { "php_cs_fixer" },
|
||||||
|
go = { "gofmt" },
|
||||||
|
rurst = { "rustfmt" },
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_fallback = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
lua/plugins/gitsigns.lua
Normal file
38
lua/plugins/gitsigns.lua
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
return {
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
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", "<leader>gh", gs.prev_hunk, "Previous hunk")
|
||||||
|
map("n", "<leader>gl", gs.next_hunk, "Next hunk")
|
||||||
|
-- Git actions
|
||||||
|
map("n", "<leader>ga", gs.stage_hunk, "Add/stage hunk")
|
||||||
|
map("n", "<leader>gr", gs.reset_hunk, "Reset hunk")
|
||||||
|
map("n", "<leader>gA", gs.stage_buffer, "Add/stage all")
|
||||||
|
map("n", "<leader>gR", gs.reset_buffer, "Reset all")
|
||||||
|
map("n", "<leader>gu", gs.undo_stage_hunk, "Undo stage")
|
||||||
|
map("n", "<leader>gp", gs.preview_hunk, "Preview hunk")
|
||||||
|
map("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame line")
|
||||||
|
map("n", "<leader>gd", gs.diffthis, "Diff this")
|
||||||
|
map("n", "<leader>gD", function() gs.diffthis("~") end, "Diff this ~")
|
||||||
|
map("n", "<leader>gt", gs.toggle_deleted, "Toggle deleted")
|
||||||
|
-- Visual mode
|
||||||
|
map("v", "<leader>ga", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Add/stage")
|
||||||
|
map("v", "<leader>gr", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, "Reset")
|
||||||
|
-- Text object
|
||||||
|
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "Select hunk")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
24
lua/plugins/indent-blankline.lua
Normal file
24
lua/plugins/indent-blankline.lua
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
main = "ibl",
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
opt = {
|
||||||
|
indent = {
|
||||||
|
char = "|",
|
||||||
|
tab_char = "|"
|
||||||
|
},
|
||||||
|
scope = {
|
||||||
|
enabled = true,
|
||||||
|
show_start = false,
|
||||||
|
show_end = false,
|
||||||
|
},
|
||||||
|
exlude = {
|
||||||
|
filetypes = {
|
||||||
|
"help",
|
||||||
|
"lazy",
|
||||||
|
"mason",
|
||||||
|
"notify",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
20
lua/plugins/index.lua
Normal file
20
lua/plugins/index.lua
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
return {
|
||||||
|
-- Install Order
|
||||||
|
-- 1. Treesitter [✓]
|
||||||
|
-- 2. LSP Minimal [✓]
|
||||||
|
-- 3. Completions [✓]
|
||||||
|
-- 4. Autopairs [✓]
|
||||||
|
-- 5. Telescope [✓]
|
||||||
|
-- 6. Which-Key [✓]
|
||||||
|
-- 7. Comment [✓]
|
||||||
|
-- 8. Surround
|
||||||
|
-- 9. Vim-Sleuth
|
||||||
|
-- 10. Nvim-Lint
|
||||||
|
-- 11. Git-Signs
|
||||||
|
-- 12. Lualine
|
||||||
|
-- 13. Ident-Blankline
|
||||||
|
-- 14. Autommkdir | Mkdir
|
||||||
|
-- 15. Cheatsheet | neodev
|
||||||
|
-- 16. Replace | Simple Format
|
||||||
|
-- 17. vim-be-good
|
||||||
|
}
|
||||||
117
lua/plugins/lsp.lua
Normal file
117
lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
return {
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
dependencies = {
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("mason").setup()
|
||||||
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
local lspconfig = require("lspconfig")
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
callback = function(event)
|
||||||
|
local map = function(keys, func, desc)
|
||||||
|
vim.keymap.set("n", keys, func, {buffer = event.buf, desc = desc})
|
||||||
|
end
|
||||||
|
-- Navigation
|
||||||
|
map("gd", vim.lsp.buf.definition, "Go to definition")
|
||||||
|
map("gD", vim.lsp.buf.declaration, "Go to declatation")
|
||||||
|
map("gi", vim.lsp.buf.implementation, "Go to implementation")
|
||||||
|
map("gr", vim.lsp.buf.definition, "Go to references")
|
||||||
|
map("gt", vim.lsp.buf.type_definition, "Go to type definition")
|
||||||
|
-- Documentation
|
||||||
|
map("K", vim.lsp.buf.hover, "Hover documentation")
|
||||||
|
map("<leader>K", vim.lsp.buf.signature_help, "Signature help")
|
||||||
|
-- LSP Actions
|
||||||
|
map("<leader>ca", vim.lsp.buf.code_action, "Code action")
|
||||||
|
map("<leader>cr", vim.lsp.buf.rename, "Rename")
|
||||||
|
map("<leader>cf", vim.lsp.buf.format, "Format")
|
||||||
|
-- Diagnostics
|
||||||
|
map("<leader>do", vim.diagnostic.open_float, "Show diagnostics")
|
||||||
|
map("<leader>dl", vim.diagnostic.goto_next, "Next diagnostic")
|
||||||
|
map("<leader>dh", vim.diagnostic.goto_prev, "Previous diagnostic")
|
||||||
|
map("<leader>dF", vim.diagnostic.setloclist, "Quickfix diagnostics")
|
||||||
|
map("<leader>da", vim.diagnostic.setloclist, "List diagnostics")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local servers = {
|
||||||
|
-- Javascript/TypeScript/React
|
||||||
|
ts_ls = {
|
||||||
|
settings = {
|
||||||
|
typescript = {
|
||||||
|
inlayHints = {
|
||||||
|
includeInlayParameterNameHints = "all",
|
||||||
|
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
|
||||||
|
includeInlayFunctionParameterTypeHints = true,
|
||||||
|
includeInlayVariableTypeHints = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Hyprland
|
||||||
|
hyprls = {},
|
||||||
|
-- CSS/SCSS
|
||||||
|
cssls = {},
|
||||||
|
-- stylelint
|
||||||
|
stylelint_lsp = {},
|
||||||
|
-- HTML
|
||||||
|
html = {},
|
||||||
|
-- PHP
|
||||||
|
intelephense = {
|
||||||
|
settings = {
|
||||||
|
php = {
|
||||||
|
validate = {
|
||||||
|
enable = true,
|
||||||
|
run = "onSave",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Python
|
||||||
|
pyright = {},
|
||||||
|
-- JSON
|
||||||
|
jsonls = {},
|
||||||
|
-- TOML
|
||||||
|
taplo = {},
|
||||||
|
-- YAML
|
||||||
|
yamlls = {},
|
||||||
|
-- Rust
|
||||||
|
rust_analyzer = {
|
||||||
|
settings = {
|
||||||
|
["rust_analyzer"] = {
|
||||||
|
check = {
|
||||||
|
command = "clippy"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Go
|
||||||
|
gopls = {},
|
||||||
|
-- Markdown
|
||||||
|
marksman = {},
|
||||||
|
-- Lua
|
||||||
|
lua_ls = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = { globals = { "vim" } },
|
||||||
|
workspace = { checkThirdParty = false },
|
||||||
|
telemetry = { enable = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = vim.tbl_keys(servers),
|
||||||
|
handlers = {
|
||||||
|
function(server_name)
|
||||||
|
local config = servers[server_name] or {}
|
||||||
|
config.capabilities = capabilities
|
||||||
|
lspconfig[server_name].setup(config)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
253
lua/plugins/lualine.lua
Normal file
253
lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
return {
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-tree/nvim-web-devicons"
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local lualine = require("lualine")
|
||||||
|
local colors = {
|
||||||
|
lime = "#71f79f",
|
||||||
|
red = "#ed254e",
|
||||||
|
orange = "#ff6a00",
|
||||||
|
yellow = "#f9dc5c",
|
||||||
|
purple = "#c74ded",
|
||||||
|
dark_purple = "#7b7bbd",
|
||||||
|
blue = "#7cb7ff",
|
||||||
|
cyan = "#00c1e4",
|
||||||
|
teal = "#00e8c6",
|
||||||
|
watermelon = "#ff4d7a",
|
||||||
|
white = "#fefefe",
|
||||||
|
text = "#c3c7d1",
|
||||||
|
subtext1 = "#a8b2c0",
|
||||||
|
subtext0 = "#8a96a8",
|
||||||
|
base = "#161925",
|
||||||
|
mantle = "#121520",
|
||||||
|
surface0 = "#1a1f2e",
|
||||||
|
surface1 = "#222e39",
|
||||||
|
surface2 = "#31363d",
|
||||||
|
}
|
||||||
|
local conditions = {
|
||||||
|
buffer_not_empty = function()
|
||||||
|
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
||||||
|
end,
|
||||||
|
hide_in_width = function()
|
||||||
|
return vim.fn.winwidth(0) > 80
|
||||||
|
end,
|
||||||
|
check_git_workspace = function()
|
||||||
|
local filepath = vim.fn.expand("%:p:h")
|
||||||
|
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
||||||
|
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
||||||
|
end,
|
||||||
|
is_code_file = function()
|
||||||
|
local ft = vim.bo.filetype
|
||||||
|
return ft == "javascript" or ft == "typescript" or ft == "lua" or ft == "python" or ft == "jsx" or ft == "tsx"
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
local config = {
|
||||||
|
options = {
|
||||||
|
component_separators = "",
|
||||||
|
section_separators = "",
|
||||||
|
theme = {
|
||||||
|
normal = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
|
inactive = { c = { fg = colors.fg, bg = colors.bg } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
local function ins_left(component)
|
||||||
|
table.insert(config.sections.lualine_c, component)
|
||||||
|
end
|
||||||
|
local function ins_right(component)
|
||||||
|
table.insert(config.sections.lualine_x, component)
|
||||||
|
end
|
||||||
|
-- Left Side
|
||||||
|
-- Component: Mode
|
||||||
|
ins_left {
|
||||||
|
"mode",
|
||||||
|
color = function()
|
||||||
|
local mode_color = {
|
||||||
|
n = colors.lime,
|
||||||
|
i = colors.blue,
|
||||||
|
v = colors.purple,
|
||||||
|
[''] = colors.purple,
|
||||||
|
V = colors.purple,
|
||||||
|
c = colors.yellow,
|
||||||
|
R = colors.red,
|
||||||
|
t = colors.teal
|
||||||
|
}
|
||||||
|
return { bg = colors.mantle, fg = mode_color[vim.fn.mode()], gui = "bold" }
|
||||||
|
end,
|
||||||
|
padding = { left = 1, right = 1 }
|
||||||
|
}
|
||||||
|
-- Separator Mode->Filename
|
||||||
|
ins_left {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.mantle, bg = colors.orange },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Filename
|
||||||
|
ins_left {
|
||||||
|
"filename",
|
||||||
|
path = 1,
|
||||||
|
shorting_target = 32,
|
||||||
|
file_status = true,
|
||||||
|
symbols = {
|
||||||
|
modified = "[+]",
|
||||||
|
readonly = "[RO]",
|
||||||
|
unnamed = "[No Name]"
|
||||||
|
},
|
||||||
|
cond = conditions.buffer_not_empty,
|
||||||
|
color = { fg = colors.mantle, bg = colors.orange, gui = "bold" },
|
||||||
|
padding = { left = 1, right = 1 }
|
||||||
|
}
|
||||||
|
-- Seperator Filename -> Git
|
||||||
|
ins_left {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.orange, bg = colors.lime },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Git Branch
|
||||||
|
ins_left {
|
||||||
|
"branch",
|
||||||
|
color = { fg = colors.mantle, bg = colors.lime },
|
||||||
|
padding = { left = 1, right = 1 }
|
||||||
|
}
|
||||||
|
-- Component: Git diff status
|
||||||
|
ins_left {
|
||||||
|
"diff",
|
||||||
|
symbols = {
|
||||||
|
added = '+',
|
||||||
|
modified = '!',
|
||||||
|
removed = '-'
|
||||||
|
},
|
||||||
|
diff_color = {
|
||||||
|
added = { fg = colors.bg, bg = colors.lime },
|
||||||
|
modified = { fg = colors.dark_purple, bg = colors.lime },
|
||||||
|
removed = { fg = colors.red, bg = colors.lime },
|
||||||
|
},
|
||||||
|
cond = conditions.check_git_workspace,
|
||||||
|
padding = { left = 0, right = 1 },
|
||||||
|
}
|
||||||
|
-- Seperator Git -> Function
|
||||||
|
ins_left {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.lime, bg = colors.watermelon },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Current Function
|
||||||
|
ins_left {
|
||||||
|
function()
|
||||||
|
local ft = vim.bo.filetype
|
||||||
|
local is_code_file = ft == "javascript" or ft == "typescript" or ft == "lua" or ft == "python" or ft == "jsx" or
|
||||||
|
ft == "tsx"
|
||||||
|
if not is_code_file then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
local ts_utils = require("nvim-treesitter.ts_utils")
|
||||||
|
local current_node = ts_utils.get_node_at_cursor()
|
||||||
|
if not current_node then return "" end
|
||||||
|
local function_node = current_node
|
||||||
|
while function_node do
|
||||||
|
local node_type = function_node:type()
|
||||||
|
if node_type == "function_declaration" or
|
||||||
|
node_type == "function_expression" or
|
||||||
|
node_type == "arrow_function" or
|
||||||
|
node_type == "method_definition" then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
function_node = function_node:parent()
|
||||||
|
end
|
||||||
|
if function_node then
|
||||||
|
local name_node = function_node:field("name")[1]
|
||||||
|
if name_node then
|
||||||
|
local name = vim.treesitter.get_node_text(name_node, 0)
|
||||||
|
return name:sub(1, 20)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end,
|
||||||
|
icon = "",
|
||||||
|
color = { fg = colors.mantle, bg = colors.watermelon, gui = "bold" },
|
||||||
|
}
|
||||||
|
-- Seperator End
|
||||||
|
ins_left {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.watermelon, bg = colors.surface1 },
|
||||||
|
padding = { left = 0, right = 1 }
|
||||||
|
}
|
||||||
|
-- Right Side
|
||||||
|
-- Seperator Start
|
||||||
|
ins_right {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.teal, bg = colors.surface1 },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Encoding
|
||||||
|
ins_right {
|
||||||
|
"encoding",
|
||||||
|
color = { fg = colors.mantle, bg = colors.teal, gui = "bold" },
|
||||||
|
}
|
||||||
|
-- Component: Filetype
|
||||||
|
ins_right {
|
||||||
|
"filetype",
|
||||||
|
color = { fg = colors.mantle, bg = colors.teal, gui = "bold" },
|
||||||
|
}
|
||||||
|
-- Separator: Filetype -> LSP Status
|
||||||
|
ins_right {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.dark_purple, bg = colors.teal },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: LSP Status
|
||||||
|
ins_right {
|
||||||
|
"lsp_status",
|
||||||
|
color = { fg = colors.text, bg = colors.dark_purple, gui = "bold" }
|
||||||
|
}
|
||||||
|
-- Seperator: LSP Status -> Diagnostics
|
||||||
|
ins_right {
|
||||||
|
function() return "" end,
|
||||||
|
color = { bg = colors.dark_purple, fg = colors.surface0 },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Diagnostics
|
||||||
|
ins_right {
|
||||||
|
"diagnostics",
|
||||||
|
always_visible = true,
|
||||||
|
symbols = {
|
||||||
|
error = "[E]",
|
||||||
|
warn = "[W]",
|
||||||
|
info = "[I]",
|
||||||
|
hint = "[H]"
|
||||||
|
},
|
||||||
|
color = { bg = colors.surface0, gui = "bold" }
|
||||||
|
}
|
||||||
|
-- Seperator: Diagnostics -> Location
|
||||||
|
ins_right {
|
||||||
|
function() return "" end,
|
||||||
|
color = { fg = colors.white, bg = colors.surface0 },
|
||||||
|
padding = 0
|
||||||
|
}
|
||||||
|
-- Component: Location
|
||||||
|
ins_right {
|
||||||
|
"location",
|
||||||
|
color = { fg = colors.mantle, bg = colors.white, gui = "bold" }
|
||||||
|
}
|
||||||
|
lualine.setup(config)
|
||||||
|
end,
|
||||||
|
}
|
||||||
4
lua/plugins/sleuth.lua
Normal file
4
lua/plugins/sleuth.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
"tpope/vim-sleuth",
|
||||||
|
event = { "BufReadPre", "BufNewFile" }
|
||||||
|
}
|
||||||
6
lua/plugins/surround.lua
Normal file
6
lua/plugins/surround.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
"kylechui/nvim-surround",
|
||||||
|
version = "*",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {}
|
||||||
|
}
|
||||||
44
lua/plugins/telescope.lua
Normal file
44
lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
return {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
cmd = "Telescope",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
build = "make"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
-- File Finding
|
||||||
|
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Files" },
|
||||||
|
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Recent files" },
|
||||||
|
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Grep text" },
|
||||||
|
{ "<leader>fw", "<cmd>Telescope grep_string<cr>", desc = "Current word" },
|
||||||
|
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Buffers" },
|
||||||
|
{ "<leader>f?", "<cmd>Telescope help_tags<cr>", desc = "Help pages" },
|
||||||
|
{ "<leader>fk", "<cmd>Telescope keymaps<cr>", desc = "Keymaps" },
|
||||||
|
{ "<leader>fc", "<cmd>Telescope commands<cr>", desc = "Commands" },
|
||||||
|
{ "<leader>fo", "<cmd>Telescope vim_options<cr>", desc = "Options" },
|
||||||
|
{ "<leader>fm", "<cmd>Telescope marks<cr>", desc = "Marks" },
|
||||||
|
-- Git
|
||||||
|
{ "<leader>gs", "<cmd>Telescope git_status<cr>", desc = "Status" },
|
||||||
|
{ "<leader>gc", "<cmd>Telescope git_commits<cr>", desc = "Commits" },
|
||||||
|
{ "<leader>gb", "<cmd>Telescope git_branches<cr>", desc = "Branches" },
|
||||||
|
-- Search
|
||||||
|
{ "<leader>sr", "<cmd>Telescope resume<cr>", desc = "Resume last search" },
|
||||||
|
{ "<leader>sw", "<cmd>Telescope grep_string<cr>", desc = "Current word" },
|
||||||
|
{ "<leader>sd", "<cmd>Telescope diagnostics<cr>", desc = "Diagnostics" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
defaults = {
|
||||||
|
prompt_prefix = " ",
|
||||||
|
selection_caret = " ",
|
||||||
|
path_display = { "truncate" }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
local telescope = require("telescope")
|
||||||
|
telescope.setup(opts)
|
||||||
|
telescope.load_extension("fzf")
|
||||||
|
end,
|
||||||
|
}
|
||||||
37
lua/plugins/treesitter.lua
Normal file
37
lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
config = function()
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
ensure_installed = {
|
||||||
|
"lua",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"hyprlang",
|
||||||
|
"nginx",
|
||||||
|
"yaml",
|
||||||
|
"bash",
|
||||||
|
"toml",
|
||||||
|
"regex",
|
||||||
|
"comment",
|
||||||
|
"json",
|
||||||
|
"html",
|
||||||
|
"xml",
|
||||||
|
"css",
|
||||||
|
"javascript",
|
||||||
|
"typescript",
|
||||||
|
"tsx",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"sql",
|
||||||
|
"graphql",
|
||||||
|
"go",
|
||||||
|
"rust",
|
||||||
|
},
|
||||||
|
auto_install = true,
|
||||||
|
highlight = { enable = true},
|
||||||
|
indent = { enable = true},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
6
lua/plugins/undotree.lua
Normal file
6
lua/plugins/undotree.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
return {
|
||||||
|
"mbbill/undotree",
|
||||||
|
config = function ()
|
||||||
|
vim.keymap.set("n", "<leader>z", vim.cmd.UndotreeToggle, { desc = "Toggle untotree" })
|
||||||
|
end
|
||||||
|
}
|
||||||
14
lua/plugins/which-key.lua
Normal file
14
lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
preset = "classic",
|
||||||
|
plugins = {
|
||||||
|
presets = {
|
||||||
|
operators = true,
|
||||||
|
motions = true,
|
||||||
|
text_objects = true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user