Simplify statusline, support tabs, add more languages

This commit is contained in:
agryphus 2025-09-03 19:06:21 -04:00
parent c28dd3e9a9
commit bb94a399de
11 changed files with 166 additions and 109 deletions

View file

@ -1,39 +1,3 @@
local palette = {
none = "NONE",
fg = "#E1E1E1",
bg = "#151515",
alt_bg = "#171717",
accent = "#202020",
white = "#E1E1E1",
gray = "#373737",
medium_gray = "#727272",
light_gray = "#AFAFAF",
blue = "#BAD7FF",
gray_blue = "#7E97AB",
medium_gray_blue = "#A2B5C1",
cyan = "#88afa2",
red = "#b46958",
green = "#90A959",
yellow = "#F4BF75",
orange = "#FFA557",
purple = "#AA749F",
magenta = "#AA759F",
cursor_fg = "#151515",
cursor_bg = "#D0D0D0",
sign_add = "#586935",
sign_change = "#51657B",
sign_delete = "#984936",
error = "#984936",
warning = "#ab8550",
info = "#ab8550",
hint = "#576f82",
neogit_light_green = "#2A2E19",
neogit_blue = "#1B1F27",
neogit_green = "#212513",
neogit_light_red = "#402020",
neogit_red = "#351D1D",
}
require("no-clown-fiesta").setup({
transparent = true,
})
@ -143,65 +107,4 @@ require('vscode').setup({
}
})
vim.cmd[[
let s:base03 = [ '#151513', 233 ]
let s:base02 = [ '#202020', 236 ]
let s:base01 = [ '#373737', 239 ]
let s:base00 = [ '#727272', 242 ]
let s:base0 = [ '#808070', 244 ]
let s:base1 = [ '#949484', 246 ]
let s:base2 = [ '#a8a897', 248 ]
let s:base3 = [ '#E1E1E1', 253 ]
let s:yellow = [ '#F4BF75', 3 ]
let s:orange = [ '#FFA557', 216 ]
let s:red = [ '#B46958', 131 ]
let s:purple = [ '#AA749F', 181 ]
let s:blue = [ '#7E97AB', 109 ]
let s:cyan = [ '#BAD7FF', 23 ]
let s:green = [ '#90A959', 108 ]
let s:white = [ '#AFAFAF', 252 ]
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ]
let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ]
let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base0, s:base02 ] ]
let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base02 ] ]
let s:p.insert.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ]
let s:p.replace.left = [ [ s:base02, s:purple ], [ s:base3, s:base01 ] ]
let s:p.visual.left = [ [ s:base02, s:red ], [ s:base3, s:base01 ] ]
let s:p.normal.middle = [ [ s:base0, s:base02 ] ]
let s:p.inactive.middle = [ [ s:base00, s:base02 ] ]
let s:p.tabline.left = [ [ s:base3, s:base00 ] ]
let s:p.tabline.tabsel = [ [ s:base3, s:base02 ] ]
let s:p.tabline.middle = [ [ s:base01, s:base1 ] ]
let s:p.tabline.right = copy(s:p.normal.right)
let s:p.normal.error = [ [ s:red, s:base02 ] ]
let s:p.normal.warning = [ [ s:yellow, s:base01 ] ]
let g:lightline#colorscheme#mycolors#palette = lightline#colorscheme#flatten(s:p)
let g:lightline = {
\ 'colorscheme': 'mycolors',
\ }
" Don't need to see mode if lightline is installed
set noshowmode
]]
vim.cmd[[colorscheme no-clown-fiesta]]
-- My own color overrides
local hl = vim.api.nvim_set_hl
hl(0, 'TSConstant', { fg = palette.yellow })
hl(0, 'EndOfBuffer', { fg = palette.medium_gray })
hl(0, 'ErrorMsg', { fg = palette.yellow })
hl(0, 'LineNr', { fg = palette.medium_gray })
hl(0, 'MasonNormal', { bg = palette.gray })
hl(0, 'NvimTreeCursorLine', { fg = palette.yellow })
hl(0, 'NvimTreeEndOfBuffer', { fg = palette.medium_gray })
hl(0, 'NvimTreeIndentMarker', { fg = palette.medium_gray })
hl(0, 'NvimTreeFolderIcon', { fg = palette.yellow })
hl(0, 'WhichKeyBorder', { fg = palette.medium_gray, bg = palette.accent })
hl(0, 'WhichKeyDesc', { link = "function" })
hl(0, 'WhichKey', { fg = palette.medium_gray_blue })
hl(0, 'WhichKeyGroup', { fg = palette.gray_blue, bold = true })

View file

@ -0,0 +1,10 @@
require("compile-mode")
vim.g.compile_mode = {
beleia_setup = true
}
vim.keymap.set("n", "<leader>cC", vim.cmd.Compile, {desc = "Compile"})
vim.keymap.set("n", "<leader>cc", vim.cmd.Recompile, {desc = "Recompile"})

View file

@ -21,6 +21,8 @@ lspconfig.lua_ls.setup({
},
})
vim.g.zig_fmt_autosave = 0
-- RUST
-- Must run `rustup default stable` and then `rustup component add rust-analyzer`
-- upon first install
@ -30,6 +32,30 @@ lspconfig.clangd.setup({
capabilities = lsp_capabilities,
})
lspconfig.gopls.setup({
settings = {
gopls = {
analyses = {
unusedparams = true,
},
staticcheck = true,
gofumpt = true,
},
},
})
lspconfig.pylsp.setup({
settings = {
pylsp = {
pylint = { enabled = true, executable = "pylint" },
},
},
})
vim.keymap.set("n", "<leader>gf", ":GoFmt<CR>",
{ noremap = true, silent = true, desc = "Go Format" }
)
-- AUTOCOMPLETION
local cmp = require('cmp')

14
after/plugin/lualine.lua Normal file
View file

@ -0,0 +1,14 @@
require("lualine").setup({
sections = {
lualine_a = {'mode'},
lualine_b = {'tabs', 'filename'},
lualine_c = {'branch', 'diff', 'diagnostics'},
lualine_x = {'encoding', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
})
vim.cmd[[set showtabline=0]]
vim.cmd[[set noshowmode]]

View file

@ -39,7 +39,7 @@ let g:mkdp_open_ip = ''
" valid: `/path/with\ space/xxx`
" invalid: `/path/with\\ space/xxx`
" default: ''
let g:mkdp_browser = 'thorium-browser'
let g:mkdp_browser = 'zen'
" set to 1, echo preview page url in command line when open preview page
" default is 0

View file

@ -0,0 +1,9 @@
require("possession").setup({})
require('telescope').load_extension('possession')
vim.keymap.set("n", "<leader>pp", ":Telescope possession list<CR>",
{ desc = "List neovim sessions" })
vim.keymap.set("n", "<leader>ss", ":PossessionSave<CR>",
{ desc = "List neovim sessions" })

View file

@ -6,13 +6,12 @@ require("telescope").setup{
}
}
local wk = require("which-key")
vim.keymap.set("n", "<leader>p", "<noop>", {desc = "Project"})
vim.keymap.set("n", "<leader>pf", builtin.find_files, {desc = "Project find"})
vim.keymap.set("n", "<leader>pf", ":Telescope find_files no_ignore=true <CR>", {desc = "Project find"})
vim.keymap.set("n", "<leader>.", builtin.find_files, {desc = "Project find (.gitignore)"})
vim.keymap.set("n", "<leader>ps",
function ()
builtin.grep_string({ search = vim.fn.input("Grep > ") })
builtin.grep_string({ search = vim.fn.input("Grep > "), no_ignore = true })
end,
{ desc = "Project search" })

View file

@ -2,6 +2,8 @@ require'nvim-treesitter.configs'.setup {
ensure_installed = {
"c",
"css",
"glsl",
"go",
"html",
"java",
"javascript",
@ -29,3 +31,10 @@ require'nvim-treesitter.configs'.setup {
},
}
vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
pattern = {"*.vert", "*.frag"},
callback = function()
vim.bo.filetype = "glsl"
end,
})

View file

@ -30,6 +30,17 @@ require("lazy").setup({
event = "VeryLazy",
},
-- Markdown preview
{
"iamcco/markdown-preview.nvim",
cmd = { 'MarkdownPreviewToggle', 'MarkdownPreview', 'MarkdownPreviewStop' },
ft = { 'markdown' },
build = function()
vim.cmd [[Lazy load markdown-preview.nvim]]
vim.fn['mkdp#util#install']()
end,
},
-- Dashboard buffer
{
"goolord/alpha-nvim",
@ -37,6 +48,25 @@ require("lazy").setup({
dependencies = { 'nvim-tree/nvim-web-devicons' },
},
-- Compile mode
{
"ej-shafran/compile-mode.nvim",
-- tag = "v5.*",
-- you can just use the latest version:
branch = "latest",
-- or the most up-to-date updates:
-- branch = "nightly",
dependencies = {
"nvim-lua/plenary.nvim",
{ "m00qek/baleia.nvim", tag = "v1.3.0" },
},
config = function()
vim.g.compile_mode = {
baleia_setup = true,
}
end
};
-- Zen mode
"folke/zen-mode.nvim",
@ -75,10 +105,10 @@ require("lazy").setup({
-- See function signatures when typing them
{
"ray-x/lsp_signature.nvim",
event = "VeryLazy",
opts = {},
config = function(_, opts) require'lsp_signature'.setup(opts) end
-- "ray-x/lsp_signature.nvim",
-- event = "VeryLazy",
-- opts = {},
-- config = function(_, opts) require'lsp_signature'.setup(opts) end
},
-- Left-side file tree dispaly
@ -89,8 +119,15 @@ require("lazy").setup({
},
},
-- Shows current mode on bottom of screen
"itchyny/lightline.vim",
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
},
{
'jedrzejboczar/possession.nvim',
requires = { 'nvim-lua/plenary.nvim' },
},
-- LSP
{'VonHeikemen/lsp-zero.nvim', branch = 'v4.x'},

View file

@ -10,13 +10,23 @@ vim.keymap.set("n", "J", "mzJ`z")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- step through visual lines by default
vim.keymap.set("n", "j", "gj")
vim.keymap.set("n", "gj", "j")
vim.keymap.set("n", "k", "gk")
vim.keymap.set("n", "gk", "k")
vim.keymap.set("v", "j", "gj")
vim.keymap.set("v", "gj", "j")
vim.keymap.set("v", "k", "gk")
vim.keymap.set("v", "gk", "k")
-- easier escape back to normal mode
vim.keymap.set("i", "<C-c>", "<Esc>")
vim.keymap.set("n", "Q", "<nop>")
-- universal find and replace
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("n", "<leader>r", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
-- moving highlighted text
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
@ -87,3 +97,34 @@ vim.keymap.set("n", "<leader>hF",
{ noremap = true, silent = false, desc = "Describe face" }
)
local str = string.format
for i = 1, 9 do
vim.keymap.set("n", str("<A-%s>", i), str("%sgt", i), { desc = str("Goto tab %s", i) })
vim.keymap.set("t", str("<A-%s>", i), str("<C-\\><C-n>%sgt", i), { desc = str("Goto tab %s", i) })
end
vim.keymap.set("n", "<A-n>", "<CMD>tabnew<CR>", { desc = "Create a new tab" })
vim.keymap.set("n", "<A-CR>", "<CMD>tabnew<CR><CMD>term<CR>i", { desc = "Create a new tab with a terminal" })
vim.keymap.set("n", "<A-q>", "<CMD>tabclose<CR>", { desc = "Close current tab" })
vim.keymap.set("n", "<A-0>", "<CMD>tablast<CR>", { desc = "Goto last tab" })
vim.keymap.set("n", "<A-]>", "<CMD>tabnext<CR>", { desc = "Goto next tab" })
vim.keymap.set("n", "<A-[>", "<CMD>tabprevious<CR>", { desc = "Goto prev tab" })
vim.keymap.set("n", "<A-->", "<CMD>tabm-<CR>", { desc = "Move tab to the left" })
vim.keymap.set("n", "<A-=>", "<CMD>tabm+<CR>", { desc = "Move tab to the right" })
vim.keymap.set("n", "<A-'>", "<CMD>tab split<CR>", { desc = "Clone window in new tab" })
vim.keymap.set("n", "<C-w><CR>", "<CMD>term<CR>i", { desc = "Terminal" })
vim.api.nvim_create_autocmd("TabEnter", {
callback = function()
local bufnr = vim.api.nvim_get_current_buf()
local buftype = vim.api.nvim_buf_get_option(bufnr, "buftype")
if buftype == "terminal" then
-- Enter Terminal-Job mode
vim.api.nvim_feedkeys("i", "n", false)
end
end,
})

View file

@ -21,6 +21,13 @@ autocmd("bufenter", {
end,
})
-- You can then map it to a key or create a command:
vim.api.nvim_create_user_command('GoFmt', function()
local filename = vim.fn.expand('%')
vim.fn.system('gofmt -e -w ' .. filename)
vim.cmd('edit!')
end, {})
vim.filetype.add({
extension = {
typ = 'typst'
@ -39,6 +46,8 @@ vim.opt.signcolumn = "auto"
vim.o.shell = "zsh"
vim.o.title = true
-- Do not map q to :q in man mode
vim.g.no_man_maps = true;