dotfiles

my active dotfiles
git clone git://git.jakekoroman.com/dotfiles
Log | Files | Refs | README

commit f42b5230a84b2bbdb264e4ee98a3878fd610b701
parent 059b9b883a346be8cc2a0311088ef89257704854
Author: Jake Koroman <jake@jakekoroman.com>
Date:   Fri,  3 Oct 2025 13:26:13 -0400

add nvim.

Diffstat:
M.gitignore | 1+
Anvim/ftplugin/lua.lua | 2++
Anvim/init.lua | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Anvim/lua/plugins/catppuccin.lua | 20++++++++++++++++++++
Anvim/lua/plugins/nvim-mini.lua | 9+++++++++
Anvim/lua/plugins/telescope.lua | 47+++++++++++++++++++++++++++++++++++++++++++++++
Anvim/lua/plugins/treesitter.lua | 12++++++++++++
7 files changed, 168 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -8,3 +8,4 @@ emacs/image-dired/ emacs/recentf emacs/tramp emacs/transient +nvim/lazy-lock.json diff --git a/nvim/ftplugin/lua.lua b/nvim/ftplugin/lua.lua @@ -0,0 +1,2 @@ +vim.o.shiftwidth = 2 +vim.o.softtabstop = 2 diff --git a/nvim/init.lua b/nvim/init.lua @@ -0,0 +1,77 @@ +vim.o.relativenumber = true +vim.o.expandtab = true +vim.o.shiftwidth = 4 +vim.o.softtabstop = 4 +vim.o.mouse = 'a' +vim.o.makeprg = './build.sh' +vim.o.clipboard = 'unnamedplus' +vim.o.breakindent = true +vim.o.ignorecase = true +vim.o.smartcase = true +vim.o.signcolumn = 'auto' +vim.o.cursorline = false +vim.o.scrolloff = 10 +vim.o.confirm = true +vim.o.autochdir = false +vim.o.cinoptions = 'l1,t0,(0,:0' + +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +local colemakdh_binds = { + -- movement + { modes = { 'n', 'o', 'x' }, lhs = 'n', rhs = 'h', }, + { modes = { 'n', 'o', 'x' }, lhs = 'e', rhs = 'j', }, + { modes = { 'n', 'o', 'x' }, lhs = 'i', rhs = 'k', }, + { modes = { 'n', 'o', 'x' }, lhs = 'o', rhs = 'l', }, + { modes = { 'n' }, lhs = 'N', rhs = '^', }, + { modes = { 'n' }, lhs = 'O', rhs = '$', }, + + -- closing the loop of overwritten binds + { modes = { 'n', 'o', 'x'}, lhs = 'j', rhs = 'e', }, + { modes = { 'n', 'o', 'x'}, lhs = 'k', rhs = 'n', }, + { modes = { 'n', 'o', 'x'}, lhs = 'K', rhs = 'N', }, + { modes = { 'n', 'o', 'x'}, lhs = 'h', rhs = 'o', }, + { modes = { 'n', 'o', 'x'}, lhs = 'H', rhs = 'O', }, + { modes = { 'n', 'o', 'x'}, lhs = 'l', rhs = 'i', }, + { modes = { 'n', 'o', 'x'}, lhs = 'L', rhs = 'I', }, +} + +for _, bind in ipairs(colemakdh_binds) do + for _, mode in ipairs(bind.modes) do + vim.keymap.set(mode, bind.lhs, bind.rhs) + end +end + +-- disable man mode remaps +vim.g.no_man_maps = 1 + +vim.keymap.set('n', '<M-e>', '<cmd>cnext<CR>') +vim.keymap.set('n', '<M-i>', '<cmd>cprev<CR>') + +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.hl.on_yank() + end, +}) + +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } + if vim.v.shell_error ~= 0 then + error('Error cloning lazy.nvim:\n' .. out) + end +end + +local rtp = vim.opt.runtimepath +rtp:prepend(lazypath) + +require('lazy').setup({ + require 'plugins.nvim-mini', + require 'plugins.catppuccin', + require 'plugins.treesitter', + require 'plugins.telescope', +}) diff --git a/nvim/lua/plugins/catppuccin.lua b/nvim/lua/plugins/catppuccin.lua @@ -0,0 +1,20 @@ +return { + 'catppuccin/nvim', + name = "catppuccin", + config = function () + require('catppuccin').setup({ + flavor = 'auto', + background = { + light = 'latte', + dark = 'mocha', + }, + transparent_background = true, + no_italic = true, + styles = { + conditionals = {}, + }, + auto_integrations = true, + }) + vim.cmd.colorscheme 'catppuccin' + end, +} diff --git a/nvim/lua/plugins/nvim-mini.lua b/nvim/lua/plugins/nvim-mini.lua @@ -0,0 +1,9 @@ +return { + 'nvim-mini/mini.nvim', + version = false, + config = function () + require('mini.surround').setup() + require('mini.ai').setup { n_lines = 500 } + require('mini.statusline').setup() + end +} diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua @@ -0,0 +1,47 @@ +return { + 'nvim-telescope/telescope.nvim', + event = 'VimEnter', + dependencies = { + 'nvim-lua/plenary.nvim', + { + 'nvim-telescope/telescope-fzf-native.nvim', + build = 'make' + }, + 'nvim-telescope/telescope-ui-select.nvim', + }, + config = function() + require('telescope').setup { + extensions = { + ['ui-select'] = { + require('telescope.themes').get_dropdown(), + }, + }, + } + + pcall(require('telescope').load_extension, 'fzf') + pcall(require('telescope').load_extension, 'ui-select') + + local builtin = require 'telescope.builtin' + vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) + vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) + vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) + vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) + vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) + vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) + vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' }) + vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) + vim.keymap.set('n', '<leader>,', builtin.buffers) + vim.keymap.set('n', '<leader>.', builtin.find_files) + vim.keymap.set('n', '<leader>>', function() + builtin.find_files { no_ignore = true } + end, { desc = 'find all files' }) + + vim.keymap.set('n', '<leader>sn', function() + builtin.find_files { cwd = vim.fn.stdpath 'config' } + end, { desc = '[S]earch [N]eovim files' } ) + + vim.keymap.set('n', '<leader>sm', function() + builtin.man_pages { sections = { 'ALL' } } + end, { desc = '[S]earch [M]an pages' }) + end, +} diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,12 @@ +return { + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + main = 'nvim-treesitter.configs', + opts = { + ensure_installed = { 'bash', 'c', 'zig', 'diff', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, + auto_install = true, + highlight = { + enable = true, + }, + }, +}