Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5710e2a2fd | ||
|
|
2227b0b584 |
@@ -1,3 +0,0 @@
|
|||||||
./pack
|
|
||||||
./nvim-pack-lock.json
|
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
This is my nvim setup
|
||||||
|
|
||||||
|
Check the branches for which version you want.
|
||||||
|
|
||||||
|
These are the base plugins:
|
||||||
|
|
||||||
|
Nvim-treesitter - https://github.com/nvim-treesitter/nvim-treesitter
|
||||||
|
|
||||||
|
Blink - https://github.com/saghen/blink.cmp</br>
|
||||||
|
A completion plugin
|
||||||
|
|
||||||
|
Conform - https://github.com/stevearc/conform.nvim</br>
|
||||||
|
A formatter
|
||||||
|
|
||||||
|
Diffview - https://github.com/sindrets/diffview.nvim</br>
|
||||||
|
Single tabpage interface for easily cycling through diffs for all modified files for any git rev.
|
||||||
|
|
||||||
|
fzf-lua - https://github.com/ibhagwan/fzf-lua
|
||||||
|
- Need to install FZF globally on the machine for this to work.
|
||||||
|
|
||||||
|
GitSigns - https://github.com/lewis6991/gitsigns.nvim</br>
|
||||||
|
Deep buffer integration for Git
|
||||||
|
|
||||||
|
-
|
||||||
|
- Language servers
|
||||||
|
-
|
||||||
|
LSP-config - https://github.com/neovim/nvim-lspconfig
|
||||||
|
Mason-lspconfig - https://github.com/mason-org/mason-lspconfig.nvim
|
||||||
|
Mason - https://github.com/mason-org/mason.nvim
|
||||||
|
|
||||||
|
Autopairs - https://github.com/windwp/nvim-autopairs
|
||||||
|
- automatically adds pair to (){}"" etc
|
||||||
|
|
||||||
|
AutoTag - https://github.com/windwp/nvim-ts-autotag
|
||||||
|
- closes html tags, makes it easier to rename/change tags
|
||||||
|
|
||||||
|
Plenary - https://github.com/nvim-lua/plenary.nvim.git
|
||||||
|
- required by other plugins
|
||||||
|
|
||||||
|
CopilotChat - https://github.com/CopilotC-Nvim/CopilotChat.nvim</br>
|
||||||
|
AI chatbox for Copilot or any other AI provider
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
require("options")
|
|
||||||
require("keymaps")
|
|
||||||
require("floating-terminal")
|
|
||||||
require("package-installs")
|
|
||||||
require("myplugs")
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
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" })
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
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" })
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
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",
|
|
||||||
})
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
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
@@ -1,252 +0,0 @@
|
|||||||
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,
|
|
||||||
})
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
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
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
require("nvim-autopairs").setup({})
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
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,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
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 },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
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",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
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" })
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
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>")
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
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" })
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
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
|
|
||||||
})
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
{
|
|
||||||
"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 pack/github/start/copilot.vim deleted from a12fd56721
Reference in New Issue
Block a user