feat: updated rice

This commit is contained in:
2026-01-28 18:44:37 +01:00
parent 25d5763f5a
commit 4ee7054758
12 changed files with 198 additions and 254 deletions
+59
View File
@@ -0,0 +1,59 @@
local augroup = vim.api.nvim_create_augroup("UserConfig", {})
-- Highlight yanked text
vim.api.nvim_create_autocmd("TextYankPost", {
group = augroup,
callback = function()
vim.highlight.on_yank()
end,
})
-- Return to last edit position when opening files
vim.api.nvim_create_autocmd("BufReadPost", {
group = augroup,
callback = function()
local mark = vim.api.nvim_buf_get_mark(0, '"')
local lcount = vim.api.nvim_buf_line_count(0)
local line = mark[1]
local ft = vim.bo.filetype
if line > 0 and line <= lcount
and vim.fn.index({ "commit", "gitrebase", "xxd" }, ft) == -1
and not vim.o.diff then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
-- Auto-close terminal when process exits
vim.api.nvim_create_autocmd("TermClose", {
group = augroup,
callback = function()
if vim.v.event.status == 0 then
vim.api.nvim_buf_delete(0, {})
end
end,
})
-- Auto-resize splits when window is resized
vim.api.nvim_create_autocmd("VimResized", {
group = augroup,
callback = function()
vim.cmd("tabdo wincmd =")
end,
})
-- Create directories when saving files
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
callback = function()
local dir = vim.fn.expand('<afile>:p:h')
if vim.fn.isdirectory(dir) == 0 then
vim.fn.mkdir(dir, 'p')
end
end,
})
-10
View File
@@ -1,10 +0,0 @@
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})
-47
View File
@@ -1,47 +0,0 @@
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.wo.number = true
vim.o.winborder = "single"
vim.o.autoread = true
vim.o.relativenumber = true
vim.o.clipboard = 'unnamedplus'
vim.o.wrap = false
vim.o.linebreak = true
vim.o.mouse = 'a'
vim.o.autoindent = true
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.shiftwidth = 2
vim.o.tabstop = 2
vim.o.softtabstop = 2
vim.o.expandtab = true
vim.o.scrolloff = 4
vim.o.sidescrolloff = 8
vim.o.cursorline = false
vim.o.splitbelow = true
vim.o.splitright = true
vim.o.hlsearch = false
vim.o.showmode = false
vim.opt.termguicolors = true
vim.o.whichwrap = 'bs<>[]hl'
vim.o.numberwidth = 4
vim.o.swapfile = false
vim.o.smartindent = true
vim.o.showtabline = 2
vim.o.backspace = 'indent,eol,start'
vim.o.pumheight = 10
vim.o.conceallevel = 0
vim.wo.signcolumn = 'yes'
vim.o.fileencoding = 'utf-8'
vim.o.cmdheight = 1
vim.o.breakindent = true
vim.o.updatetime = 250
vim.o.timeoutlen = 300
vim.o.backup = false
vim.o.writebackup = false
vim.o.undofile = true
vim.o.completeopt = 'menuone,noselect'
vim.opt.shortmess:append 'c'
vim.opt.iskeyword:append '-'
vim.opt.formatoptions:remove { 'c', 'r', 'o' }
vim.opt.runtimepath:remove '/usr/share/vim/vimfiles'
+36 -23
View File
@@ -1,44 +1,57 @@
-- Leader Map
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
local opts = { noremap = true, silent = true }
-- Improvement to up and down movements
vim.keymap.set('n', '<C-d>', '<C-d>zz', opts)
vim.keymap.set('n', '<C-u>', '<C-u>zz', opts)
-- Movement
-- Resize with arrows
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result (centered)" })
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result (centered)" })
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Half page down (centered)" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Half page up (centered)" })
vim.keymap.set("n", "<A-j>", ":m .+1<CR>==", { desc = "Move line down" })
vim.keymap.set("n", "<A-k>", ":m .-2<CR>==", { desc = "Move line up" })
vim.keymap.set("v", "<A-j>", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
vim.keymap.set("v", "<A-k>", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
-- Split Navigation
vim.keymap.set('n', '<leader>vs', '<C-w>v', { desc = 'Split window vertically' })
vim.keymap.set('n', '<leader>hs', '<C-w>s', { desc = 'Split window horizontally' })
vim.keymap.set('n', '<leader>es', '<C-w>=', { desc = 'Equalize splits' })
vim.keymap.set('n', '<leader>xs', ':close<CR>', { desc = 'Close split' })
vim.keymap.set('n', '<C-k>', ':wincmd k<CR>', opts)
vim.keymap.set('n', '<C-j>', ':wincmd j<CR>', opts)
vim.keymap.set('n', '<C-h>', ':wincmd h<CR>', opts)
vim.keymap.set('n', '<C-l>', ':wincmd l<CR>', opts)
vim.keymap.set('n', '<Up>', ':resize -2<CR>', opts)
vim.keymap.set('n', '<Down>', ':resize +2<CR>', opts)
vim.keymap.set('n', '<Left>', ':vertical resize -2<CR>', opts)
vim.keymap.set('n', '<Right>', ':vertical resize +2<CR>', opts)
-- Window management
vim.keymap.set('n', '<leader>vs', '<C-w>v', { desc = 'Split window vertically' }) -- split window vertically
vim.keymap.set('n', '<leader>hs', '<C-w>s', { desc = 'Split window horizontally' }) -- split window horizontally
vim.keymap.set('n', '<leader>es', '<C-w>=', { desc = 'Equalize splits' }) -- make split windows equal width & height
vim.keymap.set('n', '<leader>xs', ':close<CR>', { desc = 'Close split' }) -- close current split window
-- Buffer Navigation
-- Navigate between splits
vim.keymap.set('n', '<C-k>', ':wincmd k<CR>', opts)
vim.keymap.set('n', '<C-j>', ':wincmd j<CR>', opts)
vim.keymap.set('n', '<C-h>', ':wincmd h<CR>', opts)
vim.keymap.set('n', '<C-l>', ':wincmd l<CR>', opts)
-- Toggle line wrapping
vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
-- Stay in indent mode
vim.keymap.set('v', '<', '<gv', opts)
vim.keymap.set('v', '>', '>gv', opts)
vim.keymap.set("n", "<leader>bn", ":bnext<CR>", { desc = "Next buffer" })
vim.keymap.set("n", "<leader>bp", ":bprevious<CR>", { desc = "Previous buffer" })
-- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
-- Greatest remap ever
-- Convenience
vim.keymap.set({ "n", "v" }, "<leader>d", '"_d', { desc = "Delete without yanking" })
vim.keymap.set("x", "<leader>p", [["_dP]], { desc = 'Paste previously yanked' })
vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
vim.keymap.set('v', '<', '<gv', opts)
vim.keymap.set('v', '>', '>gv', opts)
vim.keymap.set("n", "<leader>c", ":nohlsearch<CR>", { desc = "Clear search highlights" })
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and keep cursor position" })
vim.keymap.set("n", "<leader>rc", ":e $MYVIMRC<CR>", { desc = "Edit config" })
vim.keymap.set("n", "<leader>rl", ":so $MYVIMRC<CR>", { desc = "Reload config" })
+97
View File
@@ -0,0 +1,97 @@
-- Theme
vim.cmd.colorscheme("lunaperche")
-- Basic
vim.wo.number = true
vim.o.relativenumber = true
vim.o.cursorline = true
vim.o.wrap = false
vim.o.scrolloff = 10
vim.o.sidescrolloff = 8
-- Indentation
vim.o.tabstop = 2
vim.o.softtabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.smartindent = true
vim.o.autoindent = true
-- Search
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.autoindent = true
-- Visual
vim.o.winborder = "single"
vim.o.showmode = false
vim.o.termguicolors = true
vim.o.signcolumn = "yes"
vim.o.showmatch = true
vim.o.matchtime = 2
vim.o.cmdheight = 1
vim.o.completeopt = "menuone,noinsert,noselect"
vim.o.pumheight = 10
vim.opt.concealcursor = ""
vim.o.lazyredraw = true
vim.o.synmaxcol = 300
-- File
vim.o.backup = false
vim.o.writebackup = false
vim.o.swapfile = false
vim.o.undofile = true
vim.o.undodir = vim.fn.expand("~/.vim/undofir")
vim.o.updatetime = 300
vim.o.timeoutlen = 500
vim.o.ttimeoutlen = 0
vim.o.autoread = true
vim.o.autowrite = false
-- Behavior
vim.o.hidden = true
vim.o.errorbells = true
vim.o.backspace = "indent,eol,start"
vim.o.autochdir = false
vim.o.selection = "exclusive"
vim.o.mouse = "a"
vim.o.modifiable = true
vim.o.encoding = "UTF-8"
vim.opt.clipboard:append 'unnamedplus'
vim.opt.iskeyword:append '-'
vim.opt.path:append '**'
-- Folding
vim.o.foldmethod = "expr"
vim.o.foldexpr = "nvim_treesitter#foldexpr()"
vim.o.foldlevel = 99
-- Split Behavior
vim.o.splitbelow = true
vim.o.splitright = true
-- Command Line Completion
vim.o.wildmenu = true
vim.o.wildmode = "longest:full,full"
-- Performance
vim.o.redrawtime = 10000
vim.o.maxmempattern = 20000
-- Undo Directory
local undodir = vim.fn.expand("~/.vim/undodir")
if vim.fn.isdirectory(undodir) == 0 then
vim.fn.mkdir(undodir, "p")
end
-26
View File
@@ -1,26 +0,0 @@
return {
'goolord/alpha-nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
},
config = function()
local alpha = require 'alpha'
local dashboard = require 'alpha.themes.startify'
dashboard.section.header.val = {
[[ ]],
[[  ]],
[[ ████ ██████ █████ ██ ]],
[[ ███████████ █████  ]],
[[ █████████ ███████████████████ ███ ███████████ ]],
[[ █████████ ███ █████████████ █████ ██████████████ ]],
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
[[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]],
[[ ]],
}
alpha.setup(dashboard.opts)
end,
}
+2 -2
View File
@@ -1,9 +1,9 @@
return {
'folke/tokyonight.nvim',
'rebelot/kanagawa.nvim',
lazy = false,
priority = 1000,
init = function()
vim.cmd.colorscheme 'tokyonight-night'
vim.cmd.colorscheme 'kanagawa-dragon'
vim.cmd.hi 'Comment gui=none'
end,
}
-119
View File
@@ -1,119 +0,0 @@
return {
{
'mfussenegger/nvim-dap',
dependencies = {
'rcarriga/nvim-dap-ui',
'theHamsta/nvim-dap-virtual-text',
'nvim-neotest/nvim-nio',
'williamboman/mason.nvim',
},
config = function()
local dap = require 'dap'
local ui = require 'dapui'
require('dapui').setup()
require('nvim-dap-virtual-text').setup()
dap.adapters.chrome = {
type = 'executable',
command = 'node',
args = { os.getenv 'HOME' .. '/.local/share/nvim/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js' },
}
dap.adapters.delve = {
type = 'server',
host = '127.0.0.1',
port = 38697,
}
dap.configurations.javascriptreact = {
{
type = 'chrome',
request = 'launch',
name = 'Launch in Brave',
webRoot = '${workspaceFolder}',
runtimeExecutable = '/snap/bin/brave',
sourceMaps = true,
userDataDir = true,
url = function()
local co = coroutine.running()
return coroutine.create(function()
vim.ui.input({
prompt = 'Enter URL: ',
default = 'http://localhost:3000',
}, function(url)
if url == nil or url == '' then
return
else
coroutine.resume(co, url)
end
end)
end)
end,
},
}
dap.configurations.typescriptreact = {
{
type = 'chrome',
request = 'launch',
name = 'Launch in Brave',
webRoot = '${workspaceFolder}',
runtimeExecutable = '/snap/bin/brave',
sourceMaps = true,
userDataDir = true,
url = function()
local co = coroutine.running()
return coroutine.create(function()
vim.ui.input({
prompt = 'Enter URL: ',
default = 'http://localhost:3000',
}, function(url)
if url == nil or url == '' then
return
else
coroutine.resume(co, url)
end
end)
end)
end,
},
}
dap.configurations.go = {
{
type = 'delve',
name = 'Debug',
mode = 'remote',
request = 'attach',
program = '${file}',
},
}
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint)
vim.keymap.set('n', '<leader>gb', dap.run_to_cursor)
-- Eval var under cursor
vim.keymap.set('n', '<leader>?', function()
require('dapui').eval(nil, { enter = true })
end)
vim.keymap.set('n', '<F1>', dap.continue)
vim.keymap.set('n', '<F2>', dap.step_into)
vim.keymap.set('n', '<F3>', dap.step_over)
vim.keymap.set('n', '<F4>', dap.step_out)
vim.keymap.set('n', '<F5>', dap.step_back)
vim.keymap.set('n', '<F6>', dap.restart)
dap.listeners.before.attach.dapui_config = function()
ui.open()
end
dap.listeners.before.launch.dapui_config = function()
ui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
ui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
ui.close()
end
end,
},
}
-1
View File
@@ -40,7 +40,6 @@ return {
require('lualine').setup {
options = {
icons_enabled = true,
theme = 'nord', -- Set theme based on environment variable
-- Some useful glyphs:
-- https://www.nerdfonts.com/cheat-sheet
--        
-14
View File
@@ -29,18 +29,4 @@ return {
opts = { signs = false },
},
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
{
'github/copilot.vim',
config = function()
vim.keymap.set('n', '<leader>ec', ':Copilot enable<CR>', { desc = 'Enable Copilot', noremap = false, silent = true })
vim.keymap.set('n', '<leader>dc', ':Copilot disable<CR>', { desc = 'Disable Copilot', noremap = false, silent = true })
vim.keymap.set('i', '<C-g>', 'copilot#Accept("\\<CR>")', {
expr = true,
replace_keycodes = false,
silent = true,
noremap = true,
})
vim.g.copilot_no_tab_map = true
end,
},
}