chore(nvim): a lot of changes
This commit is contained in:
parent
98d7e4b3d7
commit
8aeb7e3c87
12 changed files with 135 additions and 120 deletions
2
.config/nvim/.gitignore
vendored
2
.config/nvim/.gitignore
vendored
|
@ -1,2 +1,2 @@
|
||||||
plugin
|
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
|
lua/dev
|
||||||
|
|
|
@ -2,5 +2,4 @@ require("core.variables")
|
||||||
require("core.keymaps")
|
require("core.keymaps")
|
||||||
require("core.autocmds")
|
require("core.autocmds")
|
||||||
require('core.package_manager')
|
require('core.package_manager')
|
||||||
require('winbar')
|
|
||||||
require('core.theme')
|
require('core.theme')
|
||||||
|
|
|
@ -1,18 +1,27 @@
|
||||||
|
-- Bootstrap lazy.nvim
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
vim.fn.system({
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||||
"git",
|
if vim.v.shell_error ~= 0 then
|
||||||
"clone",
|
vim.api.nvim_echo({
|
||||||
"--filter=blob:none",
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
{ out, "WarningMsg" },
|
||||||
"--branch=stable", -- latest stable release
|
{ "\nPress any key to exit..." },
|
||||||
lazypath,
|
}, true, {})
|
||||||
})
|
vim.fn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
--Call lazy config here
|
--Call lazy config here
|
||||||
local lazy = require("lazy")
|
local lazy = require("lazy")
|
||||||
lazy.setup("plugins")
|
lazy.setup({
|
||||||
|
spec = {
|
||||||
|
{ import = "plugins" }
|
||||||
|
},
|
||||||
|
dev = {
|
||||||
|
path = vim.fn.stdpath("config") .. "/lua/dev"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
|
@ -47,4 +47,3 @@ vim.opt.signcolumn = "yes"
|
||||||
vim.opt.autoread = true
|
vim.opt.autoread = true
|
||||||
-- disable swapfile
|
-- disable swapfile
|
||||||
vim.opt.swapfile = false
|
vim.opt.swapfile = false
|
||||||
vim.opt.laststatus = 3
|
|
||||||
|
|
|
@ -25,18 +25,26 @@ return {
|
||||||
sources = {
|
sources = {
|
||||||
default = { 'lsp', 'path', 'snippets', 'buffer' },
|
default = { 'lsp', 'path', 'snippets', 'buffer' },
|
||||||
providers = {
|
providers = {
|
||||||
lazydev = { name = "LazyDev", module = "lazydev.integrations.blink", fallbacks = { "lsp" } },
|
lazydev = {
|
||||||
|
name = "LazyDev",
|
||||||
|
module = "lazydev.integrations.blink",
|
||||||
|
fallbacks = { "lsp" }
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
signature = {
|
signature = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
window = {
|
window = {
|
||||||
max_width = 160,
|
|
||||||
max_height = 30,
|
|
||||||
scrollbar = true,
|
|
||||||
show_documentation = false,
|
show_documentation = false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
cmdline = {
|
||||||
|
completion = {
|
||||||
|
menu = {
|
||||||
|
auto_show = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
completion = {
|
completion = {
|
||||||
accept = {
|
accept = {
|
||||||
auto_brackets = {
|
auto_brackets = {
|
||||||
|
|
|
@ -117,10 +117,19 @@ return {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
filetypes = { 'haskell', 'lhaskell', 'cabal' },
|
filetypes = { 'haskell', 'lhaskell', 'cabal' },
|
||||||
})
|
})
|
||||||
lspconfig["clangd"].setup({
|
-- lspconfig["clangd"].setup({
|
||||||
|
-- capabilities = capabilities,
|
||||||
|
-- })
|
||||||
|
lspconfig["texlab"].setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
})
|
})
|
||||||
lspconfig["texlab"].setup({
|
lspconfig["bashls"].setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
||||||
|
lspconfig["zls"].setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
||||||
|
lspconfig["pyright"].setup({
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
|
@ -165,11 +174,35 @@ return {
|
||||||
rust = { "rustfmt" },
|
rust = { "rustfmt" },
|
||||||
go = { "gofmt" },
|
go = { "gofmt" },
|
||||||
json = { "jq" },
|
json = { "jq" },
|
||||||
bash = { "shfmt" }
|
bash = { "shfmt", "beautysh" },
|
||||||
|
zsh = { "beautysh" }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'mfussenegger/nvim-lint',
|
||||||
|
config = function()
|
||||||
|
local lint = require("lint")
|
||||||
|
|
||||||
|
lint.linters_by_ft = {
|
||||||
|
go = { "golangcilint" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
||||||
|
group = lint_augroup,
|
||||||
|
callback = function()
|
||||||
|
lint.try_lint()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>li", function()
|
||||||
|
lint.try_lint()
|
||||||
|
end, { desc = "Trigger linting for current file" })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"lervag/vimtex",
|
"lervag/vimtex",
|
||||||
|
@ -180,6 +213,15 @@ return {
|
||||||
else
|
else
|
||||||
vim.g.vimtex_view_method = 'zathura'
|
vim.g.vimtex_view_method = 'zathura'
|
||||||
end
|
end
|
||||||
|
vim.g.vimtex_quickfix_ignore_filters = {
|
||||||
|
"warning",
|
||||||
|
"Warning"
|
||||||
|
}
|
||||||
|
vim.g.vimtex_quickfix_open_on_warning = 0
|
||||||
|
vim.g.vimtex_quickfix_ignore_filters = {
|
||||||
|
'Overfull',
|
||||||
|
'Underfull',
|
||||||
|
}
|
||||||
vim.g.vimtex_compiler_method = 'latexmk'
|
vim.g.vimtex_compiler_method = 'latexmk'
|
||||||
vim.g.vimtex_compiler_latexmk = {
|
vim.g.vimtex_compiler_latexmk = {
|
||||||
out_dir = 'build',
|
out_dir = 'build',
|
||||||
|
|
|
@ -25,6 +25,7 @@ return {
|
||||||
statuscolumn = { enabled = true },
|
statuscolumn = { enabled = true },
|
||||||
dashboard = { enabled = true },
|
dashboard = { enabled = true },
|
||||||
input = { enabled = true },
|
input = { enabled = true },
|
||||||
|
image = { enabled = true },
|
||||||
lazygit = {
|
lazygit = {
|
||||||
vim.keymap.set('n', '<leader>lg', function()
|
vim.keymap.set('n', '<leader>lg', function()
|
||||||
Snacks.lazygit.open()
|
Snacks.lazygit.open()
|
||||||
|
@ -46,5 +47,15 @@ return {
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
"tpope/vim-fugitive",
|
"tpope/vim-fugitive",
|
||||||
"pimalaya/himalaya-vim"
|
{
|
||||||
|
"afonsofrancof/worktrees.nvim",
|
||||||
|
dev = true,
|
||||||
|
opts = {
|
||||||
|
mappings = {
|
||||||
|
create = "<leader>wtc",
|
||||||
|
delete = "<leader>wtd",
|
||||||
|
switch = "<leader>wts",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ return {
|
||||||
fzflua.setup({
|
fzflua.setup({
|
||||||
defaults = {
|
defaults = {
|
||||||
winopts = {
|
winopts = {
|
||||||
border = "single",
|
border = "rounded",
|
||||||
width = 0.6,
|
width = 0.6,
|
||||||
height = 0.5,
|
height = 0.5,
|
||||||
},
|
},
|
||||||
|
|
24
.config/nvim/lua/plugins/statusline.lua
Normal file
24
.config/nvim/lua/plugins/statusline.lua
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
|
opts = {
|
||||||
|
sections = {
|
||||||
|
lualine_a = { 'mode' },
|
||||||
|
lualine_b = { 'branch', 'diff', 'diagnostics' },
|
||||||
|
lualine_c = { { 'filename', path = 1 } },
|
||||||
|
lualine_x = { 'filetype' },
|
||||||
|
lualine_y = { 'progress' },
|
||||||
|
lualine_z = { 'location' }
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = { 'filename' },
|
||||||
|
lualine_x = { 'location' },
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,15 @@ return {
|
||||||
disable = { "latex" },
|
disable = { "latex" },
|
||||||
use_languagetree = true,
|
use_languagetree = true,
|
||||||
},
|
},
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = "gnn",
|
||||||
|
node_incremental = "grn",
|
||||||
|
scope_incremental = "grc",
|
||||||
|
node_decremental = "grm",
|
||||||
|
},
|
||||||
|
},
|
||||||
indent = {
|
indent = {
|
||||||
enable = true,
|
enable = true,
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
return {
|
return {
|
||||||
|
|
||||||
{
|
-- {
|
||||||
"vimpostor/vim-tpipeline",
|
-- "vimpostor/vim-tpipeline",
|
||||||
config = function()
|
-- config = function()
|
||||||
vim.g.tpipeline_restore = 0
|
-- vim.g.tpipeline_restore = 0
|
||||||
vim.g.tpipeline_autoembed = 0
|
-- vim.g.tpipeline_autoembed = 0
|
||||||
vim.o.laststatus = 0
|
-- vim.o.laststatus = 0
|
||||||
vim.g.tpipeline_statusline = '%=%l:%c'
|
-- vim.g.tpipeline_statusline = '%=%l:%c'
|
||||||
end
|
-- end
|
||||||
},
|
-- },
|
||||||
{
|
{
|
||||||
"folke/noice.nvim",
|
"folke/noice.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
|
@ -36,6 +36,7 @@ return {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'kevinhwang91/nvim-ufo',
|
'kevinhwang91/nvim-ufo',
|
||||||
|
event = "VeryLazy",
|
||||||
dependencies = 'kevinhwang91/promise-async',
|
dependencies = 'kevinhwang91/promise-async',
|
||||||
config = function()
|
config = function()
|
||||||
vim.o.foldcolumn = '0'
|
vim.o.foldcolumn = '0'
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
local folder_icon = ""
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
--- Window bar that shows the current file path (in a fancy way).
|
|
||||||
---@return string
|
|
||||||
function M.render()
|
|
||||||
-- Get the path and expand variables.
|
|
||||||
local path = vim.fs.normalize(vim.fn.expand '%:p' --[[@as string]])
|
|
||||||
|
|
||||||
-- Replace slashes by arrows.
|
|
||||||
local separator = ' %#WinbarSeparator# '
|
|
||||||
|
|
||||||
local prefix, prefix_path = '', ''
|
|
||||||
|
|
||||||
-- If the window gets too narrow, shorten the path and drop the prefix.
|
|
||||||
if vim.api.nvim_win_get_width(0) < math.floor(vim.o.columns / 3) then
|
|
||||||
path = vim.fn.pathshorten(path)
|
|
||||||
else
|
|
||||||
-- For some special folders, add a prefix instead of the full path (making
|
|
||||||
-- sure to pick the longest prefix).
|
|
||||||
---@type table<string, string>
|
|
||||||
local special_dirs = {
|
|
||||||
DOTFILES = "$HOME/.config",
|
|
||||||
HOME = vim.env.HOME,
|
|
||||||
PROJECTS = "$HOME/projects",
|
|
||||||
["University"] = "$HOME/projects/University",
|
|
||||||
["Personal"] = "$HOME/projects/Personal",
|
|
||||||
}
|
|
||||||
for dir_name, dir_path in pairs(special_dirs) do
|
|
||||||
if vim.startswith(path, vim.fs.normalize(dir_path)) and #dir_path > #prefix_path then
|
|
||||||
prefix, prefix_path = dir_name, dir_path
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if prefix ~= '' then
|
|
||||||
path = path:gsub('^' .. prefix_path, '')
|
|
||||||
prefix = string.format('%%#WinBarSpecial#%s %s%s', folder_icon, prefix, separator)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Remove leading slash.
|
|
||||||
path = path:gsub('^/', '')
|
|
||||||
|
|
||||||
-- Get the background color of the Normal highlight group
|
|
||||||
local normal_bg_color = vim.api.nvim_get_hl_by_name('Normal', true).background
|
|
||||||
-- Get the foreground color of the Normal highlight group
|
|
||||||
local normal_fg_color = vim.api.nvim_get_hl_by_name('Normal', true).foreground
|
|
||||||
|
|
||||||
-- Convert the RGB color to a hex string
|
|
||||||
local bg_hex_color = normal_bg_color and string.format('#%06x', normal_bg_color) or 'transparent'
|
|
||||||
-- Convert the RGB color to a hex string
|
|
||||||
local fg_hex_color = string.format('#%06x', normal_fg_color)
|
|
||||||
|
|
||||||
-- Define the Winbar highlight group with the same background color
|
|
||||||
vim.api.nvim_command('highlight Winbar guibg=' .. bg_hex_color)
|
|
||||||
-- Define the Winbar highlight group with the same foreground color
|
|
||||||
vim.api.nvim_command('highlight Winbar guifg=' .. fg_hex_color)
|
|
||||||
|
|
||||||
return table.concat {
|
|
||||||
' ',
|
|
||||||
prefix,
|
|
||||||
table.concat(
|
|
||||||
vim.iter(vim.split(path, '/'))
|
|
||||||
:map(function(segment)
|
|
||||||
return string.format('%%#Winbar#%s', segment)
|
|
||||||
end):totable(),
|
|
||||||
separator
|
|
||||||
),
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('BufWinEnter', {
|
|
||||||
group = vim.api.nvim_create_augroup('mariasolos/winbar', { clear = true }),
|
|
||||||
desc = 'Attach winbar',
|
|
||||||
callback = function(args)
|
|
||||||
if
|
|
||||||
not vim.api.nvim_win_get_config(0).zindex -- Not a floating window
|
|
||||||
and vim.bo[args.buf].buftype == '' -- Normal buffer
|
|
||||||
and vim.api.nvim_buf_get_name(args.buf) ~= '' -- Has a file name
|
|
||||||
and not vim.wo[0].diff -- Not in diff mode
|
|
||||||
then
|
|
||||||
vim.wo.winbar = "%{%v:lua.require'winbar'.render()%}"
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
return M
|
|
Loading…
Add table
Reference in a new issue