From 3a2db931e02a80dcde7f2efbffba9bef34388c59 Mon Sep 17 00:00:00 2001 From: James Bulman Date: Wed, 24 Sep 2025 17:05:32 +0100 Subject: [PATCH] Added some simple key mappings Simple buffer-based "auto" complete Auto-trim trailing whitespace on write --- config/nvim/init.lua | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 3fdee65..a666e7d 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -1,3 +1,6 @@ +local MAP = vim.keymap.set +local AUTOCMD = vim.api.nvim_create_autocmd + vim.cmd("colorscheme scheme") vim.cmd("filetype indent on") @@ -52,4 +55,46 @@ vim.opt.formatoptions:append("/") vim.opt.cinkeys:append("0=break") vim.opt.listchars:append({ lead = "." }) +-------------------------------------------------------------------------------- +-- Functions +-------------------------------------------------------------------------------- +-- Buffers + +local function BufferComplete() + local pos = vim.api.nvim_win_get_cursor(0) + local line = vim.fn.getline('.') + local ident = line:sub(1, pos[2]):match("[^ \t]*$") + + return #ident ~= 0 and "" or "" +end + +local function TrimBuffer() + local view = vim.fn.winsaveview() + vim.cmd("%s/\\s\\+$//e") + vim.fn.winrestview(view) +end + +-- Input mappings + +vim.g.mapleader = " " + +MAP("n", "", "mz:m+") +MAP("n", "", "mz:m-2") +MAP("n", "", ":nohl") +MAP("n", "n", ":cnext") +MAP("n", "N", ":cprev") +MAP("n", "J", "}") +MAP("v", "J", "}") +MAP("n", "K", "{") +MAP("v", "K", "{") +MAP("n", "k", ":Man") +MAP("i", "", "<<") +MAP("i", "", BufferComplete, { expr = true }) + +-- Autocommands + +AUTOCMD('BufEnter', { command = "let b:man_default_sects=\"2,3\"", pattern = "*.c" }) +AUTOCMD('BufReadPost', { command = "setlocal nornu", pattern = "quickfix" }) + +AUTOCMD('BufWritePre', { callback = TrimBuffer, pattern = "*" })