17 Commits

Author SHA1 Message Date
inorishio a517625e1d smth 2026-03-17 16:09:03 +01:00
inorishio 95828a8abe Win copilot edit, same shannigans but it works? 2026-03-06 11:25:21 +01:00
inorishio 75a5dd8f9c cmp works? ghost text works? 2026-03-05 00:36:39 +01:00
inorishio d9157328ef The complete windows feel 2026-02-13 12:19:59 +01:00
inorishio 9c871ccf40 The complete windows feel 2026-02-13 11:10:09 +01:00
inorishio ce4238004b qml fixes? not really they don't work. note: need to change mappings 2026-02-11 16:01:31 +01:00
inorishio 4c8248f323 poggers 2026-02-10 16:13:55 +01:00
inorishio f77acb5f33 Powershell script 2026-02-09 16:10:12 +01:00
inorishio 1d13bc8a07 The infamous windows/linux NVIM config 2026-02-09 16:05:53 +01:00
inorishio 353b462aaf githubsignsbcit'scracked 2026-01-30 14:47:01 +01:00
inorishio a806dc285f omegalul treesitter config 2026-01-21 22:59:38 +01:00
inorishio 8ce88a35bc update 2026-01-19 22:25:04 +01:00
inorishio 918d3654c5 nvim c*m 2026-01-19 19:29:16 +01:00
inorishio f434feba89 4work 2025-12-11 08:08:24 +01:00
InoriShio f2b10ec900 Merge pull request #4 from Zacharias-Brohn/main
I'm just way too bad
2025-12-04 21:09:19 +00:00
InoriShio 7526d2795b Merge branch 'InoriShio' into main 2025-12-04 21:08:59 +00:00
inorishio 92170fa726 Nuking this bad stuff 2025-10-01 22:53:36 +02:00
45 changed files with 1104 additions and 571 deletions
+17
View File
@@ -1,4 +1,21 @@
### The infamous windows/linux Neovim config
## windows
# Powershell
Make use of the powershell script to solve a bunch of issues beforehand.
```pwsh
.\scripts\windows_dependencies.ps1
```
To Do powershell script:
- [] Add binaries to PATH
## Remove lines containing regex ## Remove lines containing regex
``` ```
:%g/{regex}/d :%g/{regex}/d
``` ```
+13
View File
@@ -0,0 +1,13 @@
function! neoformat#formatters#qml#enabled() abort
return ['qmlformat']
endfunction
function! neoformat#formatters#qml#qmlformat() abort
return {
\ 'exe': '/usr/lib/qt6/bin/qmlformat',
\ 'args': ['-t', '-n', '--objects-spacing', '--functions-spacing', '-i'],
\ 'replace': 1,
\ 'stderr': 1,
\ 'stdin': 0
\ }
endfunction
-55
View File
@@ -1,55 +0,0 @@
{
"suggest.noselect": true,
"suggest.enablePreselect": false,
"suggest.triggerAfterInsertEnter": true,
"inlineSuggest.autoTrigger": false,
"suggest.completionItemKindLabels": {
"text": "",
"method": "",
"function": "",
"constructor": "",
"field": "",
"variable": "",
"class": "",
"interface": "",
"module": "",
"property": "",
"unit": "",
"value": "",
"enum": "",
"keyword": "",
"snippet": "",
"color": "",
"file": "",
"reference": "",
"folder": "",
"enumMember": "",
"constant": "",
"struct": "",
"event": "",
"operator": "",
"typeParameter": "",
"default": ""
},
"suggest.floatConfig": {
"maxWidth": 80,
"winblend": 1,
},
"suggest.virtualText": false,
"languageserver": {
"hyprlang": {
"command": "hyprls",
"filetypes": ["hyprlang"]
},
"qml": {
"command": "qmlls6",
"filetypes": ["qml"]
}
},
"git.addedSign.hlGroup": "GitGutterAdd",
"git.changedSign.hlGroup": "GitGutterChange",
"git.removedSign.hlGroup": "GitGutterDelete",
"coc.source.file.enable": true,
"coc.source.file.ignoreHidden": false,
}
+4 -4
View File
@@ -1,12 +1,12 @@
local gen_hook = MiniSplitjoin.gen_hook local gen_hook = MiniSplitjoin.gen_hook
local curly = { brackets = { '%b{}' }, separator = ';' } local curly = { brackets = { "%b{}" }, separator = ";" }
local curly_semi = { brackets = { '%b{}' }, separator = ';' } local curly_semi = { brackets = { "%b{}" }, separator = ";" }
local add_semicolon_curly = gen_hook.add_trailing_separator(curly) local add_semicolon_curly = gen_hook.add_trailing_separator(curly)
local remove_semicolon_curly = gen_hook.del_trailing_separator(curly) local remove_semicolon_curly = gen_hook.del_trailing_separator(curly)
local pad_curly = gen_hook.pad_brackets(curly_semi) local pad_curly = gen_hook.pad_brackets(curly_semi)
vim.b.minisplitjoin_config = { vim.b.minisplitjoin_config = {
split = { hooks_post = { remove_semicolon_curly }}, split = { hooks_post = { remove_semicolon_curly } },
join = { hooks_pre = { add_semicolon_curly }, hooks_post = { pad_curly }}, join = { hooks_pre = { add_semicolon_curly }, hooks_post = { pad_curly } },
} }
+12 -13
View File
@@ -1,22 +1,10 @@
if vim.env.PROF then
local snacks = vim.fn.stdpath("data") .. "/lazy/snacks.nvim"
vim.opt.rtp:append( snacks )
require("snacks.profiler").startup({
startup = {
event = "UIEnter",
},
})
end
vim.cmd('source ' .. vim.fn.stdpath("config") .. "/cursor.vim")
require("config.lazy") require("config.lazy")
require("options") require("options")
require("globals") require("globals")
require("mappings") require("mappings")
require("autocmd") require("autocmd")
require("minimodules").load_modules() require("minimodules").load_modules()
-- require("coc-settings") vim.cmd('source ' .. vim.fn.stdpath("config") .. "/cursor.vim")
if vim.g.neovide then if vim.g.neovide then
require("config.neovide") require("config.neovide")
@@ -28,3 +16,14 @@ vim.filetype.add({
[".*/uwsm/env.*"] = "zsh", [".*/uwsm/env.*"] = "zsh",
} }
}) })
if vim.env.PROF then
local snacks = vim.fn.stdpath("data") .. "/lazy/snacks.nvim"
vim.opt.rtp:append( snacks )
require("snacks.profiler").startup({
startup = {
event = "UIEnter",
},
})
end
+74
View File
@@ -0,0 +1,74 @@
local M = {}
M.icons = {
misc = {
dots = "󰇘",
},
ft = {
octo = "",
gh = "",
["markdown.gh"] = "",
},
dap = {
Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" },
Breakpoint = "",
BreakpointCondition = "",
BreakpointRejected = { "", "DiagnosticError" },
LogPoint = ".>",
},
diagnostics = {
Error = "",
Warn = "",
Hint = "",
Info = "",
},
git = {
added = "",
modified = "",
removed = "",
},
kinds = {
Array = "",
Boolean = "󰨙 ",
Class = "",
Codeium = "󰘦 ",
Color = "",
Control = "",
Collapsed = "",
Constant = "󰏿 ",
Constructor = "",
Copilot = "",
Enum = "",
EnumMember = "",
Event = "",
Field = "",
File = "",
Folder = "",
Function = "󰊕 ",
Interface = "",
Key = "",
Keyword = "",
Method = "󰊕 ",
Module = "",
Namespace = "󰦮 ",
Null = "",
Number = "󰎠 ",
Object = "",
Operator = "",
Package = "",
Property = "",
Reference = "",
Snippet = "󱄽 ",
String = "",
Struct = "󰆼 ",
Supermaven = "",
TabNine = "󰏚 ",
Text = "",
TypeParameter = "",
Unit = "",
Value = "",
Variable = "󰀫 ",
},
}
return M
+28 -6
View File
@@ -2,19 +2,41 @@ local autocmd = vim.api.nvim_create_autocmd
autocmd("LspAttach", { autocmd("LspAttach", {
callback = function(args) callback = function(args)
local client = vim.lsp.get_client_by_id( args.data.client_id ) local client = vim.lsp.get_client_by_id(args.data.client_id)
if client then if client and vim.lsp.document_color and vim.lsp.document_color.enable then
vim.lsp.document_color.enable(false, args.buf, { "background" }) vim.lsp.document_color.enable(false, args.buf, { "background" })
end end
end, end,
}) })
autocmd("VimLeave", { autocmd("VimLeave", {
command = "set guicursor=a:ver25-Cursor" command = "set guicursor=a:ver25-Cursor",
}) })
autocmd({ "CursorHold" }, { autocmd("BufWritePre", {
callback = function() callback = function()
vim.diagnostic.open_float(nil, { focus = false }) local ok = pcall(function()
end vim.cmd "undojoin"
end)
vim.cmd "Neoformat"
end,
})
-- fWindows
autocmd("VimLeavePre", {
group = vim.api.nvim_create_augroup('fuck_shada_temp', { clear = true }),
pattern = { '*' },
callback = function()
local status = 0
for _, f in ipairs(vim.fn.globpath(vim.fn.stdpath('data') .. '/shada', '*tmp*', false, true)) do
if vim.tbl_isempty(vim.fn.readfile(f)) then
status = status + vim.fn.delete(f)
end
end
if status ~= 0 then
vim.notify('Could not delete empty temporary ShaDa files.', vim.log.levels.ERROR)
vim.fn.getchar()
end
end,
desc = "Delete empty temp ShaDa files"
}) })
-173
View File
@@ -1,173 +0,0 @@
vimiopt.backup = false
vim.opt.writebackup = false
vim.opt.completeopt = "menuone,menu,noinsert,noselect,popup"
vim.opt.pumheight = 10
vim.opt.updatetime = 300
vim.opt.signcolumn = "yes"
local keyset = vim.keymap.set
function _G.check_back_space()
local col = vim.fn.col('.') - 1
return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil
end
-- Use Tab for trigger completion with characters ahead and navigate
-- NOTE: There's always a completion item selected by default, you may want to enable
-- no select by setting `"suggest.noselect": true` in your configuration file
-- NOTE: Use command ':verbose imap <tab>' to make sure Tab is not mapped by
-- other plugins before putting this into your config
local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false}
keyset("i", "<TAB>", 'coc#pum#visible() ? coc#pum#next(0) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()', opts)
keyset("i", "<S-TAB>", [[coc#pum#visible() ? coc#pum#prev(0) : "\<C-h>"]], opts)
-- Make <CR> to accept selected completion item or notify coc.nvim to format
-- <C-g>u breaks current undo, please make your own choice
keyset("i", "<cr>", [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]], opts)
-- Use <c-j> to trigger snippets
keyset("i", "<c-j>", "<Plug>(coc-snippets-expand-jump)")
-- Use <c-space> to trigger completion
keyset("i", "<c-space>", "coc#refresh()", {silent = true, expr = true})
-- Use `[g` and `]g` to navigate diagnostics
-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
keyset("n", "[g", "<Plug>(coc-diagnostic-prev)", {silent = true})
keyset("n", "]g", "<Plug>(coc-diagnostic-next)", {silent = true})
-- GoTo code navigation
keyset("n", "gd", "<Plug>(coc-definition)", {silent = true})
keyset("n", "gy", "<Plug>(coc-type-definition)", {silent = true})
keyset("n", "gi", "<Plug>(coc-implementation)", {silent = true})
keyset("n", "gr", "<Plug>(coc-references)", {silent = true})
-- Use K to show documentation in preview window
function _G.show_docs()
local cw = vim.fn.expand('<cword>')
if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then
vim.api.nvim_command('h ' .. cw)
elseif vim.api.nvim_eval('coc#rpc#ready()') then
vim.fn.CocActionAsync('doHover')
else
vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw)
end
end
keyset("n", "K", '<CMD>lua _G.show_docs()<CR>', {silent = true})
-- Highlight the symbol and its references on a CursorHold event(cursor is idle)
vim.api.nvim_create_augroup("CocGroup", {})
vim.api.nvim_create_autocmd("CursorHold", {
group = "CocGroup",
command = "silent call CocActionAsync('highlight')",
desc = "Highlight symbol under cursor on CursorHold"
})
-- Symbol renaming
keyset("n", "<leader>rn", "<Plug>(coc-rename)", {silent = true})
-- Formatting selected code
keyset("x", "<leader>f", "<Plug>(coc-format-selected)", {silent = true})
keyset("n", "<leader>f", "<Plug>(coc-format-selected)", {silent = true})
-- Setup formatexpr specified filetype(s)
vim.api.nvim_create_autocmd("FileType", {
group = "CocGroup",
pattern = "typescript,json",
command = "setl formatexpr=CocAction('formatSelected')",
desc = "Setup formatexpr specified filetype(s)."
})
-- Apply codeAction to the selected region
-- Example: `<leader>aap` for current paragraph
local opts = {silent = true, nowait = true}
keyset("x", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)
keyset("n", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)
-- Remap keys for apply code actions at the cursor position.
keyset("n", "<leader>ac", "<Plug>(coc-codeaction-cursor)", opts)
-- Remap keys for apply source code actions for current file.
keyset("n", "<leader>as", "<Plug>(coc-codeaction-source)", opts)
-- Apply the most preferred quickfix action on the current line.
keyset("n", "<leader>qf", "<Plug>(coc-fix-current)", opts)
-- Remap keys for apply refactor code actions.
keyset("n", "<leader>re", "<Plug>(coc-codeaction-refactor)", { silent = true })
keyset("x", "<leader>r", "<Plug>(coc-codeaction-refactor-selected)", { silent = true })
keyset("n", "<leader>r", "<Plug>(coc-codeaction-refactor-selected)", { silent = true })
-- Run the Code Lens actions on the current line
keyset("n", "<leader>cl", "<Plug>(coc-codelens-action)", opts)
-- Map function and class text objects
-- NOTE: Requires 'textDocument.documentSymbol' support from the language server
keyset("x", "if", "<Plug>(coc-funcobj-i)", opts)
keyset("o", "if", "<Plug>(coc-funcobj-i)", opts)
keyset("x", "af", "<Plug>(coc-funcobj-a)", opts)
keyset("o", "af", "<Plug>(coc-funcobj-a)", opts)
keyset("x", "ic", "<Plug>(coc-classobj-i)", opts)
keyset("o", "ic", "<Plug>(coc-classobj-i)", opts)
keyset("x", "ac", "<Plug>(coc-classobj-a)", opts)
keyset("o", "ac", "<Plug>(coc-classobj-a)", opts)
-- Remap <C-f> and <C-b> to scroll float windows/popups
---@diagnostic disable-next-line: redefined-local
local opts = {silent = true, nowait = true, expr = true}
keyset("n", "<C-f>", 'coc#float#has_scroll() ? coc#float#scroll(1) : "<C-f>"', opts)
keyset("n", "<C-b>", 'coc#float#has_scroll() ? coc#float#scroll(0) : "<C-b>"', opts)
keyset("i", "<C-f>",
'coc#float#has_scroll() ? "<c-r>=coc#float#scroll(1)<cr>" : "<Right>"', opts)
keyset("i", "<C-b>",
'coc#float#has_scroll() ? "<c-r>=coc#float#scroll(0)<cr>" : "<Left>"', opts)
keyset("v", "<C-f>", 'coc#float#has_scroll() ? coc#float#scroll(1) : "<C-f>"', opts)
keyset("v", "<C-b>", 'coc#float#has_scroll() ? coc#float#scroll(0) : "<C-b>"', opts)
-- Use CTRL-S for selections ranges
-- Requires 'textDocument/selectionRange' support of language server
keyset("n", "<C-s>", "<Plug>(coc-range-select)", {silent = true})
keyset("x", "<C-s>", "<Plug>(coc-range-select)", {silent = true})
-- Add `:Format` command to format current buffer
vim.api.nvim_create_user_command("Format", "call CocAction('format')", {})
-- " Add `:Fold` command to fold current buffer
vim.api.nvim_create_user_command("Fold", "call CocAction('fold', <f-args>)", {nargs = '?'})
-- Add `:OR` command for organize imports of the current buffer
vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {})
-- Add (Neo)Vim's native statusline support
-- NOTE: Please see `:h coc-status` for integrations with external plugins that
-- provide custom statusline: lightline.vim, vim-airline
vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}")
-- Mappings for CoCList
-- code actions and coc stuff
---@diagnostic disable-next-line: redefined-local
local opts = {silent = true, nowait = true}
-- Show all diagnostics
keyset("n", "<space>a", ":<C-u>CocList diagnostics<cr>", opts)
-- Manage extensions
keyset("n", "<space>m", ":<C-u>CocList extensions<cr>", opts)
-- Show commands
keyset("n", "<space>c", ":<C-u>CocList commands<cr>", opts)
-- Find symbol of current document
keyset("n", "<space>o", ":<C-u>CocList outline<cr>", opts)
-- Search workspace symbols
keyset("n", "<space>s", ":<C-u>CocList -I symbols<cr>", opts)
-- Do default action for next item
keyset("n", "<space>j", ":<C-u>CocNext<cr>", opts)
-- Do default action for previous item
keyset("n", "<space>k", ":<C-u>CocPrev<cr>", opts)
-- Resume latest coc list
keyset("n", "<space>p", ":<C-u>CocListResume<cr>", opts)
+73
View File
@@ -0,0 +1,73 @@
require("actions-preview").setup {
-- options for vim.diff(): https://neovim.io/doc/user/lua.html#vim.diff()
diff = {
ctxlen = 3,
},
highlight_command = {
-- require("actions-preview.highlight").delta(),
-- require("actions-preview.highlight").diff_so_fancy(),
-- require("actions-preview.highlight").diff_highlight(),
},
-- priority list of preferred backend
backend = { "snacks", "nui" },
-- options related to telescope.nvim
telescope = vim.tbl_extend(
"force",
require("telescope.themes").get_dropdown(),
-- a table for customizing content
{
-- a function to make a table containing the values to be displayed.
-- fun(action: Action): { title: string, client_name: string|nil }
make_value = nil,
-- a function to make a function to be used in `display` of a entry.
-- see also `:h telescope.make_entry` and `:h telescope.pickers.entry_display`.
-- fun(values: { index: integer, action: Action, title: string, client_name: string }[]): function
make_make_display = nil,
}
),
-- options for nui.nvim components
nui = {
-- component direction. "col" or "row"
dir = "col",
-- keymap for selection component: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/menu#keymap
keymap = nil,
-- options for nui Layout component: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/layout
layout = {
position = "50%",
size = {
width = "60%",
height = "100%",
},
min_width = 40,
min_height = 10,
relative = "editor",
},
-- options for preview area: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup
preview = {
size = "80%",
border = {
style = "rounded",
padding = { 0, 1 },
},
},
-- options for selection area: https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/menu
select = {
size = "20%",
border = {
style = "rounded",
padding = { 0, 1 },
},
},
},
--- options for snacks picker
---@type snacks.picker.Config
snacks = {
layout = { rpreset = "default" },
},
}
@@ -1,4 +1,6 @@
local is_windows = package.config:sub(1,1) == "\\"
require("copilot").setup({ require("copilot").setup({
panel = { panel = {
enabled = true, enabled = true,
auto_refresh = true, auto_refresh = true,
@@ -17,10 +19,10 @@ require("copilot").setup({
suggestion = { suggestion = {
enabled = true, enabled = true,
auto_trigger = true, auto_trigger = true,
hide_during_completion = true, hide_during_completion = false,
debounce = 75, debounce = 75,
keymap = { keymap = {
accept = "<A-tab>", accept = is_windows and "<A-a>" or "<A-a>",
accept_word = false, accept_word = false,
accept_line = false, accept_line = false,
next = "<M-]>", next = "<M-]>",
+4
View File
@@ -0,0 +1,4 @@
require("copilot_cmp").setup {
event = { "InsertEnter", "LspAttach" },
fix_pairs = true,
}
-38
View File
@@ -1,38 +0,0 @@
require("chatgpt").setup({
api_host_cmd = "echo http://localhost:5000",
api_key_cmd = "echo ''",
openai_params = {
model = "Selene-1-Mini-Llama-3.1-8B-EXL3",
frequency_penalty = 0,
presence_penalty = 0,
max_tokens = 1024,
temperature = 0.1,
top_p = 1,
n = 1,
},
keymaps = {
close = "<C-c>",
close_n = "<Esc>",
yank_last = "<C-y>",
yank_last_code = "<C-k>",
scroll_up = "<C-u>",
scroll_down = "<C-d>",
new_session = "<C-l>",
cycle_windows = "<Tab>",
cycle_modes = "<C-f>",
next_message = "<C-j>",
prev_message = "<C-k>",
select_session = "<Space>",
rename_session = "r",
delete_session = "d",
draft_message = "<C-r>",
edit_message = "e",
delete_message = "d",
toggle_settings = "<C-o>",
toggle_sessions = "<C-p>",
toggle_help = "<C-h>",
toggle_message_role = "<C-r>",
toggle_system_role_open = "<C-s>",
stop_generating = "<C-x>",
},
})
+1
View File
@@ -0,0 +1 @@
require("tiny-inline-diagnostic").setup({})
+29
View File
@@ -0,0 +1,29 @@
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require "ibl.hooks"
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
vim.g.rainbow_delimiters = { highlight = highlight }
require("ibl").setup {
indent = { char = "" },
scope = { highlight = highlight },
}
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
@@ -1,46 +1,36 @@
local cmp = require("cmp") local cmp = require "cmp"
local cmp_lsp = require("cmp_nvim_lsp") local cmp_lsp = require "cmp_nvim_lsp"
local cmp_kinds = require("assets.icons").icons.kinds
local function flatten_to_array(t)
local res = {}
local function _flatten(tbl)
for _, v in ipairs(tbl) do
if type(v) == "table" then
_flatten(v)
else
table.insert(res, v)
end
end
end
_flatten(t)
return res
end
local capabilities = vim.tbl_deep_extend( local capabilities = vim.tbl_deep_extend(
"force", "force",
{}, {},
vim.lsp.protocol.make_client_capabilities(), vim.lsp.protocol.make_client_capabilities(),
cmp_lsp.default_capabilities() cmp_lsp.default_capabilities()
) )
local cmp_kinds = { require("fidget").setup {}
Text = '',
Method = '',
Function = '',
Constructor = '',
Field = '',
Variable = '',
Class = '',
Interface = '',
Module = '',
Property = '',
Unit = '',
Value = '',
Enum = '',
Keyword = '',
Snippet = '',
Color = '',
File = '',
Reference = '',
Folder = '',
EnumMember = '',
Constant = '',
Struct = '',
Event = '',
Operator = '',
TypeParameter = '',
}
require("fidget").setup({})
require("mason").setup() require("mason").setup()
require("mason-lspconfig").setup({ require("mason-lspconfig").setup {
automatic_enable = true, automatic_enable = true,
ensure_installed = { ensure_installed = {
"lua_ls", "lua_ls",
"qmlls",
"rust_analyzer", "rust_analyzer",
"gopls", "gopls",
}, },
@@ -52,24 +42,28 @@ require("mason-lspconfig").setup({
end, end,
["tailwindcss"] = function() ["tailwindcss"] = function()
local lspconfig = require("lspconfig") local lspconfig = require "lspconfig"
lspconfig.tailwindcss.setup { lspconfig.tailwindcss.setup {
capabilities = capabilities, capabilities = capabilities,
} }
end, end,
["css-lsp"] = function() ["css-lsp"] = function()
local lspconfig = require("lspconfig") local lspconfig = require "lspconfig"
lspconfig.cssls.setup { lspconfig.cssls.setup {
capabilities = capabilities, capabilities = capabilities,
} }
end, end,
zls = function() zls = function()
local lspconfig = require("lspconfig") local lspconfig = require "lspconfig"
lspconfig.zls.setup({ lspconfig.zls.setup {
capabilities = capabilities, capabilities = capabilities,
root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"), root_dir = lspconfig.util.root_pattern(
".git",
"build.zig",
"zls.json"
),
settings = { settings = {
zls = { zls = {
enable_inlay_hints = true, enable_inlay_hints = true,
@@ -77,34 +71,40 @@ require("mason-lspconfig").setup({
warn_style = true, warn_style = true,
}, },
}, },
}) }
vim.g.zig_fmt_parse_errors = 0 vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0 vim.g.zig_fmt_autosave = 0
end, end,
["lua_ls"] = function() ["lua_ls"] = function()
local lspconfig = require("lspconfig") local lspconfig = require "lspconfig"
lspconfig.lua_ls.setup { lspconfig.lua_ls.setup {
capabilities = capabilities, capabilities = capabilities,
settings = { settings = {
Lua = { Lua = {
runtime = { version = "Lua 5.1" }, runtime = { version = "Lua 5.1" },
diagnostics = { diagnostics = {
globals = { "bit", "vim", "it", "describe", "before_each", "after_each" }, globals = {
} "bit",
} "vim",
} "it",
"describe",
"before_each",
"after_each",
},
},
},
},
} }
end, end,
} },
}) }
cmp.setup { cmp.setup {
preselect = 'None', preselect = "None",
formatting = { formatting = {
fields = { 'kind', 'abbr' }, fields = { "kind", "abbr" },
format = function(entry, vim_item) format = function(entry, vim_item)
vim_item.kind = cmp_kinds[vim_item.kind] or '' vim_item.kind = cmp_kinds[vim_item.kind] or ""
if entry.completion_item.detail then if entry.completion_item.detail then
vim_item.menu = entry.completion_item.detail vim_item.menu = entry.completion_item.detail
end end
@@ -118,6 +118,15 @@ cmp.setup {
end, end,
}, },
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
view = {
entries = "custom",
},
mapping = { mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(), ["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(), ["<C-n>"] = cmp.mapping.select_next_item(),
@@ -149,17 +158,17 @@ cmp.setup {
end, { "i", "s" }), end, { "i", "s" }),
}, },
sources = cmp.config.sources({ sources = cmp.config.sources {
{ name = "path" }, { name = "path" },
{ name = "nvim_lsp" }, { name = "nvim_lsp" },
{ name = "luasnip" }, { name = "luasnip" },
{ name = "buffer" }, { name = "buffer" },
{ name = "nvim_lua" }, { name = "nvim_lua" },
}), { name = "copilot" },
},
} }
vim.diagnostic.config({ vim.diagnostic.config {
-- update_in_insert = true,
virtual_text = false, virtual_text = false,
virtual_lines = false, virtual_lines = false,
signs = true, signs = true,
@@ -172,20 +181,32 @@ vim.diagnostic.config({
header = "", header = "",
prefix = "", prefix = "",
}, },
}) }
local lspconfig = vim.lsp.config local lspconfig = vim.lsp.config
lspconfig("texlab", { lspconfig("texlab", {
cmd = { "texlab" }, cmd = { "texlab" },
filetypes = { "tex", "bib", "plaintex" }, filetypes = { "tex", "bib", "plaintex" },
root_markers = { ".git", ".latexmkrc", "latexmkrc", ".texlabroot", "texlabroot", "Tectonic.toml" }, root_markers = {
".git",
".latexmkrc",
"latexmkrc",
".texlabroot",
"texlabroot",
"Tectonic.toml",
},
settings = { settings = {
texlab = { texlab = {
rootDirectory = nil, rootDirectory = nil,
build = { build = {
executable = "latexmk", executable = "latexmk",
args = { "-pdf", "-interaction=nonstopmode", "-synctex=1", "%f" }, args = {
"-pdf",
"-interaction=nonstopmode",
"-synctex=1",
"%f",
},
onSave = true, onSave = true,
forwardSearchAfter = true, forwardSearchAfter = true,
}, },
@@ -193,7 +214,8 @@ lspconfig("texlab", {
executable = "zathura", executable = "zathura",
args = { args = {
"--synctex-editor-command", "--synctex-editor-command",
[[ nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]] .. vim.v.servername, [[ nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]]
.. vim.v.servername,
"--synctex-forward", "--synctex-forward",
"%l:1:%f", "%l:1:%f",
"%p", "%p",
@@ -206,7 +228,7 @@ lspconfig("texlab", {
diagnosticsDelay = 300, diagnosticsDelay = 300,
latexFormatter = "latexindent", latexFormatter = "latexindent",
latexindent = { latexindent = {
['local'] = nil, ["local"] = nil,
modifyLineBreaks = false, modifyLineBreaks = false,
}, },
bibtexFormatter = "texlab", bibtexFormatter = "texlab",
@@ -216,7 +238,30 @@ lspconfig("texlab", {
}) })
lspconfig("qmlls", { lspconfig("qmlls", {
cmd = { "qmlls6" }, cmd = { "qmlls6", "qmlls" },
filetypes = { "qml", "qmljs" },
root_markers = { ".git" },
})
lspconfig("jsonls", {
settings = {
json = {
schemas = require("schemastore").json.schemas(),
validate = { enable = true },
},
},
})
lspconfig("yamlls", {
settings = {
yaml = {
schemaStore = {
enable = false,
url = "",
},
schemas = require("schemastore").yaml.schemas(),
},
},
}) })
local lspenable = vim.lsp.enable local lspenable = vim.lsp.enable
@@ -229,8 +274,25 @@ local servers = {
"sourcekit", "sourcekit",
"qmlls", "qmlls",
"tailwindcss", "tailwindcss",
"systemd-lsp",
require("mason-lspconfig").get_installed_servers(),
} }
for _, server in ipairs(servers) do local flat_servers = flatten_to_array(servers)
for _, server in ipairs(flat_servers) do
lspconfig(server, {
on_attach = function(client, bufnr)
if client.name == "typos_lsp" or client.name == "copilot" then
return
end
require("workspace-diagnostics").populate_workspace_diagnostics(
client,
bufnr
)
end,
capabilities = capabilities,
})
lspenable(server) lspenable(server)
end end
+55
View File
@@ -0,0 +1,55 @@
local opts = {}
opts = {
file_types = { "markdown" },
completions = {
lsp = {
enabled = true,
},
},
render_modes = true,
anti_conceal = {
enabled = true,
above = 1,
below = 1,
},
code = {
enabled = true,
render_modes = false,
sign = true,
conceal_delimiters = true,
language = true,
position = "left",
language_icon = true,
language_name = true,
language_info = true,
language_pad = 0,
width = "full",
left_margin = 0,
left_pad = 2,
right_pad = 0,
min_width = 40,
border = "thick",
language_border = "",
language_left = "",
language_right = "",
above = "",
below = "",
inline = true,
inline_left = "",
inline_right = "",
inline_pad = 0,
priority = 140,
highlight = "RenderMarkdownCode",
highlight_info = "RenderMarkdownCodeInfo",
highlight_language = nil,
highlight_border = "RenderMarkdownCodeBorder",
highlight_fallback = "RenderMarkdownCodeFallback",
highlight_inline = "RenderMarkdownCodeInline",
style = "full",
},
}
return opts
+19
View File
@@ -0,0 +1,19 @@
local M = {}
M.plugin = {
"sbdchd/neoformat",
config = function()
vim.g.neoformat_enabled_lua = { "luaformatter" }
vim.g.neoformat_enabled_python = { "black" }
vim.g.neoformat_enabled_javascript = { "prettier" }
vim.g.neoformat_enabled_typescript = { "prettier" }
vim.g.neoformat_enabled_qml = { "qmlformat" }
vim.g.neoformat_enabled_go = { "gofmt" }
vim.g.neoformat_enabled_sh = { "shfmt" }
vim.g.neoformat_enabled_bash = { "shfmt" }
vim.g.neoformat_enabled_zsh = { "shfmt" }
vim.g.neoformat_enabled_powershell = { "pwshfmt" } -- experimental
end,
}
return M
+19
View File
@@ -0,0 +1,19 @@
local prettier = require("prettier")
prettier.setup({
bin = 'prettier',
filetypes = {
"css",
"graphql",
"html",
"javascript",
"javascriptreact",
"json",
"less",
"markdown",
"scss",
"typescript",
"typescriptreact",
"yaml",
},
})
+51
View File
@@ -0,0 +1,51 @@
local icons = require("assets.icons").icons
require('gitsigns').setup {
signs = {
add = { text = icons.git.added },
change = { text = icons.git.modified },
delete = { text = icons.git.removed },
topdelete = { text = icons.git.removed },
changedelete = { text = icons.git.modified },
untracked = { text = '' },
},
signs_staged = {
add = { text = icons.git.added },
change = { text = icons.git.modified },
delete = { text = icons.git.removed },
topdelete = { text = icons.git.removed },
changedelete = { text = icons.git.modified },
untracked = { text = '' },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
virt_text_priority = 100,
use_focus = true,
},
current_line_blame_formatter = '<author>, <author_time:%R> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1
},
}
-29
View File
@@ -1,29 +0,0 @@
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require "ibl.hooks"
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
vim.g.rainbow_delimiters = { highlight = highlight }
require("ibl").setup {
indent = { char = "" },
scope = { highlight = highlight }
}
hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark)
+1 -1
View File
@@ -62,7 +62,7 @@ return {
scope = { enabled = true }, scope = { enabled = true },
scroll = { enabled = true }, scroll = { enabled = true },
statuscolumn = { enabled = true }, statuscolumn = { enabled = true },
words = { enabled = true }, words = { enabled = false },
terminal = { terminal = {
enabled = true, enabled = true,
win = { style = "terminal" }, win = { style = "terminal" },
+11
View File
@@ -0,0 +1,11 @@
require("zterm-navigator").setup({
-- Default keybindings (set to false to disable)
left = "<A-Left>",
right = "<A-Right>",
up = "<A-Up>",
down = "<A-Down>",
statusline = {
enabled = false
},
})
@@ -1,5 +1,7 @@
local fn = vim.fn local fn = vim.fn
local icons = require("assets.icons").icons
local get_active_lsp = function() local get_active_lsp = function()
local msg = "" local msg = ""
local buf_ft = vim.api.nvim_get_option_value("filetype", {}) local buf_ft = vim.api.nvim_get_option_value("filetype", {})
@@ -20,7 +22,7 @@ end
local function spell() local function spell()
if vim.o.spell then if vim.o.spell then
return string.format("[SPELL]") return string.format "[SPELL]"
end end
return "" return ""
@@ -29,7 +31,8 @@ end
--- show indicator for Chinese IME --- show indicator for Chinese IME
local function ime_state() local function ime_state()
if vim.g.is_mac then if vim.g.is_mac then
local layout = fn.libcall(vim.g.XkbSwitchLib, "Xkb_Switch_getXkbLayout", "") local layout =
fn.libcall(vim.g.XkbSwitchLib, "Xkb_Switch_getXkbLayout", "")
local res = fn.match(layout, [[\v(Squirrel\.Rime|SCIM.ITABC)]]) local res = fn.match(layout, [[\v(Squirrel\.Rime|SCIM.ITABC)]])
if res ~= -1 then if res ~= -1 then
return "[CN]" return "[CN]"
@@ -40,18 +43,14 @@ local function ime_state()
end end
local diff = function() local diff = function()
local git_status = vim.b.gitsigns_status_dict local gitsigns = vim.b.gitsigns_status_dict
if git_status == nil then if gitsigns then
return return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed,
}
end end
local modify_num = git_status.changed
local remove_num = git_status.removed
local add_num = git_status.added
local info = { added = add_num, modified = modify_num, removed = remove_num }
-- vim.print(info)
return info
end end
local virtual_env = function() local virtual_env = function()
@@ -60,8 +59,8 @@ local virtual_env = function()
return "" return ""
end end
local conda_env = os.getenv("CONDA_DEFAULT_ENV") local conda_env = os.getenv "CONDA_DEFAULT_ENV"
local venv_path = os.getenv("VIRTUAL_ENV") local venv_path = os.getenv "VIRTUAL_ENV"
if venv_path == nil then if venv_path == nil then
if conda_env == nil then if conda_env == nil then
@@ -75,14 +74,22 @@ local virtual_env = function()
end end
end end
local lint_progress = function()
local linters = require("lint").get_running()
if #linters == 0 then
return ""
end
return table.concat(linters, ", ")
end
require("lualine").setup { require("lualine").setup {
laststatus = 0, laststatus = 0,
options = { options = {
icons_enabled = true, icons_enabled = true,
theme = "auto", theme = "zshell",
globalstatus = true, globalstatus = true,
component_separators = '', component_separators = "",
section_separators = { left = '', right = '' }, section_separators = { left = "", right = "" },
disabled_filetypes = {}, disabled_filetypes = {},
always_divide_middle = true, always_divide_middle = true,
}, },
@@ -111,11 +118,16 @@ require("lualine").setup {
{ {
"filename", "filename",
symbols = { symbols = {
readonly = "[󰌾]", readonly = "[ 󰌾 ]",
}, },
}, },
{ {
"diff", "diff",
symbols = {
added = icons.git.added,
modified = icons.git.modified,
removed = icons.git.removed,
},
source = diff, source = diff,
}, },
{ {
@@ -132,14 +144,23 @@ require("lualine").setup {
ime_state, ime_state,
color = { fg = "black", bg = "#f46868" }, color = { fg = "black", bg = "#f46868" },
}, },
{
lint_progress,
icon = "󱉶 ",
},
{ {
get_active_lsp, get_active_lsp,
icon = "LSP:", icon = "",
}, },
{ {
"diagnostics", "diagnostics",
sources = { "nvim_diagnostic" }, sources = { "nvim_diagnostic" },
symbols = { error = "", warn = "", info = "", hint = "" }, symbols = {
error = icons.diagnostics.Error,
warn = icons.diagnostics.Warn,
info = icons.diagnostics.Info,
hint = icons.diagnostics.Hint,
},
}, },
}, },
lualine_y = { lualine_y = {
@@ -155,7 +176,9 @@ require("lualine").setup {
"filetype", "filetype",
}, },
lualine_z = { lualine_z = {
"progress", {
"location",
},
}, },
}, },
inactive_sections = { inactive_sections = {
+13 -13
View File
@@ -1,13 +1,13 @@
require'nvim-treesitter.configs'.setup { local treesitter = require "nvim-treesitter"
ensure_installed = "all",
ignore_install = { "ipkg" }, treesitter.install { "all" }
sync_install = true,
auto_install = true, local parsers = treesitter.get_installed()
highlight = {
enable = true, vim.api.nvim_create_autocmd("FileType", {
additional_vim_regex_highlighting = false, pattern = parsers,
}, callback = function()
indent = { vim.treesitter.start()
enable = true, vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
}, end,
} })
+4 -5
View File
@@ -2,12 +2,11 @@ vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1 vim.g.loaded_netrwPlugin = 1
vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/" vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/"
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.gruvbox_material_background = "medium"
vim.g.coq_settings = { keymap = { recommended = false } } vim.g.coq_settings = { keymap = { recommended = false } }
vim.g.gruvbox_material_foreground = "original"
vim.g.zig_fmt_parse_errors = 0 vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0 vim.g.zig_fmt_autosave = 0
vim.api.nvim_set_hl(0, 'GitGutterAdd', { fg = '#009900', ctermfg = 2 }) vim.api.nvim_set_hl(0, "GitGutterAdd", { fg = "#009900", ctermfg = 2 })
vim.api.nvim_set_hl(0, 'GitGutterChange', { fg = '#bbbb00', ctermfg = 3 }) vim.api.nvim_set_hl(0, "GitGutterChange", { fg = "#bbbb00", ctermfg = 3 })
vim.api.nvim_set_hl(0, 'GitGutterDelete', { fg = '#ff2222', ctermfg = 1 }) vim.api.nvim_set_hl(0, "GitGutterDelete", { fg = "#ff2222", ctermfg = 1 })
vim.api.nvim_set_hl(1, "CmpItemKindCopilot", { fg = "#6CC644" })
+27 -53
View File
@@ -1,79 +1,53 @@
local map = vim.keymap.set local map = vim.keymap.set
-- Base nvim mappings, you need this.
map("n", "<Tab>", "<Cmd>BufferLineCycleNext<CR>") map("n", "<Tab>", "<Cmd>BufferLineCycleNext<CR>")
map("n", "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>") map("n", "<S-Tab>", "<Cmd>BufferLineCyclePrev<CR>")
map({"n", "v"}, "<leader>ap", require("actions-preview").code_actions)
map("n", ";", ":", { desc = "CMD enter command mode" }) map("n", ";", ":", { desc = "CMD enter command mode" })
-- Move selected text up
map("v", "<C-Up>", ":m '<-2<CR>gv=gv", { desc = "Move selected text up" }) map("v", "<C-Up>", ":m '<-2<CR>gv=gv", { desc = "Move selected text up" })
map("v", "<C-Down>", ":m '>+1<CR>gv=gv", { desc = "Move selected text down" }) map("v", "<C-Down>", ":m '>+1<CR>gv=gv", { desc = "Move selected text down" })
map("n", "<C-a>", "ggVG", { noremap = true, silent = true })
-- Alt + Arrow Key to change buffer map("n", "<C-j>", "<C-d>zz")
-- map("n", "<A-Left>", "<C-w>h", { desc = "Move to left split" }) map("n", "<C-k>", "<C-u>zz")
-- map("n", "<A-Down>", "<C-w>j", { desc = "Move to bottom split" }) map("n", "<A-->", ":bdelete<CR>")
-- map("n", "<A-Up>", "<C-w>k", { desc = "Move to top split" }) -- map("n", "<SA-->", ":BufferRestore<CR>")
-- map("n", "<A-Right>", "<C-w>l", { desc = "Move to right split" }) map('n', '<leader>e', function() Snacks.explorer() end)
map('n', '<leader>u', require('undotree').toggle, { noremap = true, silent = true })
map("n", "<A-Left>", "<cmd>lua require('tmux').move_left()<CR>", { desc = "Move to left split" }) map("n", "<leader>g", require("telescope.builtin").live_grep, {desc = "Telescope grep" })
map("n", "<A-Down>", "<cmd>lua require('tmux').move_bottom()<CR>", { desc = "Move to bottom split" }) map("n", "<leader>f", require("telescope.builtin").find_files, {desc = "Telescope find files" })
map("n", "<A-Up>", "<cmd>lua require('tmux').move_top()<CR>", { desc = "Move to top split" })
map("n", "<A-Right>", "<cmd>lua require('tmux').move_right()<CR>", { desc = "Move to right split" })
map("n", "<C-Left>", "<cmd>lua require('tmux').resize_left()<CR>", { desc = "Move to left split" })
map("n", "<C-Down>", "<cmd>lua require('tmux').resize_bottom()<CR>", { desc = "Move to bottom split" })
map("n", "<C-Up>", "<cmd>lua require('tmux').resize_top()<CR>", { desc = "Move to top split" })
map("n", "<C-Right>", "<cmd>lua require('tmux').resize_right()<CR>", { desc = "Move to right split" })
-- Copilot Chat buffer -- Copilot Chat buffer
map("n", "<A-c>", vim.cmd.CopilotChatToggle) map("n", "<A-c>", vim.cmd.CopilotChatToggle)
map("i", "<A-c>", vim.cmd.CopilotChatToggle) map("i", "<A-c>", vim.cmd.CopilotChatToggle)
map("v", "<A-c>", vim.cmd.CopilotChatToggle) map("v", "<A-c>", vim.cmd.CopilotChatToggle)
-- Explorer and Undotree -- LSP Restart
map('n', '<leader>e', function() Snacks.explorer() end)
map('n', '<leader>u', require('undotree').toggle, { noremap = true, silent = true })
-- Telescope grep
map("n", "<leader>g", require("telescope.builtin").live_grep, {desc = "Telescope grep" })
map("n", "<leader>f", require("telescope.builtin").find_files, {desc = "Telescope find files" })
map("n", "<A-->", ":bdelete<CR>")
-- map("n", "<SA-->", ":BufferRestore<CR>")
map("n", "<C-a>", "ggVG", { noremap = true, silent = true })
map("n", "J", "mzJ`z")
map("n", "<C-d>", "<C-d>zz")
map("n", "<C-u>", "<C-u>zz")
map("n", "n", "nzzzv")
map("n", "N", "Nzzzv")
map("n", "<leader>zig", "<cmd>LspRestart<cr>") map("n", "<leader>zig", "<cmd>LspRestart<cr>")
-- greatest remap ever -- Why?
map("x", "<leader>p", [["_dP]]) map("x", "<leader>p", [["_dP]])
-- next greatest remap ever : asbjornHaland
map({"n", "v"}, "<leader>y", [["+y]]) map({"n", "v"}, "<leader>y", [["+y]])
map("n", "<leader>Y", [["+Y]])
map({"n", "v"}, "<leader>d", "\"_d") map({"n", "v"}, "<leader>d", "\"_d")
-- This is going to get me cancelled
map("i", "<C-c>", "<Esc>")
map("n", "<leader>mr", "<cmd>CellularAutomaton make_it_rain<CR>"); map("n", "<leader>mr", "<cmd>CellularAutomaton make_it_rain<CR>");
map("n", "<leader><leader>", function() map("n", "<leader><leader>", function()
vim.cmd("so") vim.cmd("so")
end) end)
-- Greatest remap
map("n", "<leader>Y", [["+Y]])
map("n", "<A-q>", function() Snacks.terminal.toggle() end, { desc = "Toggle Terminal" })
map("n", "<leader>gb", function() Snacks.gitbrowse.open() end )
map("n", "K", require("pretty_hover").hover)
-- Might delete later
map("n", "<leader>fm", "<cmd>TailwindConcealToggle<CR>", { desc = "Toggle Tailwind Conceal" })
map("n", "<A-v>", "<cmd>ChatGPT<CR>") map("n", "<A-v>", "<cmd>ChatGPT<CR>")
map("n", "<leader>fm", "<cmd>TailwindConcealToggle<CR>", { desc = "Toggle Tailwind Conceal" }) -- Notif history
map("n", "<leader>n", function()
Snacks.notifier.show_history()
end)
-- Terminal -- Actions Previewer
map("n", "<C-q>", function() Snacks.terminal.toggle() end, { desc = "Toggle Terminal" }) map({ "n", "v" }, "<leader>ap", require("actions-preview").code_actions)
-- Gitbrowse
map("n", "<leader>gb", function() Snacks.gitbrowse.open() end )
+2 -3
View File
@@ -3,7 +3,7 @@ vim.opt.relativenumber = true
vim.opt.tabstop = 4 vim.opt.tabstop = 4
vim.opt.softtabstop = 4 vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4 vim.opt.shiftwidth = 4
vim.opt.expandtab = false vim.opt.expandtab = true
vim.opt.smartindent = false vim.opt.smartindent = false
vim.o.list = true vim.o.list = true
@@ -13,7 +13,7 @@ vim.opt.wrap = true
vim.opt.linebreak = true vim.opt.linebreak = true
vim.opt.swapfile = false vim.opt.swapfile = false
vim.opt.backup = false vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir" vim.opt.undodir = vim.fn.stdpath('data') .. '/undodir'
vim.opt.undofile = true vim.opt.undofile = true
vim.opt.hlsearch = false vim.opt.hlsearch = false
vim.opt.incsearch = true vim.opt.incsearch = true
@@ -54,5 +54,4 @@ vim.env.PATH = table.concat({ vim.fn.stdpath "data", "mason", "bin" }, sep) .. d
vim.api.nvim_set_hl( 0, "Cursor", { reverse = true }) vim.api.nvim_set_hl( 0, "Cursor", { reverse = true })
-- vim-tpipeline
vim.g.tpipeline_restore = 1 vim.g.tpipeline_restore = 1
+12
View File
@@ -0,0 +1,12 @@
return {
{
"MeanderingProgrammer/render-markdown.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-mini/mini.nvim",
},
---@module 'render-markdown'
---@type render.md.UserConfig
opts = require "config.format.markdown",
},
}
+8
View File
@@ -0,0 +1,8 @@
return {
{
"lewis6991/gitsigns.nvim",
config = function()
require("config.gitsigns")
end
}
}
+221
View File
@@ -0,0 +1,221 @@
return {
"y3owk1n/undo-glow.nvim",
version = "*",
opts = {
animation = {
enabled = true,
duration = 300,
animation_type = "fade",
window_scoped = true,
},
highlights = {
undo = {
hl_color = { bg = "#693232" }, -- Dark muted red
},
redo = {
hl_color = { bg = "#2F4640" }, -- Dark muted green
},
yank = {
hl_color = { bg = "#7A683A" }, -- Dark muted yellow
},
paste = {
hl_color = { bg = "#325B5B" }, -- Dark muted cyan
},
search = {
hl_color = { bg = "#5C475C" }, -- Dark muted purple
},
comment = {
hl_color = { bg = "#7A5A3D" }, -- Dark muted orange
},
cursor = {
hl_color = { bg = "#793D54" }, -- Dark muted pink
},
},
priority = 2048 * 3,
},
keys = {
{
"u",
function()
require("undo-glow").undo()
end,
mode = "n",
desc = "Undo with highlight",
noremap = true,
},
{
"U",
function()
require("undo-glow").redo()
end,
mode = "n",
desc = "Redo with highlight",
noremap = true,
},
{
"p",
function()
require("undo-glow").paste_below()
end,
mode = "n",
desc = "Paste below with highlight",
noremap = true,
},
{
"P",
function()
require("undo-glow").paste_above()
end,
mode = "n",
desc = "Paste above with highlight",
noremap = true,
},
{
"n",
function()
require("undo-glow").search_next {
animation = {
animation_type = "strobe",
},
}
end,
mode = "n",
desc = "Search next with highlight",
noremap = true,
},
{
"N",
function()
require("undo-glow").search_prev {
animation = {
animation_type = "strobe",
},
}
end,
mode = "n",
desc = "Search prev with highlight",
noremap = true,
},
{
"*",
function()
require("undo-glow").search_star {
animation = {
animation_type = "strobe",
},
}
end,
mode = "n",
desc = "Search star with highlight",
noremap = true,
},
{
"#",
function()
require("undo-glow").search_hash {
animation = {
animation_type = "strobe",
},
}
end,
mode = "n",
desc = "Search hash with highlight",
noremap = true,
},
{
"gc",
function()
-- This is an implementation to preserve the cursor position
local pos = vim.fn.getpos "."
vim.schedule(function()
vim.fn.setpos(".", pos)
end)
return require("undo-glow").comment()
end,
mode = { "n", "x" },
desc = "Toggle comment with highlight",
expr = true,
noremap = true,
},
{
"gc",
function()
require("undo-glow").comment_textobject()
end,
mode = "o",
desc = "Comment textobject with highlight",
noremap = true,
},
{
"gcc",
function()
return require("undo-glow").comment_line()
end,
mode = "n",
desc = "Toggle comment line with highlight",
expr = true,
noremap = true,
},
},
init = function()
vim.api.nvim_create_autocmd("TextYankPost", {
desc = "Highlight when yanking (copying) text",
callback = function()
require("undo-glow").yank()
end,
})
-- This only handles neovim instance and do not highlight when switching panes in tmux
vim.api.nvim_create_autocmd("CursorMoved", {
desc = "Highlight when cursor moved significantly",
callback = function()
require("undo-glow").cursor_moved {
animation = {
animation_type = "slide",
},
}
end,
})
-- This will handle highlights when focus gained, including switching panes in tmux
vim.api.nvim_create_autocmd("FocusGained", {
desc = "Highlight when focus gained",
callback = function()
---@type UndoGlow.CommandOpts
local opts = {
animation = {
animation_type = "slide",
},
}
opts = require("undo-glow.utils").merge_command_opts(
"UgCursor",
opts
)
local pos = require("undo-glow.utils").get_current_cursor_row()
require("undo-glow").highlight_region(
vim.tbl_extend("force", opts, {
s_row = pos.s_row,
s_col = pos.s_col,
e_row = pos.e_row,
e_col = pos.e_col,
force_edge = opts.force_edge == nil and true
or opts.force_edge,
})
)
end,
})
vim.api.nvim_create_autocmd("CmdlineLeave", {
desc = "Highlight when search cmdline leave",
callback = function()
require("undo-glow").search_cmd {
animation = {
animation_type = "fade",
},
}
end,
})
end,
}
+71 -93
View File
@@ -1,4 +1,7 @@
return { return {
{
require("config.snacks")
},
{ {
"nvim-mini/mini.nvim", "nvim-mini/mini.nvim",
version = false, version = false,
@@ -9,8 +12,11 @@ return {
}, },
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
lazy = false,
build = ":TSUpdate",
branch = "main",
config = function() config = function()
require("config.treesitter") require "config.treesitter"
end, end,
}, },
{ {
@@ -29,22 +35,6 @@ return {
require("config.autosession") require("config.autosession")
end, end,
}, },
{
"olimorris/onedarkpro.nvim",
priority = 1000,
config = function()
require("config.themelight")
end,
},
{
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
require("config.telescope")
end,
},
{ {
"lambdalisue/vim-suda", "lambdalisue/vim-suda",
init = function() init = function()
@@ -61,28 +51,11 @@ return {
require("config.barbar") require("config.barbar")
end, end,
}, },
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
config = function ()
if vim.env.TMUX then
vim.api.nvim_create_autocmd({ "FocusGained", "ColorScheme", "VimEnter" }, {
callback = function()
vim.defer_fn( function()
vim.opt.laststatus = 0
end, 100)
end,
})
vim.o.laststatus = 0
end
require("config.lualine")
end,
},
{ {
"mawkler/modicator.nvim", "mawkler/modicator.nvim",
config = function() config = function()
require("config.modicator") require("config.modicator")
end end,
}, },
{ {
"shinchu/lightline-gruvbox.vim", "shinchu/lightline-gruvbox.vim",
@@ -113,15 +86,20 @@ return {
require "config.notify" require "config.notify"
end, end,
}, },
{ {
"zbirenbaum/copilot.lua", "zbirenbaum/copilot.lua",
lazy = true,
cmd = "Copilot", cmd = "Copilot",
event = "InsertEnter", event = "InsertEnter",
config = function() config = function()
require "config.copilot" require "config.ai.copilot"
end, end,
}, },
{
"zbirenbaum/copilot-cmp",
config = function ()
require "config.ai.copilot_cmp"
end,
},
{ {
"CopilotC-Nvim/CopilotChat.nvim", "CopilotC-Nvim/CopilotChat.nvim",
dependencies = { dependencies = {
@@ -130,7 +108,7 @@ return {
}, },
build = "make tiktoken", build = "make tiktoken",
config = function() config = function()
require "config.copilotchat" require "config.ai.copilotchat"
end, end,
}, },
{ {
@@ -140,19 +118,13 @@ return {
end, end,
}, },
{ {
require("config.snacks") "mason-org/mason-lspconfig.nvim",
opts = {},
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
},
}, },
{
"notken12/base46-colors",
},
-- {
-- "mason-org/mason-lspconfig.nvim",
-- opts = {},
-- dependencies = {
-- { "mason-org/mason.nvim", opts = {} },
-- "neovim/nvim-lspconfig",
-- },
-- },
{ {
"folke/lazydev.nvim", "folke/lazydev.nvim",
ft = "lua", ft = "lua",
@@ -174,9 +146,11 @@ return {
"L3MON4D3/LuaSnip", "L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip", "saadparwaiz1/cmp_luasnip",
"j-hui/fidget.nvim", "j-hui/fidget.nvim",
"b0o/schemastore.nvim",
"saghen/blink.cmp",
}, },
config = function() config = function()
require("config.lspconfig") require("config.format.lspconfig")
end, end,
}, },
{ {
@@ -194,22 +168,6 @@ return {
{ {
"mfussenegger/nvim-jdtls", "mfussenegger/nvim-jdtls",
}, },
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
require("config.harpoon")
end,
},
{
"catgoose/nvim-colorizer.lua",
config = function()
require("config.colorizer")
end,
},
{ {
"ziglang/zig.vim", "ziglang/zig.vim",
}, },
@@ -223,7 +181,7 @@ return {
{ {
"f3fora/nvim-texlabconfig", "f3fora/nvim-texlabconfig",
config = function() config = function()
require("config.texlab") require("config.format.texlab")
end, end,
build = "go build", build = "go build",
}, },
@@ -242,7 +200,7 @@ return {
{ {
"ThePrimeagen/refactoring.nvim", "ThePrimeagen/refactoring.nvim",
config = function() config = function()
require("config.refactoring") require("config.format.refactoring")
end, end,
}, },
{ {
@@ -252,32 +210,52 @@ return {
vim.g.minimal_italic_functions = true vim.g.minimal_italic_functions = true
end, end,
}, },
{
"propet/colorscheme-persist.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
},
lazy = false,
config = true,
keys = {
{
"<leader>sp",
function()
require("colorscheme-persist").picker()
end,
mode = "n",
},
},
opts = {
picker_opts = require("telescope.themes").get_dropdown({
enable_preview = true,
}),
}
},
{ {
"aserowy/tmux.nvim", "aserowy/tmux.nvim",
config = function() config = function()
require("config.tmux") require("config.terminal.tmux")
end, end,
}, },
{
"rachartier/tiny-inline-diagnostic.nvim",
config = function ()
require("config.format.TID")
end,
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
require("config.harpoon")
end,
},
{
"aznhe21/actions-preview.nvim",
config = function()
require("config.actions-preview")
end,
},
{
"sbdchd/neoformat",
config = function()
require("config.format.neoformat")
end,
},
{
"Zacharias-Brohn/zterm-navigator.nvim",
config = function()
require("config.terminal.zterm-navigator")
end,
},
{
"Fildo7525/pretty_hover",
event = "LspAttach",
opts = {},
},
{
"artemave/workspace-diagnostics.nvim",
},
} }
+36
View File
@@ -0,0 +1,36 @@
return {
{
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
require("config.telescope")
end,
},
{
"propet/colorscheme-persist.nvim",
enable = false,
dependencies = {
"nvim-telescope/telescope.nvim",
},
lazy = false,
config = true,
keys = {
{
"<leader>sp",
function()
require("colorscheme-persist").picker()
end,
mode = "n",
},
},
opts = function() -- ✅ Changed to function
return {
picker_opts = require("telescope.themes").get_dropdown({
enable_preview = true,
}),
}
end,
},
}
+36
View File
@@ -0,0 +1,36 @@
return {
{
"notken12/base46-colors",
},
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
config = function ()
if vim.env.TMUX then
vim.api.nvim_create_autocmd({ "FocusGained", "ColorScheme", "VimEnter" }, {
callback = function()
vim.defer_fn( function()
vim.opt.laststatus = 0
end, 100)
end,
})
vim.o.laststatus = 0
end
require("config.theme.lualine")
end,
},
{
"catgoose/nvim-colorizer.lua",
config = function()
require("config.theme.colorizer")
end,
},
{
"olimorris/onedarkpro.nvim",
enabled = false,
priority = 1000,
config = function()
require("config.theme.onedarkpro-light")
end,
},
}
+91
View File
@@ -0,0 +1,91 @@
Write-Host "NVIM setup script for Windows" -ForegroundColor Green
Write-Host "Installing winget packages" -foregroundcolor cyan
$packages = @(
"Neovim.Neovim",
"MartinStorsjo.LLVM-MinGW.MSVCRT",
"zig.zig",
"GnuWin32.Make",
"Rustlang.Rust.MSVC",
"GoLang.Go",
"Kitware.Cmake",
"Ninja-build.Ninja",
"LuaLS.lua-language-server",
"GitHub.cli",
"GNU.Wget2",
"GnuWin32.UnZip",
"GnuWin32.Gzip",
"7zip.7zip"
)
for ($i = 0; $i -lt $packages.Count; $i++) {
$index = $i + 1
Write-Host ("{0,4}) {1}" -f $index, $packages[$i]) -foreground yellow
winget install $package
}
if ( !(Get-Command cargo -ErrorAction SilentlyContinue) ) {
Write-Host "Cargo is not installed. Please install Rust to proceed." -ForegroundColor Red
return
} else {
Write-Host "Installing cargo package treesitter-cli" -foregroundcolor cyan
cargo install --locked tree-sitter-cli
}
$list = @(
"Git.Git",
"ajeetdsouza.zoxide"
)
Write-Host "`nOptional packages to install:`n" -ForegroundColor Magenta
for ($i = 0; $i -lt $list.Count; $i++) {
$index = $i + 1
Write-Host "$index) $($list[$i])" -ForegroundColor Magenta
}
Write-Host "`nInstall all packages? [Y]es / [N]o / [E]dit list: " -ForegroundColor Green -NoNewLine
$answer = Read-Host
switch ($answer.ToLower()) {
"y" {
$selected = $list
}
"n" {
Write-Host "No packages will be installed." -ForegroundColor Red
return
}
"e" {
Write-Host "`nEnter numbers to EXCLUDE (space separated, e.g. 2 3): " -ForegroundColor Yellow -NoNewLine
$excludeInput = Read-Host
$excludeIndexes = $excludeInput -split "\s+" | ForEach-Object { [int]$_ - 1 }
$selected = @()
for ($i = 0; $i -lt $list.Count; $i++) {
if ($excludeIndexes -notcontains $i) {
$selected += $list[$i]
}
}
}
default {
Write-Host "Invalid option. Exiting." -ForegroundColor Red
return
}
}
if ($selected.Count -eq 0) {
Write-Host "Nothing to install." -ForegroundColor Red
return
}
Write-Host "`nInstalling selected packages:`n" -ForegroundColor Cyan
foreach ($module in $selected) {
Write-Host "Installing $module..." -ForegroundColor Yellow
winget install --id $module
}