Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1008568c39 |
@@ -0,0 +1,3 @@
|
|||||||
|
./pack
|
||||||
|
./nvim-pack-lock.json
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
require("options")
|
||||||
|
require("keymaps")
|
||||||
|
require("floating-terminal")
|
||||||
|
require("package-installs")
|
||||||
|
require("myplugs")
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
vim.api.nvim_create_autocmd("TermClose", {
|
||||||
|
group = augroup,
|
||||||
|
callback = function()
|
||||||
|
if vim.v.event.status == 0 then
|
||||||
|
vim.api.nvim_buf_delete(0, {})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("TermOpen", {
|
||||||
|
group = augroup,
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.number = false
|
||||||
|
vim.opt_local.relativenumber = false
|
||||||
|
vim.opt_local.signcolumn = "no"
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local terminal_state = { buf = nil, win = nil, is_open = false }
|
||||||
|
|
||||||
|
local function FloatingTerminal()
|
||||||
|
if terminal_state.is_open and terminal_state.win and vim.api.nvim_win_is_valid(terminal_state.win) then
|
||||||
|
vim.api.nvim_win_close(terminal_state.win, false)
|
||||||
|
terminal_state.is_open = false
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not terminal_state.buf or not vim.api.nvim_buf_is_valid(terminal_state.buf) then
|
||||||
|
terminal_state.buf = vim.api.nvim_create_buf(false, true)
|
||||||
|
vim.bo[terminal_state.buf].bufhidden = "hide"
|
||||||
|
end
|
||||||
|
|
||||||
|
local width = math.floor(vim.o.columns * 0.8)
|
||||||
|
local height = math.floor(vim.o.lines * 0.8)
|
||||||
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
|
||||||
|
terminal_state.win = vim.api.nvim_open_win(terminal_state.buf, true, {
|
||||||
|
relative = "editor",
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
row = row,
|
||||||
|
col = col,
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.wo[terminal_state.win].winblend = 0
|
||||||
|
vim.wo[terminal_state.win].winhighlight = "Normal:FloatingTermNormal,FloatBorder:FloatingTermBorder"
|
||||||
|
vim.api.nvim_set_hl(0, "FloatingTermNormal", { bg = "none" })
|
||||||
|
vim.api.nvim_set_hl(0, "FloatingTermBorder", { bg = "none" })
|
||||||
|
|
||||||
|
local has_terminal = false
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(terminal_state.buf, 0, -1, false)
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
if line ~= "" then
|
||||||
|
has_terminal = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not has_terminal then
|
||||||
|
vim.fn.termopen(os.getenv("SHELL"))
|
||||||
|
end
|
||||||
|
|
||||||
|
terminal_state.is_open = true
|
||||||
|
vim.cmd("startinsert")
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("BufLeave", {
|
||||||
|
buffer = terminal_state.buf,
|
||||||
|
callback = function()
|
||||||
|
if terminal_state.is_open and terminal_state.win and vim.api.nvim_win_is_valid(terminal_state.win) then
|
||||||
|
vim.api.nvim_win_close(terminal_state.win, false)
|
||||||
|
terminal_state.is_open = false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
once = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>t", FloatingTerminal, { noremap = true, silent = true, desc = "Toggle floating terminal" })
|
||||||
|
vim.keymap.set("t", "<Esc>", function()
|
||||||
|
if terminal_state.is_open and terminal_state.win and vim.api.nvim_win_is_valid(terminal_state.win) then
|
||||||
|
vim.api.nvim_win_close(terminal_state.win, false)
|
||||||
|
terminal_state.is_open = false
|
||||||
|
end
|
||||||
|
end, { noremap = true, silent = true, desc = "Close floating terminal" })
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.keymap.set('i', 'jj', '<Esc>', { desc = 'Exit Insert mode' })
|
||||||
|
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = 'Write changes' })
|
||||||
|
vim.keymap.set('n', '<leader>c', ':nohlsearch<CR>', { desc = 'Clear search highlights' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>x', '"_d', { desc = 'Delete without yanking' })
|
||||||
|
vim.keymap.set('n', '<leader>bp', ':bprevious<CR>', { desc = 'Previous buffet' })
|
||||||
|
vim.keymap.set('n', '<leader>bn', ':bnext<CR>', { desc = 'Next buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>bd', ':bdelete<CR>', { desc = 'Remove current buffer' })
|
||||||
|
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Move between windows left' })
|
||||||
|
vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Move between windows bottom' })
|
||||||
|
vim.keymap.set('n', '<C-k>', '<C-w>k', { desc = 'Move between windows up' })
|
||||||
|
vim.keymap.set('n', '<C-l>', '<C-w>l', { desc = 'Move between windows rigth' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>sv', ':vsplit<CR>', { desc = 'Split vertically' })
|
||||||
|
vim.keymap.set('n', '<leader>sh', ':split<CR>', { desc = 'Split window horizontally' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<C-Up>', ':resize +2<CR>', { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('n', '<C-Down>', ':resize -2<CR>', { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('n', '<C-Left>', ':vertical resize -2<CR>', { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('n', '<C-Right>', ':vertical resize +2<CR>', { desc = 'Split window horizontally' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<A-j>', ":m .+1<CR>==", { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('n', '<A-k>', ":m .-2<CR>==", { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('v', '<A-j>', ":m '>+1<CR>gv=gv", { desc = 'Split window horizontally' })
|
||||||
|
vim.keymap.set('v', '<A-k>', ":m '<-2<CR>gv=gv", { desc = 'Split window horizontally' })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Show diagnostic" })
|
||||||
|
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Prev diagnostic" })
|
||||||
|
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Next diagnostic" })
|
||||||
|
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Diagnostic list" })
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
require("mason").setup()
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = { "eslint", "stylua", "vue_ls", "ts_ls" },
|
||||||
|
})
|
||||||
|
|
||||||
|
local function on_attach(_, bufnr)
|
||||||
|
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = bufnr, desc = "Go to definition" })
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.lsp.config("eslint", {
|
||||||
|
settings = {
|
||||||
|
workingDirectories = { mode = "auto" },
|
||||||
|
format = true, -- Disable if using null-ls or Prettier
|
||||||
|
},
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
on_attach(client, bufnr)
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function(args)
|
||||||
|
require("conform").format({ bufnr = args.buf })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.config("lua_ls", {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = { verstion = "LuaJIT" },
|
||||||
|
workspace = {
|
||||||
|
checkThirdParty = false,
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.config("intelephense", {
|
||||||
|
settings = {
|
||||||
|
intelephense = {
|
||||||
|
files = {
|
||||||
|
maxSize = 2000000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
on_attach = on_attach(),
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.config("vue_ls", {})
|
||||||
|
|
||||||
|
vim.lsp.config("ts_ls", {
|
||||||
|
init_options = {
|
||||||
|
plugins = {
|
||||||
|
{
|
||||||
|
name = "@vue/typescript-plugin",
|
||||||
|
location = vim.fn.expand(
|
||||||
|
"$HOME/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server"
|
||||||
|
),
|
||||||
|
languages = { "vue" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
|
||||||
|
on_attach = on_attach(),
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = true,
|
||||||
|
underlin = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable({
|
||||||
|
"eslint",
|
||||||
|
"lua_ls",
|
||||||
|
"tailwindcss",
|
||||||
|
"intelephense",
|
||||||
|
"laravel_ls",
|
||||||
|
"vue_ls",
|
||||||
|
"ts_ls",
|
||||||
|
})
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
require("plugins/fzf")
|
||||||
|
require("plugins/gitsigns")
|
||||||
|
require("plugins/blink")
|
||||||
|
require("plugins/conform")
|
||||||
|
require("plugins/autotag")
|
||||||
|
require("plugins/autopair")
|
||||||
|
require("plugins/diffview")
|
||||||
|
require("plugins/copilot")
|
||||||
|
|
||||||
|
require("lsp/lsp-setup")
|
||||||
+252
@@ -0,0 +1,252 @@
|
|||||||
|
vim.cmd(":colorscheme catppuccin")
|
||||||
|
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.splitright = true
|
||||||
|
|
||||||
|
-- Treat hyphens as word separators so this-word becomes two words
|
||||||
|
vim.opt.iskeyword:remove("-")
|
||||||
|
|
||||||
|
-- Set tab width and use spaces instead of tabs
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
|
||||||
|
-- Enable copying to clipboard
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
|
||||||
|
vim.opt.scrolloff = 999
|
||||||
|
|
||||||
|
-- Enable syntax highlighting and smart indentation
|
||||||
|
vim.opt.syntax = "on"
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
|
||||||
|
-- Highlight the current line
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
|
||||||
|
-- Makes the virtual edit move and select where there is no character
|
||||||
|
vim.opt.virtualedit = "block"
|
||||||
|
|
||||||
|
vim.opt.inccommand = "split"
|
||||||
|
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
vim.opt.colorcolumn = "100"
|
||||||
|
|
||||||
|
-- vim.opt.showmatch = true
|
||||||
|
vim.opt.cmdheight = 1
|
||||||
|
vim.opt.completeopt = "menuone,noinsert,noselect"
|
||||||
|
vim.opt.showmode = false
|
||||||
|
|
||||||
|
local undodir = vim.fn.expand("~/.vim/undodir")
|
||||||
|
if vim.fn.isdirectory(undodir) == 0 then
|
||||||
|
vim.fn.mkdir(undodir, "p")
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.undodir = undodir
|
||||||
|
vim.opt.updatetime = 300
|
||||||
|
vim.opt.timeoutlen = 500
|
||||||
|
vim.opt.ttimeoutlen = 0
|
||||||
|
vim.opt.autoread = true
|
||||||
|
vim.opt.autowrite = false
|
||||||
|
|
||||||
|
vim.opt.hidden = true -- allow hidden buffers
|
||||||
|
vim.opt.errorbells = false
|
||||||
|
--vim.opt.backspace = "indent,eal,start" -- better backspace behaviour
|
||||||
|
vim.opt.autochdir = false
|
||||||
|
vim.opt.selection = "inclusive"
|
||||||
|
vim.opt.wrap = false
|
||||||
|
|
||||||
|
-- ============================================================================
|
||||||
|
-- STATUSLINE
|
||||||
|
-- ============================================================================
|
||||||
|
|
||||||
|
-- Git branch function with caching and Nerd Font icon
|
||||||
|
local cached_branch = ""
|
||||||
|
local last_check = 0
|
||||||
|
local function git_branch()
|
||||||
|
local now = vim.loop.now()
|
||||||
|
if now - last_check > 5000 then -- Check every 5 seconds
|
||||||
|
cached_branch = vim.fn.system("git branch --show-current 2>/dev/null | tr -d '\n'")
|
||||||
|
last_check = now
|
||||||
|
end
|
||||||
|
if cached_branch ~= "" then
|
||||||
|
return " \u{e725} " .. cached_branch .. " " -- nf-dev-git_branch
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
-- File type with Nerd Font icon
|
||||||
|
local function file_type()
|
||||||
|
local ft = vim.bo.filetype
|
||||||
|
local icons = {
|
||||||
|
lua = "\u{e620} ", -- nf-dev-lua
|
||||||
|
python = "\u{e73c} ", -- nf-dev-python
|
||||||
|
javascript = "\u{e74e} ", -- nf-dev-javascript
|
||||||
|
typescript = "\u{e628} ", -- nf-dev-typescript
|
||||||
|
javascriptreact = "\u{e7ba} ",
|
||||||
|
typescriptreact = "\u{e7ba} ",
|
||||||
|
html = "\u{e736} ", -- nf-dev-html5
|
||||||
|
css = "\u{e749} ", -- nf-dev-css3
|
||||||
|
scss = "\u{e749} ",
|
||||||
|
json = "\u{e60b} ", -- nf-dev-json
|
||||||
|
markdown = "\u{e73e} ", -- nf-dev-markdown
|
||||||
|
vim = "\u{e62b} ", -- nf-dev-vim
|
||||||
|
sh = "\u{f489} ", -- nf-oct-terminal
|
||||||
|
bash = "\u{f489} ",
|
||||||
|
zsh = "\u{f489} ",
|
||||||
|
rust = "\u{e7a8} ", -- nf-dev-rust
|
||||||
|
go = "\u{e724} ", -- nf-dev-go
|
||||||
|
c = "\u{e61e} ", -- nf-dev-c
|
||||||
|
cpp = "\u{e61d} ", -- nf-dev-cplusplus
|
||||||
|
java = "\u{e738} ", -- nf-dev-java
|
||||||
|
php = "\u{e73d} ", -- nf-dev-php
|
||||||
|
ruby = "\u{e739} ", -- nf-dev-ruby
|
||||||
|
swift = "\u{e755} ", -- nf-dev-swift
|
||||||
|
kotlin = "\u{e634} ",
|
||||||
|
dart = "\u{e798} ",
|
||||||
|
elixir = "\u{e62d} ",
|
||||||
|
haskell = "\u{e777} ",
|
||||||
|
sql = "\u{e706} ",
|
||||||
|
yaml = "\u{f481} ",
|
||||||
|
toml = "\u{e615} ",
|
||||||
|
xml = "\u{f05c} ",
|
||||||
|
dockerfile = "\u{f308} ", -- nf-linux-docker
|
||||||
|
gitcommit = "\u{f418} ", -- nf-oct-git_commit
|
||||||
|
gitconfig = "\u{f1d3} ", -- nf-fa-git
|
||||||
|
vue = "\u{fd42} ", -- nf-md-vuejs
|
||||||
|
svelte = "\u{e697} ",
|
||||||
|
astro = "\u{e628} ",
|
||||||
|
}
|
||||||
|
|
||||||
|
if ft == "" then
|
||||||
|
return " \u{f15b} " -- nf-fa-file_o
|
||||||
|
end
|
||||||
|
|
||||||
|
return ((icons[ft] or " \u{f15b} ") .. ft)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- File size with Nerd Font icon
|
||||||
|
local function file_size()
|
||||||
|
local size = vim.fn.getfsize(vim.fn.expand("%"))
|
||||||
|
if size < 0 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
local size_str
|
||||||
|
if size < 1024 then
|
||||||
|
size_str = size .. "B"
|
||||||
|
elseif size < 1024 * 1024 then
|
||||||
|
size_str = string.format("%.1fK", size / 1024)
|
||||||
|
else
|
||||||
|
size_str = string.format("%.1fM", size / 1024 / 1024)
|
||||||
|
end
|
||||||
|
return " \u{f016} " .. size_str .. " " -- nf-fa-file_o
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Mode indicators with Nerd Font icons
|
||||||
|
local function mode_icon()
|
||||||
|
local mode = vim.fn.mode()
|
||||||
|
local modes = {
|
||||||
|
n = " \u{f121} NORMAL",
|
||||||
|
i = " \u{f11c} INSERT",
|
||||||
|
v = " \u{f0168} VISUAL",
|
||||||
|
V = " \u{f0168} V-LINE",
|
||||||
|
["\22"] = " \u{f0168} V-BLOCK",
|
||||||
|
c = " \u{f120} COMMAND",
|
||||||
|
s = " \u{f0c5} SELECT",
|
||||||
|
S = " \u{f0c5} S-LINE",
|
||||||
|
["\19"] = " \u{f0c5} S-BLOCK",
|
||||||
|
R = " \u{f044} REPLACE",
|
||||||
|
r = " \u{f044} REPLACE",
|
||||||
|
["!"] = " \u{f489} SHELL",
|
||||||
|
t = " \u{f120} TERMINAL",
|
||||||
|
}
|
||||||
|
return modes[mode] or (" \u{f059} " .. mode)
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.mode_icon = mode_icon
|
||||||
|
_G.git_branch = git_branch
|
||||||
|
_G.file_type = file_type
|
||||||
|
_G.file_size = file_size
|
||||||
|
|
||||||
|
vim.cmd([[
|
||||||
|
highlight StatusLineBold gui=bold cterm=bold
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- Function to change statusline based on window focus
|
||||||
|
local function setup_dynamic_statusline()
|
||||||
|
vim.api.nvim_create_autocmd({ "WinEnter", "BufEnter" }, {
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.statusline = table.concat({
|
||||||
|
" ",
|
||||||
|
"%#StatusLineBold#",
|
||||||
|
"%{v:lua.mode_icon()}",
|
||||||
|
"%#StatusLine#",
|
||||||
|
" \u{e0b1} %f %h%m%r", -- nf-pl-left_hard_divider
|
||||||
|
"%{v:lua.git_branch()}",
|
||||||
|
"\u{e0b1} ", -- nf-pl-left_hard_divider
|
||||||
|
"%{v:lua.file_type()}",
|
||||||
|
"\u{e0b1} ", -- nf-pl-left_hard_divider
|
||||||
|
"%{v:lua.file_size()}",
|
||||||
|
"%=", -- Right-align everything after this
|
||||||
|
" \u{f017} %l:%c %P ", -- nf-fa-clock_o for line/col
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.api.nvim_set_hl(0, "StatusLineBold", { bold = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "WinLeave", "BufLeave" }, {
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.statusline = " %f %h%m%r \u{e0b1} %{v:lua.file_type()} %= %l:%c %P "
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
setup_dynamic_statusline()
|
||||||
|
|
||||||
|
-- highlight yanked text
|
||||||
|
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||||
|
group = augroup,
|
||||||
|
callback = function()
|
||||||
|
vim.hl.on_yank()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- return to last cursor position
|
||||||
|
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||||
|
group = augroup,
|
||||||
|
desc = "Restore last cursor position",
|
||||||
|
callback = function()
|
||||||
|
if vim.o.diff then -- except in diff mode
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local last_pos = vim.api.nvim_buf_get_mark(0, '"') -- {line, col}
|
||||||
|
local last_line = vim.api.nvim_buf_line_count(0)
|
||||||
|
|
||||||
|
local row = last_pos[1]
|
||||||
|
if row < 1 or row > last_line then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
pcall(vim.api.nvim_win_set_cursor, 0, last_pos)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- wrap, linebreak and spellcheck on markdown and text files
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
group = augroup,
|
||||||
|
pattern = { "markdown", "text", "gitcommit" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.wrap = true
|
||||||
|
vim.opt_local.linebreak = true
|
||||||
|
vim.opt_local.spell = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
vim.pack.add({
|
||||||
|
"https://github.com/ibhagwan/fzf-lua",
|
||||||
|
{
|
||||||
|
src = "https://github.com/nvim-treesitter/nvim-treesitter",
|
||||||
|
branch = "main",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
},
|
||||||
|
"https://github.com/mason-org/mason.nvim",
|
||||||
|
"https://github.com/neovim/nvim-lspconfig",
|
||||||
|
"https://github.com/lewis6991/gitsigns.nvim",
|
||||||
|
"https://github.com/mason-org/mason-lspconfig.nvim",
|
||||||
|
{
|
||||||
|
src = "https://github.com/saghen/blink.cmp",
|
||||||
|
version = vim.version.range("^1"),
|
||||||
|
},
|
||||||
|
"https://github.com/stevearc/conform.nvim",
|
||||||
|
"https://github.com/windwp/nvim-ts-autotag",
|
||||||
|
"https://github.com/nvim-lua/plenary.nvim.git",
|
||||||
|
"https://github.com/CopilotC-Nvim/CopilotChat.nvim",
|
||||||
|
"https://github.com/windwp/nvim-autopairs",
|
||||||
|
"https://github.com/sindrets/diffview.nvim",
|
||||||
|
-- Color schemes
|
||||||
|
})
|
||||||
|
|
||||||
|
local function packadd(name)
|
||||||
|
vim.cmd("packadd " .. name)
|
||||||
|
end
|
||||||
|
|
||||||
|
packadd("fzf-lua")
|
||||||
|
packadd("nvim-treesitter")
|
||||||
|
packadd("mason.nvim")
|
||||||
|
packadd("nvim-lspconfig")
|
||||||
|
packadd("gitsigns.nvim")
|
||||||
|
packadd("mason-lspconfig.nvim")
|
||||||
|
packadd("blink.cmp")
|
||||||
|
packadd("nvim-ts-autotag")
|
||||||
|
packadd("plenary.nvim")
|
||||||
|
packadd("CopilotChat.nvim")
|
||||||
|
packadd("nvim-autopairs")
|
||||||
|
packadd("diffview.nvim")
|
||||||
|
-----------------
|
||||||
|
-- CONFORM added directly to .local/share/nvim/site/pack/conform/start/conform.nvim
|
||||||
|
-- from Git repo
|
||||||
|
--
|
||||||
|
-- git clone --depth=1 https://github.com/stevearc/conform.nvim.git "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/pack/conform/start/conform.nvim
|
||||||
|
--
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
-- Color schemes
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
require("nvim-autopairs").setup({})
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
require("nvim-ts-autotag").setup({
|
||||||
|
opts = {
|
||||||
|
-- Defaults
|
||||||
|
enable_close = true, -- Auto close tags
|
||||||
|
enable_rename = true, -- Auto rename pairs of tags
|
||||||
|
enable_close_on_slash = false, -- Auto close on trailing </
|
||||||
|
},
|
||||||
|
-- Also override individual filetype configs, these take priority.
|
||||||
|
-- Empty by default, useful if one of the "opts" global settings
|
||||||
|
-- doesn't work well in a specific filetype
|
||||||
|
per_filetype = {
|
||||||
|
["html"] = {
|
||||||
|
enable_close = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
local cmp = require("blink.cmp")
|
||||||
|
cmp.setup({
|
||||||
|
keymap = {
|
||||||
|
preset = "default",
|
||||||
|
["<Tab>"] = { "accept", "fallback" },
|
||||||
|
["<C><leader>"] = { "show" },
|
||||||
|
},
|
||||||
|
appearance = {
|
||||||
|
nerd_font_variant = "mono",
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
documentation = {
|
||||||
|
auto_show = true,
|
||||||
|
auto_show_delay_ms = 200,
|
||||||
|
},
|
||||||
|
accept = {
|
||||||
|
auto_brackets = { enabled = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
require("conform").setup({
|
||||||
|
formatter_by_ft = {
|
||||||
|
lua = { "stylua" },
|
||||||
|
javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
json = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
vue = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
php = { "pint" },
|
||||||
|
},
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_format = "fallback",
|
||||||
|
},
|
||||||
|
default_format_ops = {
|
||||||
|
lsp_format = "fallback",
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
require("CopilotChat").setup({
|
||||||
|
providers = {
|
||||||
|
my_mac = {
|
||||||
|
get_url = function(otps)
|
||||||
|
return "http://192.168.8.10:11434/v1"
|
||||||
|
end,
|
||||||
|
get_models = function()
|
||||||
|
return { { id = "qwen2.5:14b" } }
|
||||||
|
end,
|
||||||
|
prepare_input = require("CopilotChat.config.providers").copilot.prepare_input,
|
||||||
|
prepare_output = require("CopilotChat.config.providers").copilot.prepare_output,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.g.copilot_no_tab_map = true
|
||||||
|
|
||||||
|
vim.g.copilot_enabled = false
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>cc", ":CopilotChat<CR>", { desc = "Open Copilot Chat" })
|
||||||
|
vim.keymap.set("n", "<leader>cr", ":CopilotChatRestart<CR>", { desc = "Restart Copilot Chat" })
|
||||||
|
vim.keymap.set("n", "<leader>cs", ":CopilotChatStop<CR>", { desc = "Stop Copilot Chat" })
|
||||||
|
vim.keymap.set("n", "<leader>ca", ":CopilotChatAccept<CR>", { desc = "Accept Copilot Chat Suggestion" })
|
||||||
|
vim.keymap.set("n", "<leader>cn", ":CopilotChatNext<CR>", { desc = "Next Copilot Chat Suggestion" })
|
||||||
|
vim.keymap.set("n", "<leader>cp", ":CopilotChatPrev<CR>", { desc = "Previous Copilot Chat Suggestion" })
|
||||||
|
vim.keymap.set("n", "<leader>cd", ":CopilotChatClose<CR>", { desc = "Dismiss Copilot Chat" })
|
||||||
|
|
||||||
|
local function toggle_copilot()
|
||||||
|
local copilot_enabled = vim.g.copilot_enabled
|
||||||
|
if copilot_enabled == 1 then
|
||||||
|
vim.cmd("Copilot disable")
|
||||||
|
print("Copilot disabled")
|
||||||
|
else
|
||||||
|
vim.cmd("Copilot enable")
|
||||||
|
print("Copilot enabled")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ct", toggle_copilot, { desc = "Toggle Copilot" })
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
require("diffview").setup({})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>do", ":DiffviewOpen<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>dc", ":DiffviewClose<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>dh", ":DiffviewFileHistory<CR>")
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
require("fzf-lua").setup({})
|
||||||
|
|
||||||
|
-- FZF-KEYMAPS
|
||||||
|
vim.keymap.set("n", "<leader>ff", function()
|
||||||
|
require("fzf-lua").files()
|
||||||
|
end, { desc = "FZF Files" })
|
||||||
|
vim.keymap.set("n", "<leader>fg", function()
|
||||||
|
require("fzf-lua").live_grep()
|
||||||
|
end, { desc = "FZF Live Grep" })
|
||||||
|
vim.keymap.set("n", "<leader>fb", function()
|
||||||
|
require("fzf-lua").buffers()
|
||||||
|
end, { desc = "FZF Buffers" })
|
||||||
|
vim.keymap.set("n", "<leader>fh", function()
|
||||||
|
require("fzf-lua").help_tags()
|
||||||
|
end, { desc = "FZF Help Tags" })
|
||||||
|
vim.keymap.set("n", "<leader>fx", function()
|
||||||
|
require("fzf-lua").diagnostics_document()
|
||||||
|
end, { desc = "FZF Diagnostics Document" })
|
||||||
|
vim.keymap.set("n", "<leader>fX", function()
|
||||||
|
require("fzf-lua").diagnostics_workspace()
|
||||||
|
end, { desc = "FZF Diagnostics Workspace" })
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
require("gitsigns").setup({
|
||||||
|
signs = {
|
||||||
|
add = { text = "\u{2590}" }, -- ▏
|
||||||
|
change = { text = "\u{2590}" }, -- ▐
|
||||||
|
delete = { text = "\u{2590}" }, -- ◦
|
||||||
|
topdelete = { text = "\u{25e6}" }, -- ◦
|
||||||
|
changedelete = { text = "\u{25cf}" }, -- ●
|
||||||
|
untracked = { text = "\u{25cb}" }, -- ○
|
||||||
|
},
|
||||||
|
signcolumn = true,
|
||||||
|
current_line_blame = false,
|
||||||
|
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gitsigns = require('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
|
||||||
|
vim.cmd.normal({']c', bang = true})
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk('next')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
map('n', '[c', function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal({'[c', bang = true})
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk('prev')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
map('n', '<leader>hs', gitsigns.stage_hunk)
|
||||||
|
map('n', '<leader>hr', gitsigns.reset_hunk)
|
||||||
|
|
||||||
|
map('v', '<leader>hs', function()
|
||||||
|
gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
|
||||||
|
end)
|
||||||
|
|
||||||
|
map('v', '<leader>hr', function()
|
||||||
|
gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
|
||||||
|
end)
|
||||||
|
|
||||||
|
map('n', '<leader>hS', gitsigns.stage_buffer)
|
||||||
|
map('n', '<leader>hR', gitsigns.reset_buffer)
|
||||||
|
map('n', '<leader>hp', gitsigns.preview_hunk)
|
||||||
|
map('n', '<leader>hi', gitsigns.preview_hunk_inline)
|
||||||
|
|
||||||
|
map('n', '<leader>hb', function()
|
||||||
|
gitsigns.blame_line({ full = true })
|
||||||
|
end)
|
||||||
|
|
||||||
|
map('n', '<leader>hd', gitsigns.diffthis)
|
||||||
|
|
||||||
|
map('n', '<leader>hD', function()
|
||||||
|
gitsigns.diffthis('~')
|
||||||
|
end)
|
||||||
|
|
||||||
|
map('n', '<leader>hQ', function() gitsigns.setqflist('all') end)
|
||||||
|
map('n', '<leader>hq', gitsigns.setqflist)
|
||||||
|
|
||||||
|
-- Toggles
|
||||||
|
map('n', '<leader>tb', gitsigns.toggle_current_line_blame)
|
||||||
|
map('n', '<leader>tw', gitsigns.toggle_word_diff)
|
||||||
|
|
||||||
|
-- Text object
|
||||||
|
map({'o', 'x'}, 'ih', gitsigns.select_hunk)
|
||||||
|
end
|
||||||
|
})
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"plugins": {
|
||||||
|
"CopilotChat.nvim": {
|
||||||
|
"rev": "137d3bc527518f5ea982c43c43084496732365c3",
|
||||||
|
"src": "https://github.com/CopilotC-Nvim/CopilotChat.nvim"
|
||||||
|
},
|
||||||
|
"blink.cmp": {
|
||||||
|
"rev": "78336bc89ee5365633bcf754d93df01678b5c08f",
|
||||||
|
"src": "https://github.com/saghen/blink.cmp",
|
||||||
|
"version": "1.0.0 - 2.0.0"
|
||||||
|
},
|
||||||
|
"conform.nvim": {
|
||||||
|
"rev": "18aeab3d63d350dcf44d64c462cc489a3412af40",
|
||||||
|
"src": "https://github.com/stevearc/conform.nvim"
|
||||||
|
},
|
||||||
|
"diffview.nvim": {
|
||||||
|
"rev": "4516612fe98ff56ae0415a259ff6361a89419b0a",
|
||||||
|
"src": "https://github.com/sindrets/diffview.nvim"
|
||||||
|
},
|
||||||
|
"fzf-lua": {
|
||||||
|
"rev": "311a630292310ea3bfe46dd616e17f283e975801",
|
||||||
|
"src": "https://github.com/ibhagwan/fzf-lua"
|
||||||
|
},
|
||||||
|
"gitsigns.nvim": {
|
||||||
|
"rev": "dd3f588bacbeb041be6facf1742e42097f62165d",
|
||||||
|
"src": "https://github.com/lewis6991/gitsigns.nvim"
|
||||||
|
},
|
||||||
|
"mason-lspconfig.nvim": {
|
||||||
|
"rev": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e",
|
||||||
|
"src": "https://github.com/mason-org/mason-lspconfig.nvim"
|
||||||
|
},
|
||||||
|
"mason.nvim": {
|
||||||
|
"rev": "8e921c2b68571e978db5d4d3fef9c9a7f8755473",
|
||||||
|
"src": "https://github.com/mason-org/mason.nvim"
|
||||||
|
},
|
||||||
|
"nvim-autopairs": {
|
||||||
|
"rev": "7b9923abad60b903ece7c52940e1321d39eccc79",
|
||||||
|
"src": "https://github.com/windwp/nvim-autopairs"
|
||||||
|
},
|
||||||
|
"nvim-lspconfig": {
|
||||||
|
"rev": "8f7e64066e2641d5e7d494962a9c7051e3d38dd5",
|
||||||
|
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||||
|
},
|
||||||
|
"nvim-treesitter": {
|
||||||
|
"rev": "4916d6592ede8c07973490d9322f187e07dfefac",
|
||||||
|
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
"nvim-ts-autotag": {
|
||||||
|
"rev": "88c1453db4ba7dd24131086fe51fdf74e587d275",
|
||||||
|
"src": "https://github.com/windwp/nvim-ts-autotag"
|
||||||
|
},
|
||||||
|
"plenary.nvim": {
|
||||||
|
"rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
|
||||||
|
"src": "https://github.com/nvim-lua/plenary.nvim.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Submodule
+1
Submodule pack/github/start/copilot.vim added at a12fd56721
Reference in New Issue
Block a user