Compare commits
37 Commits
lazy
...
c62cbcd80d
| Author | SHA1 | Date | |
|---|---|---|---|
| c62cbcd80d | |||
| b0e4d0b4be | |||
| 4717d2726c | |||
| f14f03bd88 | |||
| 1d563ec9d4 | |||
| 8de9de662f | |||
| 14edeb2713 | |||
| 92a6cfc071 | |||
| 89e118f1a1 | |||
| 670ecf53dd | |||
| 4c81d0b05b | |||
| a56b8f7029 | |||
|
|
50b8c88e92 | ||
|
|
9ce77dacc9 | ||
|
|
c9bcbf2327 | ||
|
|
e3762ced4e | ||
|
|
8b714fabfa | ||
|
|
9b831f0e3a | ||
|
|
f942ea2f91 | ||
|
|
b366437a6a | ||
|
|
fbbd0c5512 | ||
|
|
4f2c968b33 | ||
|
|
11763243dc | ||
| e777391307 | |||
|
|
9f6b6776c2 | ||
|
|
8c82f7cab4 | ||
|
|
4da8e11ada | ||
|
|
ac2447ac6e | ||
|
|
fd5401c9d7 | ||
|
|
1d2cd23307 | ||
|
|
40303719a2 | ||
|
|
b2f02b5c13 | ||
|
|
afcce108f7 | ||
|
|
46edb66356 | ||
|
|
cc9fc11a62 | ||
|
|
a4e6919899 | ||
| 4fc013a680 |
19
.luarc.json
Normal file
19
.luarc.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"workspace.library": [
|
||||||
|
"/Users/fschmidt/.config/nvim",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/lazy.nvim",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/cmp-nvim-lsp",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/nvim-lspconfig",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/mason.nvim",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/mason-lspconfig.nvim",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/nvim-web-devicons",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/nvim-tree.lua",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/null-ls.nvim",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/lualine.nvim",
|
||||||
|
"/usr/local/Cellar/neovim/0.8.3/share/nvim/runtime",
|
||||||
|
"/usr/local/Cellar/neovim/0.8.3/lib/nvim",
|
||||||
|
"/Users/fschmidt/.local/state/nvim/lazy/readme",
|
||||||
|
"/Users/fschmidt/.local/share/nvim/lazy/cmp-nvim-lsp/after",
|
||||||
|
"${3rd}/luassert/library"
|
||||||
|
]
|
||||||
|
}
|
||||||
9
after/ftplugin/rust.lua
Normal file
9
after/ftplugin/rust.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do
|
||||||
|
local default_diagnostic_handler = vim.lsp.handlers[method]
|
||||||
|
vim.lsp.handlers[method] = function(err, result, context, config)
|
||||||
|
if err ~= nil and err.code == -32802 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return default_diagnostic_handler(err, result, context, config)
|
||||||
|
end
|
||||||
|
end
|
||||||
21
init.lua
21
init.lua
@@ -13,11 +13,10 @@ end
|
|||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
require("lazy").setup("plugins")
|
require("lazy").setup("plugins")
|
||||||
require("maps").init()
|
|
||||||
require("commands")
|
require("commands")
|
||||||
|
|
||||||
vim.opt.backup = false
|
vim.opt.backup = false
|
||||||
vim.opt.undodir = '/Users/fschmidt/.cache/nvim/undodir'
|
vim.opt.undodir = os.getenv("HOME") .. '/.cache/nvim/undodir'
|
||||||
vim.opt.swapfile = false
|
vim.opt.swapfile = false
|
||||||
vim.opt.undofile = true
|
vim.opt.undofile = true
|
||||||
vim.opt.smartcase = true
|
vim.opt.smartcase = true
|
||||||
@@ -29,8 +28,17 @@ vim.opt.incsearch = true
|
|||||||
vim.opt.scrolloff = 12
|
vim.opt.scrolloff = 12
|
||||||
vim.opt.sidescrolloff = 8
|
vim.opt.sidescrolloff = 8
|
||||||
vim.opt.mouse = 'a'
|
vim.opt.mouse = 'a'
|
||||||
vim.opt.autochdir = true
|
vim.opt.autochdir = false
|
||||||
vim.opt.clipboard = 'unnamed,unnamedplus'
|
vim.opt.clipboard = 'unnamed,unnamedplus'
|
||||||
|
in_wsl = os.getenv('WSL_DISTRO_NAME') ~= nil
|
||||||
|
if in_wsl then
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = 'wsl clipboard',
|
||||||
|
copy = { ["+"] = { "clip.exe" }, ["*"] = { "clip.exe" } },
|
||||||
|
paste = { ["+"] = { "win32yank.exe" }, ["*"] = { "win32yank.exe" } },
|
||||||
|
cache_enabled = true
|
||||||
|
}
|
||||||
|
end
|
||||||
vim.opt.number = true
|
vim.opt.number = true
|
||||||
vim.opt.wrap = false
|
vim.opt.wrap = false
|
||||||
vim.opt.signcolumn = 'yes:2'
|
vim.opt.signcolumn = 'yes:2'
|
||||||
@@ -43,3 +51,10 @@ vim.opt.expandtab = false
|
|||||||
vim.opt.autoindent = true
|
vim.opt.autoindent = true
|
||||||
vim.opt.smartindent = true
|
vim.opt.smartindent = true
|
||||||
vim.opt.completeopt = { "menu", "menuone", "noselect" }
|
vim.opt.completeopt = { "menu", "menuone", "noselect" }
|
||||||
|
--vim.opt.foldmethod = "expr"
|
||||||
|
--vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
|
||||||
|
--vim.opt.foldtext = ""
|
||||||
|
--vim.opt.foldlevelstart = 1
|
||||||
|
--vim.opt.foldnestmax = 2
|
||||||
|
|
||||||
|
-- TODO replace config with opts in every plugin
|
||||||
|
|||||||
@@ -1,31 +1,41 @@
|
|||||||
{
|
{
|
||||||
"LuaSnip": { "branch": "master", "commit": "f7c845749aba6096f041a73a26ba64f3817bab99" },
|
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "52d6acabb79c8c0942f8873a0ca7848eb2159267" },
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "8fcc934a52af96120fe26358985c10c035984b53" },
|
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
|
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
|
||||||
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" },
|
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
|
||||||
"cmp-nvim-lua": { "branch": "main", "commit": "f3491638d123cfd2c8048aefaf66d246ff250ca6" },
|
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
"dashboard-nvim": { "branch": "master", "commit": "398ba8d9390c13c87a964cbca756319531fffdb7" },
|
"fidget.nvim": { "branch": "main", "commit": "b45d21d33d61ed9295308eb6571c0a5f0f7f3765" },
|
||||||
"fidget.nvim": { "branch": "main", "commit": "688b4fec4517650e29c3e63cfbb6e498b3112ba1" },
|
"gitsigns.nvim": { "branch": "main", "commit": "f780609807eca1f783a36a8a31c30a48fbe150c5" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "f388995990aba04cfdc7c3ab870c33e280601109" },
|
"kanagawa.nvim": { "branch": "master", "commit": "debe91547d7fb1eef34ce26a5106f277fbfdd109" },
|
||||||
"kanagawa.nvim": { "branch": "master", "commit": "4c8d48726621a7f3998c7ed35b2c2535abc22def" },
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "8077428e63feb0f3bf795d53b23ba1695b28ab0e" },
|
"lspkind-nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" },
|
||||||
"lspkind-nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
|
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
|
"lunar.nvim": { "branch": "master", "commit": "08bbc93b96ad698d22fc2aa01805786bcedc34b9" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "3f9c0ea157e88b08e2d11ec65002eeb6e421f0da" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "a1067cf84b4ff81b66d2bf4d01f4cbdb5de40bd0" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "63cff223169324a2e633954ac580c7c327182a97" },
|
"mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" },
|
||||||
"nvim-autopairs": { "branch": "master", "commit": "6a5faeabdbcc86cfbf1561ae430a451a72126e81" },
|
"minuet-ai.nvim": { "branch": "main", "commit": "2083b86ea01cb18dc9e7cb7a68f932ea06e999e8" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "7a3b1e76f74934b12fda82158237c6ad8bfd3d40" },
|
"mssql.nvim": { "branch": "main", "commit": "51bf5e8629c2f0153160e36afb57a3743b9b6fd9" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "62856b20751b748841b0f3ec5a10b1e2f6a6dbc9" },
|
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
|
||||||
"nvim-tree.lua": { "branch": "master", "commit": "9c97e6449b0b0269bd44e1fd4857184dfa57bb4c" },
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "b4d8b7e5a374b800838a13aa6829ac4d542c6f1c" },
|
"nvim-dap": { "branch": "master", "commit": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "4709a504d2cd2680fb511675e64ef2790d491d36" },
|
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
||||||
"playground": { "branch": "master", "commit": "4044b53c4d4fcd7a78eae20b8627f78ce7dc6f56" },
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "253d34830709d690f013daf2853a9d21ad7accab" },
|
"nvim-jdtls": { "branch": "master", "commit": "b69924ca90014fef485ee153571bdcbc1ece8c2e" },
|
||||||
"rust-tools.nvim": { "branch": "master", "commit": "71d2cf67b5ed120a0e31b2c8adb210dd2834242f" },
|
"nvim-lspconfig": { "branch": "master", "commit": "ef73a4f2a1ddf0439eb97b46de2aab265ddba1cd" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "c1a2af0af69e80e14e6b226d3957a064cd080805" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"vimwiki": { "branch": "dev", "commit": "fea8bee382b2051b0137fd2cacf0862823ee69b3" }
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
}
|
"nvim-treesitter-context": { "branch": "master", "commit": "41847d3dafb5004464708a3db06b14f12bde548a" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
|
"rustaceanvim": { "branch": "master", "commit": "047f9c9d8cd2861745eb9de6c1570ee0875aa795" },
|
||||||
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
|
"trouble.nvim": { "branch": "main", "commit": "f176232e7759c4f8abd923c21e3e5a5c76cd6837" },
|
||||||
|
"vimwiki": { "branch": "dev", "commit": "72792615e739d0eb54a9c8f7e0a46a6e2407c9e8" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,10 +1,54 @@
|
|||||||
-- commands.lua
|
-- commands.lua
|
||||||
|
|
||||||
vim.cmd 'autocmd! User GoyoEnter Limelight'
|
|
||||||
vim.cmd 'autocmd! User GoyoLeave Limelight!'
|
|
||||||
|
|
||||||
vim.cmd 'autocmd BufRead,BufNewFile *.wiki,*.md,*.tex set wrap'
|
vim.cmd 'autocmd BufRead,BufNewFile *.wiki,*.md,*.tex set wrap'
|
||||||
|
|
||||||
|
vim.cmd 'au BufRead,BufNewFile *.kdl set filetype=kdl'
|
||||||
|
|
||||||
vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
|
vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
|
||||||
|
|
||||||
vim.cmd 'command W :execute \':silent w !sudo tee % > /dev/null\' | :edit!'
|
-- I don't know why but whenever I accidentally type :W instead of :w, I slows down the ide and reverts all changes
|
||||||
|
-- It doesn't even save files with sudo...
|
||||||
|
-- vim.cmd 'command W :execute \':silent w !sudo tee % > /dev/null\' | :edit!'
|
||||||
|
|
||||||
|
-- Array of file names indicating root directory. Modify to your liking.
|
||||||
|
local root_names = { '.git', 'Makefile', 'justfile', 'CMakeLists.txt', 'maskfile.md' }
|
||||||
|
|
||||||
|
-- Cache to use for speed up (at cost of possibly outdated results)
|
||||||
|
local root_cache = {}
|
||||||
|
|
||||||
|
local set_root = function()
|
||||||
|
-- Get directory path to start search from
|
||||||
|
local path = vim.api.nvim_buf_get_name(0)
|
||||||
|
if path == '' then return end
|
||||||
|
path = vim.fs.dirname(path)
|
||||||
|
|
||||||
|
-- Try cache and resort to searching upward for root directory
|
||||||
|
local root = root_cache[path]
|
||||||
|
if root == nil then
|
||||||
|
local root_file = vim.fs.find(root_names, { path = path, upward = true })[1]
|
||||||
|
if root_file == nil then return end
|
||||||
|
root = vim.fs.dirname(root_file)
|
||||||
|
root_cache[path] = root
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Set current directory
|
||||||
|
vim.fn.chdir(root)
|
||||||
|
end
|
||||||
|
|
||||||
|
local root_augroup = vim.api.nvim_create_augroup('MyAutoRoot', {})
|
||||||
|
vim.api.nvim_create_autocmd('BufEnter', { group = root_augroup, callback = set_root })
|
||||||
|
|
||||||
|
local function set_makeprg()
|
||||||
|
local cwd = vim.fn.getcwd()
|
||||||
|
|
||||||
|
if vim.fn.filereadable(cwd .. '/justfile') == 1 then
|
||||||
|
vim.o.makeprg = 'just'
|
||||||
|
elseif vim.fn.filereadable(cwd .. '/Makefile') == 1 then
|
||||||
|
vim.o.makeprg = 'make'
|
||||||
|
elseif vim.fn.filereadable(cwd .. '/maskfile.md') == 1 then
|
||||||
|
vim.o.makeprg = 'mask'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local makeprg_augroup = vim.api.nvim_create_augroup('MyMakeprg', {})
|
||||||
|
vim.api.nvim_create_autocmd('BufEnter', { pattern = '*', group = makeprg_augroup, callback = set_makeprg, })
|
||||||
|
|||||||
59
lua/maps.lua
59
lua/maps.lua
@@ -1,59 +0,0 @@
|
|||||||
-- maps.lua
|
|
||||||
|
|
||||||
local maps = {}
|
|
||||||
|
|
||||||
local function map(mode, lhs, rhs, opts)
|
|
||||||
local options = { noremap = true }
|
|
||||||
if opts then options = vim.tbl_extend('force', options, opts) end
|
|
||||||
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.toggleGoyo()
|
|
||||||
map('n', '<C-g>', ':Goyo<Enter>', { noremap = false })
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.term()
|
|
||||||
-- Open and move to resized terminal
|
|
||||||
map('n', '<leader>t', '<C-w>s<C-w>j :terminal<CR>:res 5<CR>i', { noremap = false })
|
|
||||||
-- Enter normal mode in terminal
|
|
||||||
map('t', 'ß<C-N>', '<C-\\><C-N>')
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.telescope()
|
|
||||||
map('n', '<Leader>ff', '<cmd>lua require(\'telescope.builtin\').git_files()<CR>')
|
|
||||||
map('n', '<Leader>fg', '<cmd>lua require(\'telescope.builtin\').live_grep()<CR>')
|
|
||||||
map('n', '<Leader>fb', '<cmd>lua require(\'telescope.builtin\').buffers()<CR>')
|
|
||||||
map('n', '<Leader>fh', '<cmd>lua require(\'telescope.builtin\').help_tags()<CR>')
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.fixIndent()
|
|
||||||
map('v', '<', '<gv')
|
|
||||||
map('v', '>', '>gv')
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.moveByRow()
|
|
||||||
-- When text is wrapped, move by terminal rows, not lines, unles a count is provided
|
|
||||||
map('n', 'j', 'v:count == 0 ? \'gj\' : \'j\'', { silent = true, expr = true })
|
|
||||||
map('n', 'k', 'v:count == 0 ? \'gk\' : \'k\'', { silent = true, expr = true })
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.centeredSearch()
|
|
||||||
map('n', 'n', 'nzzzv')
|
|
||||||
map('n', 'N', 'Nzzzv')
|
|
||||||
end
|
|
||||||
|
|
||||||
function maps.init()
|
|
||||||
vim.g.mapleader = " "
|
|
||||||
|
|
||||||
map('n', '<leader>b', '<cmd>NvimTreeToggle<CR>')
|
|
||||||
map('n', '<leader>cc', '<cmd>Telescope colorscheme<CR>')
|
|
||||||
|
|
||||||
maps.toggleGoyo()
|
|
||||||
maps.term()
|
|
||||||
maps.telescope()
|
|
||||||
maps.fixIndent()
|
|
||||||
maps.moveByRow()
|
|
||||||
maps.centeredSearch()
|
|
||||||
end
|
|
||||||
|
|
||||||
return maps
|
|
||||||
44
lua/plugins/ai.lua
Normal file
44
lua/plugins/ai.lua
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
return {
|
||||||
|
-- I don't know if I use this wrong or what but opencode does not seem to work that well
|
||||||
|
-- {
|
||||||
|
-- 'NickvanDyke/opencode.nvim',
|
||||||
|
-- dependencies = { 'folke/snacks.nvim', },
|
||||||
|
-- ---@type opencode.Config
|
||||||
|
-- opts = {
|
||||||
|
-- port = 48291,
|
||||||
|
-- },
|
||||||
|
-- -- stylua: ignore
|
||||||
|
-- keys = {
|
||||||
|
-- { '<leader>ot', function() require('opencode').toggle({ port = 48291 }) end, desc = 'Toggle embedded opencode', },
|
||||||
|
-- { '<leader>oa', function() require('opencode').ask() end, desc = 'Ask opencode', mode = 'n', },
|
||||||
|
-- { '<leader>oa', function() require('opencode').ask('@selection: ') end, desc = 'Ask opencode about selection', mode = 'v', },
|
||||||
|
-- { '<leader>op', function() require('opencode').select_prompt() end, desc = 'Select prompt', mode = { 'n', 'v', }, },
|
||||||
|
-- { '<leader>on', function() require('opencode').command('session_new') end, desc = 'New session', },
|
||||||
|
-- { '<leader>oy', function() require('opencode').command('messages_copy') end, desc = 'Copy last message', },
|
||||||
|
-- { '<S-C-u>', function() require('opencode').command('messages_half_page_up') end, desc = 'Scroll messages up', },
|
||||||
|
-- { '<S-C-d>', function() require('opencode').command('messages_half_page_down') end, desc = 'Scroll messages down', },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- This is great tho
|
||||||
|
{
|
||||||
|
'milanglacier/minuet-ai.nvim',
|
||||||
|
dependencies = { 'hrsh7th/nvim-cmp', 'nvim-lua/plenary.nvim' },
|
||||||
|
config = function()
|
||||||
|
require('minuet').setup {
|
||||||
|
-- Your configuration options here
|
||||||
|
provider_options = {
|
||||||
|
codestral = {
|
||||||
|
model = 'codestral-latest',
|
||||||
|
end_point = 'https://codestral.mistral.ai/v1/fim/completions',
|
||||||
|
api_key = 'CODESTRAL_API_KEY',
|
||||||
|
stream = true,
|
||||||
|
optional = {
|
||||||
|
stop = { '\n\n' }, -- the identifier to stop the completion generation
|
||||||
|
max_tokens = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
37
lua/plugins/dap.lua
Normal file
37
lua/plugins/dap.lua
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'mfussenegger/nvim-dap',
|
||||||
|
lazy = true,
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
config = function()
|
||||||
|
local wk = require("which-key")
|
||||||
|
local dap = require("dap")
|
||||||
|
wk.add({
|
||||||
|
{ '<leader>d', group = "dap" },
|
||||||
|
{ '<leader>db', dap.toggle_breakpoint, desc = "Toggle breakpoint" },
|
||||||
|
{ '<leader>dc', dap.continue, desc = "Launch/resume debug session" },
|
||||||
|
{ '<leader>do', dap.step_over, desc = "Step over" },
|
||||||
|
{ '<leader>di', dap.step_into, desc = "Step into" },
|
||||||
|
{ '<leader>du', dap.step_out, desc = "Step out" },
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'rcarriga/nvim-dap-ui',
|
||||||
|
lazy = true,
|
||||||
|
config = function()
|
||||||
|
local dapui = require("dapui")
|
||||||
|
dapui.setup()
|
||||||
|
local wk = require("which-key")
|
||||||
|
wk.add({
|
||||||
|
{ '<leader>dd', dapui.toggle, desc = "Toggle dap ui" }
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
dependencies = { 'mfussenegger/nvim-dap', 'nvim-neotest/nvim-nio' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'theHamsta/nvim-dap-virtual-text',
|
||||||
|
lazy = true,
|
||||||
|
config = true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,105 +1,357 @@
|
|||||||
local opts = { noremap = true, silent = true }
|
|
||||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
|
||||||
vim.keymap.set('n', ',d', vim.diagnostic.goto_prev, opts)
|
|
||||||
vim.keymap.set('n', '.d', vim.diagnostic.goto_next, opts)
|
|
||||||
|
|
||||||
local lsp_attach = function(client, buf)
|
local lsp_attach = function(client, buf)
|
||||||
vim.api.nvim_buf_set_option(buf, "formatexpr", "v:lua.vim.lsp.formatexpr()")
|
vim.api.nvim_set_option_value("formatexpr", "v:lua.vim.lsp.formatexpr()", { buf = buf })
|
||||||
vim.api.nvim_buf_set_option(buf, "omnifunc", "v:lua.vim.lsp.omnifunc")
|
vim.api.nvim_set_option_value("omnifunc", "v:lua.vim.lsp.omnifunc", { buf = buf })
|
||||||
vim.api.nvim_buf_set_option(buf, "tagfunc", "v:lua.vim.lsp.tagfunc")
|
vim.api.nvim_set_option_value("tagfunc", "v:lua.vim.lsp.tagfunc", { buf = buf })
|
||||||
|
|
||||||
|
vim.lsp.inlay_hint.enable(true, nil)
|
||||||
|
|
||||||
local bufopts = { noremap = true, silent = true, buffer = buf }
|
local bufopts = { noremap = true, silent = true, buffer = buf }
|
||||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
local wk = require("which-key")
|
||||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
|
||||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
local diag_next = function()
|
||||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
vim.diagnostic.jump({ count = 1, float = true })
|
||||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
end
|
||||||
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
|
||||||
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
|
local diag_prev = function()
|
||||||
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
|
vim.diagnostic.jump({ count = -1, float = true })
|
||||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
end
|
||||||
|
|
||||||
|
wk.add({
|
||||||
|
{ '<C-e>', require("telescope.builtin").diagnostics, bufopts, desc = "Show diagnostics under cursor" },
|
||||||
|
{ '<leader>e', vim.diagnostic.open_float, bufopts, desc = "Show diagnostics in buffer" },
|
||||||
|
{ '[d', diag_prev, bufopts },
|
||||||
|
{ ']d', diag_next, bufopts },
|
||||||
|
|
||||||
|
{ 'gD', vim.lsp.buf.declaration, bufopts, desc = "Go to declaration" },
|
||||||
|
{ 'gd', vim.lsp.buf.definition, bufopts, desc = "Go to definition" },
|
||||||
|
{ 'gi', vim.lsp.buf.implementation, bufopts, desc = "Go to implementation" },
|
||||||
|
{ '<C-k>', vim.lsp.buf.signature_help, bufopts, desc = "Show signature" },
|
||||||
|
{ '<leader>rn', vim.lsp.buf.rename, bufopts, desc = "Rename" },
|
||||||
|
{ '<leader>ca', vim.lsp.buf.code_action, bufopts, desc = "Show code actions" },
|
||||||
|
{ 'gr', require("telescope.builtin").lsp_references, bufopts, desc = "Shwo references" },
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local mason_path = vim.fn.glob(vim.fn.stdpath "data" .. "/mason/packages/codelldb/extension/")
|
||||||
|
local codelldb_path = mason_path .. "adapter/codelldb"
|
||||||
|
local liblldb_path = mason_path .. "lldb/lib/liblldb.so"
|
||||||
|
|
||||||
|
if vim.fn.has "mac" == 1 then
|
||||||
|
liblldb_path = mason_path .. "lldb/lib/liblldb.dylib"
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- lsp
|
-- lsp
|
||||||
{
|
{
|
||||||
'williamboman/mason.nvim',
|
'williamboman/mason.nvim',
|
||||||
|
lazy = true,
|
||||||
config = true
|
config = true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'williamboman/mason-lspconfig.nvim',
|
'williamboman/mason-lspconfig.nvim',
|
||||||
config = true
|
config = true
|
||||||
|
--config = function()
|
||||||
|
-- ensure_installed = { "lua_ls", "ts_ls", "gopls", "rust_analyzer", "bashls", "sqlls", "html", "cssls",
|
||||||
|
-- "tailwindcss", "phpactor", "julials", "glsl_analyzer", "wgsl_analyzer", "emmet_language_server", "zls" }
|
||||||
|
--end
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'neovim/nvim-lspconfig',
|
'neovim/nvim-lspconfig',
|
||||||
config = function()
|
config = function()
|
||||||
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||||
local lspconfig = require('lspconfig')
|
|
||||||
|
|
||||||
lspconfig.lua_ls.setup {
|
vim.lsp.config('lua_ls', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
|
root_markers = { '.git' },
|
||||||
settings = {
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
|
||||||
|
version = 'LuaJIT',
|
||||||
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
|
-- Get the language server to recognize the `vim` global
|
||||||
globals = { 'vim' }
|
globals = { 'vim' }
|
||||||
}
|
},
|
||||||
|
workspace = {
|
||||||
|
-- Make the server aware of Neovim runtime files
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
checkThirdParty = false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
}
|
})
|
||||||
lspconfig.tsserver.setup {
|
vim.lsp.config('ts_ls', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
}
|
})
|
||||||
lspconfig.gopls.setup {
|
vim.lsp.config('gopls', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
}
|
})
|
||||||
--lspconfig.rust_analyzer.setup {
|
--vim.lsp.config(rust_analyzer.setup {
|
||||||
-- capabilities = capabilities,
|
-- capabilities = capabilities,
|
||||||
-- on_attach = lsp_attach
|
-- on_attach = lsp_attach
|
||||||
--}
|
--})
|
||||||
require("rust-tools").setup({
|
vim.lsp.config('bashls', {
|
||||||
server = {
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = lsp_attach,
|
|
||||||
standalone = false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
lspconfig.bashls.setup {
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = lsp_attach
|
|
||||||
}
|
|
||||||
lspconfig.sqlls.setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
})
|
})
|
||||||
lspconfig.html.setup({
|
vim.lsp.config('sqlls', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
})
|
})
|
||||||
lspconfig.cssls.setup({
|
vim.lsp.config('html', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
})
|
})
|
||||||
lspconfig.tailwindcss.setup({
|
vim.lsp.config('cssls', {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
})
|
})
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
vim.lsp.config('tailwindcss', {
|
||||||
lspconfig.emmet_ls.setup({
|
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
on_attach = lsp_attach
|
on_attach = lsp_attach
|
||||||
})
|
})
|
||||||
|
vim.lsp.config('phpactor', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach
|
||||||
|
})
|
||||||
|
vim.lsp.config('julials', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach
|
||||||
|
})
|
||||||
|
vim.lsp.config('wgsl_analyzer', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach
|
||||||
|
})
|
||||||
|
vim.lsp.config('glsl_analyzer', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach
|
||||||
|
})
|
||||||
|
vim.lsp.config('emmet_ls', {
|
||||||
|
filetypes = { "css", "html", "javascript", "typescript" },
|
||||||
|
-- Read more about this options in the [vscode docs](https://code.visualstudio.com/docs/editor/emmet#_emmet-configuration).
|
||||||
|
-- **Note:** only the options listed in the table are supported.
|
||||||
|
init_options = {
|
||||||
|
---@type table<string, string>
|
||||||
|
includeLanguages = {},
|
||||||
|
--- @type string[]
|
||||||
|
excludeLanguages = {},
|
||||||
|
--- @type string[]
|
||||||
|
extensionsPath = {},
|
||||||
|
--- @type table<string, any> [Emmet Docs](https://docs.emmet.io/customization/preferences/)
|
||||||
|
preferences = {},
|
||||||
|
--- @type boolean Defaults to `true`
|
||||||
|
showAbbreviationSuggestions = true,
|
||||||
|
--- @type "always" | "never" Defaults to `"always"`
|
||||||
|
showExpandedAbbreviation = "always",
|
||||||
|
--- @type boolean Defaults to `false`
|
||||||
|
showSuggestionsAsSnippets = false,
|
||||||
|
--- @type table<string, any> [Emmet Docs](https://docs.emmet.io/customization/syntax-profiles/)
|
||||||
|
syntaxProfiles = {},
|
||||||
|
--- @type table<string, string> [Emmet Docs](https://docs.emmet.io/customization/snippets/#variables)
|
||||||
|
variables = {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- vim.lsp.config('ccls.setup {
|
||||||
|
-- capabilities = capabilities,
|
||||||
|
-- on_attach = lsp_attach,
|
||||||
|
-- })
|
||||||
|
vim.lsp.config('clangd', {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach,
|
||||||
|
})
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
{ 'simrat39/rust-tools.nvim' },
|
{
|
||||||
|
'mrcjkb/rustaceanvim',
|
||||||
|
version = "^4",
|
||||||
|
lazy = false,
|
||||||
|
ft = { "rust" },
|
||||||
|
config = function()
|
||||||
|
vim.g.rustaceanvim = {
|
||||||
|
server = {
|
||||||
|
on_attach = lsp_attach,
|
||||||
|
settings = {
|
||||||
|
-- rust-analyzer language server configuration
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
rustfmt = {
|
||||||
|
extraArgs = { "+nightly" },
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
loadOutDirsFromCheck = true,
|
||||||
|
runBuildScripts = true,
|
||||||
|
},
|
||||||
|
-- Add clippy lints for Rust.
|
||||||
|
checkOnSave = {
|
||||||
|
allFeatures = true,
|
||||||
|
command = "clippy",
|
||||||
|
extraArgs = { "--no-deps" },
|
||||||
|
},
|
||||||
|
-- TODO this breaks diagnostics, look into what can be done
|
||||||
|
-- procMacro = {
|
||||||
|
-- enable = true,
|
||||||
|
-- ignored = {
|
||||||
|
-- ["async-trait"] = { "async_trait" },
|
||||||
|
-- ["napi-derive"] = { "napi" },
|
||||||
|
-- ["async-recursion"] = { "async_recursion" },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'mfussenegger/nvim-jdtls',
|
||||||
|
ft = { "java" },
|
||||||
|
config = function()
|
||||||
|
local home = os.getenv('HOME')
|
||||||
|
local jdtls = require('jdtls')
|
||||||
|
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||||
|
local root_markers = { 'gradlew', 'mvnw', 'git' }
|
||||||
|
local root_dir = require('jdtls.setup').find_root(root_markers)
|
||||||
|
local workspace_folder = home .. "/.local/share/eclipse/" .. vim.fn.fnamemodify(root_dir, ":p:h:t")
|
||||||
|
local config = {
|
||||||
|
flags = {
|
||||||
|
debounce_text_changes = 80,
|
||||||
|
},
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = lsp_attach, -- We pass our on_attach keybindings to the configuration map
|
||||||
|
root_dir = root_dir, -- Set the root directory to our found root_marker
|
||||||
|
-- here you can configure eclipse.jdt.ls specific settings
|
||||||
|
-- these are defined by the eclipse.jdt.ls project and will be passed to eclipse when starting.
|
||||||
|
-- see https://github.com/eclipse/eclipse.jdt.ls/wiki/running-the-java-ls-server-from-the-command-line#initialize-request
|
||||||
|
-- for a list of options
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
format = {
|
||||||
|
settings = {
|
||||||
|
-- use google java style guidelines for formatting
|
||||||
|
-- to use, make sure to download the file from https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml
|
||||||
|
-- and place it in the ~/.local/share/eclipse directory
|
||||||
|
-- url = "/.local/share/eclipse/eclipse-java-google-style.xml",
|
||||||
|
-- profile = "googlestyle",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
signaturehelp = { enabled = true },
|
||||||
|
contentprovider = { preferred = 'fernflower' }, -- use fernflower to decompile library code
|
||||||
|
-- specify any completion options
|
||||||
|
completion = {
|
||||||
|
favoritestaticmembers = {
|
||||||
|
-- "org.hamcrest.matcherassert.assertthat",
|
||||||
|
-- "org.hamcrest.matchers.*",
|
||||||
|
-- "org.hamcrest.corematchers.*",
|
||||||
|
-- "org.junit.jupiter.api.assertions.*",
|
||||||
|
-- "java.util.objects.requirenonnull",
|
||||||
|
-- "java.util.objects.requirenonnullelse",
|
||||||
|
-- "org.mockito.mockito.*"
|
||||||
|
},
|
||||||
|
filteredtypes = {
|
||||||
|
-- "com.sun.*",
|
||||||
|
-- "io.micrometer.shaded.*",
|
||||||
|
-- "java.awt.*",
|
||||||
|
-- "jdk.*", "sun.*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- specify any options for organizing imports
|
||||||
|
sources = {
|
||||||
|
organizeimports = {
|
||||||
|
starthreshold = 9999,
|
||||||
|
staticstarthreshold = 9999,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- how code generation should act
|
||||||
|
codegeneration = {
|
||||||
|
tostring = {
|
||||||
|
template = "${object.classname}{${member.name()}=${member.value}, ${othermembers}}"
|
||||||
|
},
|
||||||
|
hashcodeequals = {
|
||||||
|
usejava7objects = true,
|
||||||
|
},
|
||||||
|
useblocks = true,
|
||||||
|
},
|
||||||
|
-- if you are developing in projects with different java versions, you need
|
||||||
|
-- to tell eclipse.jdt.ls to use the location of the jdk for your java version
|
||||||
|
-- see https://github.com/eclipse/eclipse.jdt.ls/wiki/running-the-java-ls-server-from-the-command-line#initialize-request
|
||||||
|
-- and search for `interface runtimeoption`
|
||||||
|
-- the `name` is not arbitrary, but must match one of the elements from `enum executionenvironment` in the link above
|
||||||
|
configuration = {
|
||||||
|
runtimes = {
|
||||||
|
{
|
||||||
|
name = "JavaSE-17",
|
||||||
|
path = home .. "/.local/share/asdf/installs/java/oracle-17.0.11/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "JavaSE-21",
|
||||||
|
path = home .. "/.local/share/asdf/installs/java/oracle-21.0.2/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "JavaSE-1.8",
|
||||||
|
path = home .. "/.local/share/asdf/installs/java/adoptopenjdk-8.0.412+8/"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- cmd is the command that starts the language server. whatever is placed
|
||||||
|
-- here is what is passed to the command line to execute jdtls.
|
||||||
|
-- note that eclipse.jdt.ls must be started with a java version of 17 or higher
|
||||||
|
-- see: https://github.com/eclipse/eclipse.jdt.ls#running-from-the-command-line
|
||||||
|
-- for the full list of options
|
||||||
|
cmd = {
|
||||||
|
home .. "/.local/share/asdf/installs/java/oracle-21.0.2/bin/java",
|
||||||
|
'-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
||||||
|
'-Dosgi.bundles.defaultstartlevel=4',
|
||||||
|
'-Declipse.product=org.eclipse.jdt.ls.core.product',
|
||||||
|
'-Dlog.protocol=true',
|
||||||
|
'-Dlog.level=all',
|
||||||
|
'-Xmx4G',
|
||||||
|
'--add-modules=ALL-SYSTEM',
|
||||||
|
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
|
||||||
|
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
|
||||||
|
-- if you use lombok, download the lombok jar and place it in ~/.local/share/eclipse
|
||||||
|
'-javaagent:' .. home .. '/.local/share/nvim/mason/packages/jdtls/lombok.jar',
|
||||||
|
|
||||||
|
-- the jar file is located where jdtls was installed. this will need to be updated
|
||||||
|
-- to the location where you installed jdtls
|
||||||
|
'-jar', vim.fn.glob(
|
||||||
|
home ..
|
||||||
|
'/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_*.jar'),
|
||||||
|
|
||||||
|
-- the configuration for jdtls is also placed where jdtls was installed. this will
|
||||||
|
-- need to be updated depending on your environment
|
||||||
|
'-configuration', home .. '/.local/share/nvim/mason/packages/jdtls/config_linux',
|
||||||
|
|
||||||
|
-- use the workspace_folder defined above to store data for this project
|
||||||
|
'-data', workspace_folder,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
jdtls.start_or_attach(config)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kurren123/mssql.nvim",
|
||||||
|
opts = {
|
||||||
|
-- optional
|
||||||
|
keymap_prefix = "<leader>m"
|
||||||
|
},
|
||||||
|
-- optional
|
||||||
|
dependencies = { "folke/which-key.nvim" }
|
||||||
|
},
|
||||||
{ 'onsails/lspkind-nvim' }, -- pictograms replace (?) with lspsaga
|
{ 'onsails/lspkind-nvim' }, -- pictograms replace (?) with lspsaga
|
||||||
{ 'j-hui/fidget.nvim' }, -- show lsp status
|
{
|
||||||
|
'j-hui/fidget.nvim',
|
||||||
|
config = true
|
||||||
|
}, -- show lsp status
|
||||||
-- completion
|
-- completion
|
||||||
{
|
{
|
||||||
'hrsh7th/nvim-cmp',
|
'hrsh7th/nvim-cmp',
|
||||||
config = function()
|
config = function()
|
||||||
local cmp = require('cmp')
|
local cmp = require('cmp')
|
||||||
local lspkind = require('lspkind')
|
local lspkind = require('lspkind')
|
||||||
|
|
||||||
@@ -133,9 +385,17 @@ return {
|
|||||||
{ name = 'path' },
|
{ name = 'path' },
|
||||||
{ name = 'luasnip' },
|
{ name = 'luasnip' },
|
||||||
{ name = 'nvim_lsp_signature_help' },
|
{ name = 'nvim_lsp_signature_help' },
|
||||||
}, {
|
}, {
|
||||||
{ name = 'buffer', keyword_length = 5 },
|
{ name = 'buffer', keyword_length = 5 },
|
||||||
|
{ name = 'minuet' },
|
||||||
}),
|
}),
|
||||||
|
performance = {
|
||||||
|
-- It is recommended to increase the timeout duration due to
|
||||||
|
-- the typically slower response speed of LLMs compared to
|
||||||
|
-- other completion sources. This is not needed when you only
|
||||||
|
-- need manual completion.
|
||||||
|
fetching_timeout = 2000,
|
||||||
|
},
|
||||||
formatting = {
|
formatting = {
|
||||||
format = lspkind.cmp_format {
|
format = lspkind.cmp_format {
|
||||||
with_text = true,
|
with_text = true,
|
||||||
@@ -145,6 +405,7 @@ return {
|
|||||||
nvim_lua = "[api]",
|
nvim_lua = "[api]",
|
||||||
path = "[path]",
|
path = "[path]",
|
||||||
luasnip = "[snip]",
|
luasnip = "[snip]",
|
||||||
|
minuet = "[llm]",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,8 +422,8 @@ return {
|
|||||||
cmp.setup.cmdline(':', {
|
cmp.setup.cmdline(':', {
|
||||||
sources = cmp.config.sources({
|
sources = cmp.config.sources({
|
||||||
{ name = 'path' }
|
{ name = 'path' }
|
||||||
}, {
|
}, {
|
||||||
{ name = 'cmdline' }
|
{ name = 'cmdline' }
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
@@ -179,6 +440,8 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'L3MON4D3/LuaSnip',
|
'L3MON4D3/LuaSnip',
|
||||||
|
version = "v2.*",
|
||||||
|
build = "make install_jsregexp",
|
||||||
config = function()
|
config = function()
|
||||||
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets/" })
|
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets/" })
|
||||||
end
|
end
|
||||||
@@ -187,6 +450,13 @@ return {
|
|||||||
'windwp/nvim-autopairs',
|
'windwp/nvim-autopairs',
|
||||||
config = true
|
config = true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"folke/trouble.nvim",
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
-- -- Linting & formtatting
|
|
||||||
-- 'jose-elias-alvarez/null-ls.nvim';
|
|
||||||
|
|||||||
@@ -1,67 +1,66 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
'nvim-telescope/telescope.nvim',
|
'nvim-telescope/telescope.nvim',
|
||||||
tag = '0.1.1',
|
version = '0.1.*',
|
||||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
config = function()
|
||||||
|
local telescope = require("telescope.builtin")
|
||||||
|
local wk = require("which-key")
|
||||||
|
wk.add({
|
||||||
|
{ "<leader>g", group = "git" },
|
||||||
|
{ "<leader>gh", telescope.git_bcommits, { noremap = true, silent = true }, desc = "View commits of current buffer" },
|
||||||
|
{ "<leader>gb", telescope.git_branches, { noremap = true, silent = true }, desc = "View git branches" },
|
||||||
|
{ "<leader>gs", telescope.git_status, { noremap = true, silent = true }, desc = "View git status" },
|
||||||
|
{ "<leader>f", group = "find" },
|
||||||
|
{ '<Leader>ff', telescope.git_files, { noremap = true, silent = true }, desc = "Search files" },
|
||||||
|
{ '<Leader>fg', telescope.live_grep, { noremap = true, silent = true }, desc = "Search in files" },
|
||||||
|
{ '<Leader>fb', telescope.buffers, { noremap = true, silent = true }, desc = "Search in buffers" },
|
||||||
|
{ '<Leader>fh', telescope.help_tags, { noremap = true, silent = true }, desc = "Search in help" },
|
||||||
|
{ '<Leader>fk', telescope.keymaps, { noremap = true, silent = true }, desc = "Search in keymaps" },
|
||||||
|
{ '<leader>cc', telescope.colorscheme, desc = "Select colorscheme" },
|
||||||
|
})
|
||||||
|
require("telescope.config").set_defaults({
|
||||||
|
file_ignore_patterns = { "doc/" }
|
||||||
|
})
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'nvim-tree/nvim-tree.lua',
|
'nvim-telescope/telescope-ui-select.nvim',
|
||||||
|
dependencies = { 'nvim-telescope/telescope.nvim' },
|
||||||
config = function()
|
config = function()
|
||||||
require('nvim-tree').setup {
|
require("telescope").setup {
|
||||||
disable_netrw = true,
|
defaults = {
|
||||||
hijack_netrw = true,
|
|
||||||
open_on_setup = false,
|
|
||||||
ignore_ft_on_setup = {},
|
|
||||||
open_on_tab = false,
|
|
||||||
hijack_cursor = false,
|
|
||||||
update_cwd = true,
|
|
||||||
hijack_directories = {
|
|
||||||
enable = true,
|
|
||||||
auto_open = true,
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
enable = false,
|
|
||||||
icons = {
|
|
||||||
hint = "",
|
|
||||||
info = "",
|
|
||||||
warning = "",
|
|
||||||
error = "",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
update_focused_file = {
|
|
||||||
enable = false,
|
|
||||||
update_cwd = false,
|
|
||||||
ignore_list = {}
|
|
||||||
},
|
|
||||||
system_open = {
|
|
||||||
cmd = nil,
|
|
||||||
args = {}
|
|
||||||
},
|
|
||||||
filters = {
|
|
||||||
dotfiles = false,
|
|
||||||
custom = {}
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
enable = true,
|
|
||||||
ignore = true,
|
|
||||||
timeout = 500,
|
|
||||||
},
|
|
||||||
view = {
|
|
||||||
width = 30,
|
|
||||||
hide_root_folder = false,
|
|
||||||
side = 'left',
|
|
||||||
mappings = {
|
mappings = {
|
||||||
custom_only = false,
|
i = {
|
||||||
list = {}
|
["<C-h>"] = "which_key"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions = {
|
pickers = {
|
||||||
open_file = {
|
colorscheme = {
|
||||||
resize_window = false
|
enable_preview = true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
["ui-select"] = {
|
||||||
|
require("telescope.themes").get_cursor()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end,
|
require("telescope").load_extension("ui-select")
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
end
|
||||||
}
|
}
|
||||||
|
-- Don't really need it. Nicer than the default but that's it
|
||||||
|
-- {
|
||||||
|
-- 'nvim-tree/nvim-tree.lua',
|
||||||
|
-- config = function()
|
||||||
|
-- require('nvim-tree').setup {
|
||||||
|
-- view = {
|
||||||
|
-- width = 30,
|
||||||
|
-- side = 'left',
|
||||||
|
-- },
|
||||||
|
-- }
|
||||||
|
-- end,
|
||||||
|
-- dependencies = { 'nvim-tree/nvim-web-devicons' }
|
||||||
|
-- }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,26 @@ return {
|
|||||||
'rebelot/kanagawa.nvim',
|
'rebelot/kanagawa.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
vim.opt.guifont = 'Source Code Pro for Powerline'
|
vim.opt.guifont = 'Source Code Pro for Powerline'
|
||||||
vim.g.limelight_conceal_ctermfg = 'gray'
|
|
||||||
vim.cmd('colorscheme kanagawa')
|
|
||||||
vim.cmd('set termguicolors')
|
vim.cmd('set termguicolors')
|
||||||
vim.opt.syntax = 'on'
|
vim.opt.syntax = 'on'
|
||||||
|
-- require('kanagawa').setup({
|
||||||
|
-- colors = {
|
||||||
|
-- palette = {
|
||||||
|
-- lotusGray = "#F8F7F4",
|
||||||
|
-- lotusWhite0 = "#FBFBF9",
|
||||||
|
-- lotusWhite1 = "#F2F0E9",
|
||||||
|
-- lotusWhite2 = "#F8F7F2",
|
||||||
|
-- lotusWhite3 = "#F6F6F1",
|
||||||
|
-- lotusWhite4 = "#F4F1E6",
|
||||||
|
-- lotusWhite5 = "#FcFBF9",
|
||||||
|
-- }
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
-- vim.cmd('colorscheme kanagawa-lotus')
|
||||||
|
vim.cmd('colorscheme kanagawa')
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
{ 'lunarvim/lunar.nvim' },
|
||||||
{
|
{
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
build = ':TSUpdate',
|
build = ':TSUpdate',
|
||||||
@@ -24,11 +38,43 @@ return {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
dependencies = { 'nvim-treesitter/playground' }
|
},
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter-context",
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
config = function()
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
swap = {
|
||||||
|
enable = true,
|
||||||
|
swap_next = {
|
||||||
|
["<leader>a"] = "@parameter.inner",
|
||||||
|
},
|
||||||
|
swap_previous = {
|
||||||
|
["<leader>A"] = "@parameter.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'akinsho/bufferline.nvim',
|
'akinsho/bufferline.nvim',
|
||||||
tag = "v3.3.0",
|
version = "*",
|
||||||
config = true,
|
config = true,
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
||||||
},
|
},
|
||||||
@@ -42,11 +88,8 @@ return {
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
{ 'lewis6991/gitsigns.nvim' },
|
|
||||||
{
|
{
|
||||||
'glepnir/dashboard-nvim',
|
'lewis6991/gitsigns.nvim',
|
||||||
event = 'VimEnter',
|
config = true
|
||||||
config = true,
|
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' }
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
60
lua/plugins/wk.lua
Normal file
60
lua/plugins/wk.lua
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
-- maps.lua
|
||||||
|
|
||||||
|
local maps = {}
|
||||||
|
|
||||||
|
function maps.term()
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>t', '<C-w>s<C-w>j :terminal<CR>:res 5<CR>i',
|
||||||
|
{ noremap = false, desc = "Open and move to terminal" })
|
||||||
|
vim.api.nvim_set_keymap('t', 'ß<C-N>', '<C-\\><C-N>', { noremap = true, desc = "Enter normal mode in terminal" })
|
||||||
|
end
|
||||||
|
|
||||||
|
function maps.fixIndent()
|
||||||
|
vim.api.nvim_set_keymap('v', '<', '<gv', { noremap = true, desc = "Remove identation level" })
|
||||||
|
vim.api.nvim_set_keymap('v', '>', '>gv', { noremap = true, desc = "Add identation level" })
|
||||||
|
end
|
||||||
|
|
||||||
|
function maps.moveByRow()
|
||||||
|
-- When text is wrapped, move by terminal rows, not lines, unles a count is provided
|
||||||
|
vim.api.nvim_set_keymap('n', 'j', 'v:count == 0 ? \'gj\' : \'j\'',
|
||||||
|
{ noremap = true, silent = true, expr = true, desc = "Go down 1 line" })
|
||||||
|
vim.api.nvim_set_keymap('n', 'k', 'v:count == 0 ? \'gk\' : \'k\'',
|
||||||
|
{ noremap = true, silent = true, expr = true, desc = "Go up 1 line" })
|
||||||
|
end
|
||||||
|
|
||||||
|
function maps.centeredSearch()
|
||||||
|
vim.api.nvim_set_keymap('n', 'n', 'nzzzv', { noremap = true, desc = "Search next" })
|
||||||
|
vim.api.nvim_set_keymap('n', 'N', 'Nzzzv', { noremap = true, desc = "Search previous" })
|
||||||
|
end
|
||||||
|
|
||||||
|
function maps.init()
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>b', '<cmd>Lexplore | vert res 30<CR>',
|
||||||
|
{ noremap = true, desc = "Open file explorer" })
|
||||||
|
|
||||||
|
maps.term()
|
||||||
|
maps.fixIndent()
|
||||||
|
maps.moveByRow()
|
||||||
|
maps.centeredSearch()
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>?",
|
||||||
|
function()
|
||||||
|
require("which-key").show({ global = false })
|
||||||
|
end,
|
||||||
|
desc = "Buffer Local Keymaps (which-key)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("which-key").setup({
|
||||||
|
preset = "helix"
|
||||||
|
})
|
||||||
|
local wk = require("which-key")
|
||||||
|
maps.init()
|
||||||
|
end
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user