mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2024-11-10 02:39:40 +00:00
Use utility module for keymap/abbrev functions
This commit is contained in:
parent
950d19e1a0
commit
768764a899
|
@ -1,26 +1,3 @@
|
||||||
local vim = require("vim")
|
|
||||||
local fn = vim.fn
|
|
||||||
|
|
||||||
-- Define some global functions which can then be called
|
|
||||||
-- in the other required scripts
|
|
||||||
|
|
||||||
-- Load an arbitrary .vim or .lua file
|
|
||||||
function LoadFile(file_path)
|
|
||||||
local extension = file_path:match("^.+(%..+)$")
|
|
||||||
local run_cmd
|
|
||||||
if (extension == ".vim") then run_cmd = "source" else run_cmd = "luafile" end
|
|
||||||
fn.execute(run_cmd .. " " .. file_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Define a key mapping
|
|
||||||
function Keymap(mode, shortcut, command, options)
|
|
||||||
-- Assume silent, noremap unless specified otherwise
|
|
||||||
local opts = {noremap=true, silent=true}
|
|
||||||
|
|
||||||
if options then opts = vim.tbl_extend("force", opts, options) end
|
|
||||||
vim.api.nvim_set_keymap(mode, shortcut, command, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Require additional scripts which contain individual configurations
|
-- Require additional scripts which contain individual configurations
|
||||||
|
|
||||||
require "options"
|
require "options"
|
||||||
|
|
|
@ -1,27 +1,9 @@
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local cmd = vim.cmd
|
local fn = vim.fn
|
||||||
|
local m = require("utility.mappings")
|
||||||
|
|
||||||
-- I'm not aware of abbreviations having direct lua support like mappings,
|
local function cabbrev(input, result, reabbrev)
|
||||||
-- though I'm not certain on that and may be completely wrong, if there is
|
m.abbrev("c", input, result, reabbrev)
|
||||||
-- a better way, this is opened to pull requests.
|
|
||||||
-- TODO: Check direct abbrev lua support
|
|
||||||
|
|
||||||
-- Make these function definitions global as they could be reused
|
|
||||||
-- in plugin specific scripts or in other places.
|
|
||||||
function abbrev(mode, input, result, reabbrev)
|
|
||||||
-- Assume noreabbrev unless specified otherwise
|
|
||||||
reabbrev = reabbrev or false
|
|
||||||
local command
|
|
||||||
if reabbrev then
|
|
||||||
command = mode .. "abbrev"
|
|
||||||
else
|
|
||||||
command = mode .. "noreabbrev"
|
|
||||||
end
|
|
||||||
cmd(command .. " " .. input .. " " .. result)
|
|
||||||
end
|
|
||||||
|
|
||||||
function cabbrev(input, result, reabbrev)
|
|
||||||
abbrev("c", input, result, reabbrev)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Invalid case abbreviations
|
-- Invalid case abbreviations
|
||||||
|
@ -40,6 +22,5 @@ cabbrev("Qall!", "qall!")
|
||||||
cabbrev("w!!", "w !sudo tee > /dev/null %")
|
cabbrev("w!!", "w !sudo tee > /dev/null %")
|
||||||
|
|
||||||
-- Reload lua configuration
|
-- Reload lua configuration
|
||||||
-- TODO: Get the path dynamically
|
local initlua = fn.stdpath("config") .. "init.lua"
|
||||||
cabbrev("reload", "luafile ~/.config/nvim/init.lua")
|
cabbrev("reload", "luafile " .. initlua)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
local m = require("utility.mappings")
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
|
|
||||||
|
@ -6,86 +7,86 @@ local g = vim.g
|
||||||
g.mapleader = "\\"
|
g.mapleader = "\\"
|
||||||
|
|
||||||
-- Unmap arrow keys in normal mode to remove bad habits
|
-- Unmap arrow keys in normal mode to remove bad habits
|
||||||
Keymap("n", "<Down>", "<nop>")
|
m.keymap("n", "<Down>", "<nop>")
|
||||||
Keymap("n", "<Left>", "<nop>")
|
m.keymap("n", "<Left>", "<nop>")
|
||||||
Keymap("n", "<Right>", "<nop>")
|
m.keymap("n", "<Right>", "<nop>")
|
||||||
Keymap("n", "<Up>", "<nop>")
|
m.keymap("n", "<Up>", "<nop>")
|
||||||
|
|
||||||
-- Tab navigation
|
-- Tab navigation
|
||||||
Keymap("n", "<Tab>", "gt")
|
m.keymap("n", "<Tab>", "gt")
|
||||||
Keymap("n", "<S-Tab>", "gT")
|
m.keymap("n", "<S-Tab>", "gT")
|
||||||
Keymap("n", "<A-t>", ":tabnew<CR>")
|
m.keymap("n", "<A-t>", ":tabnew<CR>")
|
||||||
Keymap("n", "<A-2>", ":tabmove +<CR>")
|
m.keymap("n", "<A-2>", ":tabmove +<CR>")
|
||||||
Keymap("n", "<A-1>", ":tabmove -<CR>")
|
m.keymap("n", "<A-1>", ":tabmove -<CR>")
|
||||||
Keymap("n", "<A-p>", ":tabp<CR>")
|
m.keymap("n", "<A-p>", ":tabp<CR>")
|
||||||
Keymap("n", "<A-n>", ":tabn<CR>")
|
m.keymap("n", "<A-n>", ":tabn<CR>")
|
||||||
Keymap("n", "<A-c>", ":tabc<CR>")
|
m.keymap("n", "<A-c>", ":tabc<CR>")
|
||||||
|
|
||||||
-- Buffer navigation
|
-- Buffer navigation
|
||||||
Keymap("n", "<A-N>", ":bn<CR>")
|
m.keymap("n", "<A-N>", ":bn<CR>")
|
||||||
Keymap("n", "<A-P>", ":bp<CR>")
|
m.keymap("n", "<A-P>", ":bp<CR>")
|
||||||
Keymap("n", "<A-d>", ":bd<CR>")
|
m.keymap("n", "<A-d>", ":bd<CR>")
|
||||||
|
|
||||||
-- Set splits navigation to just ALT + hjkl
|
-- Set splits navigation to just ALT + hjkl
|
||||||
Keymap("n", "<C-h>", "<C-w>h")
|
m.keymap("n", "<C-h>", "<C-w>h")
|
||||||
Keymap("n", "<C-j>", "<C-w>j")
|
m.keymap("n", "<C-j>", "<C-w>j")
|
||||||
Keymap("n", "<C-k>", "<C-w>k")
|
m.keymap("n", "<C-k>", "<C-w>k")
|
||||||
Keymap("n", "<C-l>", "<C-w>l")
|
m.keymap("n", "<C-l>", "<C-w>l")
|
||||||
|
|
||||||
-- Split size adjusting
|
-- Split size adjusting
|
||||||
Keymap("n", "<C-Left>", ":vertical resize +3<CR>")
|
m.keymap("n", "<C-Left>", ":vertical resize +3<CR>")
|
||||||
Keymap("n", "<C-Right>", ":vertical resize -3<CR>")
|
m.keymap("n", "<C-Right>", ":vertical resize -3<CR>")
|
||||||
Keymap("n", "<C-Up>", ":resize +3<CR>")
|
m.keymap("n", "<C-Up>", ":resize +3<CR>")
|
||||||
Keymap("n", "<C-Down>", ":resize -3<CR>")
|
m.keymap("n", "<C-Down>", ":resize -3<CR>")
|
||||||
|
|
||||||
-- Define some common shortcuts
|
-- Define some common shortcuts
|
||||||
Keymap("n", "<C-s>", ":w<CR>")
|
m.keymap("n", "<C-s>", ":w<CR>")
|
||||||
Keymap("i", "<C-s>", "<Esc>:w<CR>i")
|
m.keymap("i", "<C-s>", "<Esc>:w<CR>i")
|
||||||
Keymap("n", "<C-z>", ":undo<CR>")
|
m.keymap("n", "<C-z>", ":undo<CR>")
|
||||||
Keymap("n", "<C-y>", ":redo<CR>")
|
m.keymap("n", "<C-y>", ":redo<CR>")
|
||||||
|
|
||||||
-- Terminal
|
-- Terminal
|
||||||
Keymap("n", "<C-t>", ":split term://zsh<CR>:resize -7<CR>i")
|
m.keymap("n", "<C-t>", ":split term://zsh<CR>:resize -7<CR>i")
|
||||||
Keymap("n", "<C-A-t>", ":vnew term://zsh<CR>i")
|
m.keymap("n", "<C-A-t>", ":vnew term://zsh<CR>i")
|
||||||
Keymap("n", "<A-T>", ":tabnew term://zsh<CR>i")
|
m.keymap("n", "<A-T>", ":tabnew term://zsh<CR>i")
|
||||||
Keymap("t", "<Esc>", "<C-\\><C-n>")
|
m.keymap("t", "<Esc>", "<C-\\><C-n>")
|
||||||
|
|
||||||
-- Use space for folding/unfolding sections
|
-- Use space for folding/unfolding sections
|
||||||
Keymap("n", "<space>", "za")
|
m.keymap("n", "<space>", "za")
|
||||||
Keymap("v", "<space>", "zf")
|
m.keymap("v", "<space>", "zf")
|
||||||
|
|
||||||
-- Use shift to quickly move 10 lines up/down
|
-- Use shift to quickly move 10 lines up/down
|
||||||
Keymap("n", "K", "10k")
|
m.keymap("n", "K", "10k")
|
||||||
Keymap("n", "J", "10j")
|
m.keymap("n", "J", "10j")
|
||||||
|
|
||||||
-- Enable/Disable auto commenting
|
-- Enable/Disable auto commenting
|
||||||
Keymap("n", "<leader>c", ":setlocal formatoptions-=cro<CR>")
|
m.keymap("n", "<leader>c", ":setlocal formatoptions-=cro<CR>")
|
||||||
Keymap("n", "<leader>C", ":setlocal formatoptions+=cro<CR>")
|
m.keymap("n", "<leader>C", ":setlocal formatoptions+=cro<CR>")
|
||||||
|
|
||||||
-- Don't leave visual mode after indenting
|
-- Don't leave visual mode after indenting
|
||||||
Keymap("v", "<", "<gv")
|
m.keymap("v", "<", "<gv")
|
||||||
Keymap("v", ">", ">gv")
|
m.keymap("v", ">", ">gv")
|
||||||
|
|
||||||
-- System clipboard copying
|
-- System clipboard copying
|
||||||
Keymap("v", "<C-c>", '"+y')
|
m.keymap("v", "<C-c>", '"+y')
|
||||||
|
|
||||||
-- Alias replace all
|
-- Alias replace all
|
||||||
Keymap("n", "<A-s>", ":%s//gI<Left><Left><Left>", {silent=false})
|
m.keymap("n", "<A-s>", ":%s//gI<Left><Left><Left>", {silent=false})
|
||||||
|
|
||||||
-- Stop search highlight with Esc
|
-- Stop search highlight with Esc
|
||||||
Keymap("n", "<esc>", ":noh<CR>")
|
m.keymap("n", "<esc>", ":noh<CR>")
|
||||||
|
|
||||||
-- Start spell-check
|
-- Start spell-check
|
||||||
Keymap("n", "<leader>s", ":setlocal spell! spelllang=en_us<CR>")
|
m.keymap("n", "<leader>s", ":setlocal spell! spelllang=en_us<CR>")
|
||||||
|
|
||||||
-- Run shell check
|
-- Run shell check
|
||||||
Keymap("n", "<leader>p", ":!shellckeck %<CR>")
|
m.keymap("n", "<leader>p", ":!shellckeck %<CR>")
|
||||||
|
|
||||||
-- Compile opened file (using custom script)
|
-- Compile opened file (using custom script)
|
||||||
Keymap("n", "<A-c>", ":w | !comp <c-r>%<CR>")
|
m.keymap("n", "<A-c>", ":w | !comp <c-r>%<CR>")
|
||||||
|
|
||||||
-- Close all opened buffers
|
-- Close all opened buffers
|
||||||
Keymap("n", "<leader>Q", ":bufdo bdelete<CR>")
|
m.keymap("n", "<leader>Q", ":bufdo bdelete<CR>")
|
||||||
|
|
||||||
-- Don't set the incredibely annoying mappings that trigger dynamic SQL
|
-- Don't set the incredibely annoying mappings that trigger dynamic SQL
|
||||||
-- completion with dbext and keeps on freezing vim whenever pressed with
|
-- completion with dbext and keeps on freezing vim whenever pressed with
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
local m = require("utility.mappings")
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local cmd = vim.cmd
|
local cmd = vim.cmd
|
||||||
|
|
||||||
-- Set up shortcuts to quickly comment some code
|
-- Set up shortcuts to quickly comment some code
|
||||||
Keymap("n", "<A-/>", ":Commentary<CR>")
|
m.keymap("n", "<A-/>", ":Commentary<CR>")
|
||||||
Keymap("v", "<A-/>", ":Commentary<CR>")
|
m.keymap("v", "<A-/>", ":Commentary<CR>")
|
||||||
|
|
||||||
-- Set up comments for unhandled file types
|
-- Set up comments for unhandled file types
|
||||||
cmd[[autocmd FileType apache setlocal commentstring=#\ %s]]
|
cmd[[autocmd FileType apache setlocal commentstring=#\ %s]]
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
local m = require("utility.mappings")
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local cmd = vim.cmd
|
local cmd = vim.cmd
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
|
@ -26,10 +27,10 @@ command! -bang -nargs=? -complete=dir AllFiles
|
||||||
\ call fzf#run(fzf#wrap('allfiles', fzf#vim#with_preview({ 'dir': <q-args>, 'sink': 'e', 'source': 'rg --files --hidden --no-ignore' }), <bang>0))
|
\ call fzf#run(fzf#wrap('allfiles', fzf#vim#with_preview({ 'dir': <q-args>, 'sink': 'e', 'source': 'rg --files --hidden --no-ignore' }), <bang>0))
|
||||||
]]
|
]]
|
||||||
|
|
||||||
Keymap("n", "<leader>f", ":Files<CR>")
|
m.keymap("n", "<leader>f", ":Files<CR>")
|
||||||
Keymap("n", "<leader>F", ":AllFiles<CR>")
|
m.keymap("n", "<leader>F", ":AllFiles<CR>")
|
||||||
Keymap("n", "<leader>b", ":Buffers<CR>")
|
m.keymap("n", "<leader>b", ":Buffers<CR>")
|
||||||
Keymap("n", "<leader>h", ":History<CR>")
|
m.keymap("n", "<leader>h", ":History<CR>")
|
||||||
Keymap("n", "<leader>r", ":Rg<CR>")
|
m.keymap("n", "<leader>r", ":Rg<CR>")
|
||||||
Keymap("n", "<leader>R", ":Rg<space>", { silent = false })
|
m.keymap("n", "<leader>R", ":Rg<space>", { silent = false })
|
||||||
Keymap("n", "<leader>gb", ":GBranches<CR>")
|
m.keymap("n", "<leader>gb", ":GBranches<CR>")
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
local m = require("utility.mappings")
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
local fn = vim.fn
|
local fn = vim.fn
|
||||||
|
@ -5,7 +6,7 @@ local cmd = vim.cmd
|
||||||
|
|
||||||
-- Implement manual NERDTreeToggle, but use NERDTreeFind for openning.
|
-- Implement manual NERDTreeToggle, but use NERDTreeFind for openning.
|
||||||
-- This makes NERDTree open with the current file pre-selected
|
-- This makes NERDTree open with the current file pre-selected
|
||||||
Keymap("n", "<C-n>", "g:NERDTree.IsOpen() ? ':NERDTreeClose<CR>' : @% == '' ? ':NERDTree<CR>' : ':NERDTreeFind<CR>'", {expr=true})
|
m.keymap("n", "<C-n>", "g:NERDTree.IsOpen() ? ':NERDTreeClose<CR>' : @% == '' ? ':NERDTree<CR>' : ':NERDTreeFind<CR>'", {expr=true})
|
||||||
|
|
||||||
g.NERDTreeShowHidden = 1
|
g.NERDTreeShowHidden = 1
|
||||||
g.NERDTreeMinimalUI = 1
|
g.NERDTreeMinimalUI = 1
|
||||||
|
@ -31,6 +32,8 @@ autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in
|
||||||
]]
|
]]
|
||||||
|
|
||||||
-- Exit Vim if NERDTree is the only window left.
|
-- Exit Vim if NERDTree is the only window left.
|
||||||
|
-- WARNING: This causes issues when closing buffers
|
||||||
|
--[[
|
||||||
cmd[[
|
cmd[[
|
||||||
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() |
|
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() |
|
||||||
\ quit | endif
|
\ quit | endif
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
|
local m = require("utility.mappings")
|
||||||
local vim = require("vim")
|
local vim = require("vim")
|
||||||
local cmd = vim.cmd
|
local cmd = vim.cmd
|
||||||
|
|
||||||
-- Define dap mappings (:help dap-mapping)
|
-- Define dap mappings (:help dap-mapping)
|
||||||
local prefix = ":lua require('dap')."
|
local prefix = ":lua require('dap')."
|
||||||
Keymap("n", "<F5>", prefix .. "continue()<CR>")
|
m.keymap("n", "<F5>", prefix .. "continue()<CR>")
|
||||||
Keymap("n", "<F10>", prefix .. "step_over()<CR>")
|
m.keymap("n", "<F10>", prefix .. "step_over()<CR>")
|
||||||
Keymap("n", "<F11>", prefix .. "step_into()<CR>")
|
m.keymap("n", "<F11>", prefix .. "step_into()<CR>")
|
||||||
Keymap("n", "<leader><F11>", prefix .. "step_out()<CR>")
|
m.keymap("n", "<leader><F11>", prefix .. "step_out()<CR>")
|
||||||
Keymap("n", "<F9>", prefix .. "toggle_breakpoint()<CR>")
|
m.keymap("n", "<F9>", prefix .. "toggle_breakpoint()<CR>")
|
||||||
Keymap("n", "<leader><F9>", prefix .. "set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>")
|
m.keymap("n", "<leader><F9>", prefix .. "set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>")
|
||||||
Keymap("n", "<F8>", prefix .. "set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>")
|
m.keymap("n", "<F8>", prefix .. "set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>")
|
||||||
Keymap("n", "<leader>di", prefix .. "repl.open()<CR>")
|
m.keymap("n", "<leader>di", prefix .. "repl.open()<CR>")
|
||||||
Keymap("n", "<leader>dl", prefix .. "run_last()<CR>")
|
m.keymap("n", "<leader>dl", prefix .. "run_last()<CR>")
|
||||||
|
|
||||||
-- Setup dap for python (requires nvim-dap-python plugin)
|
-- Setup dap for python (requires nvim-dap-python plugin)
|
||||||
require('dap-python').setup('/usr/bin/python') -- Path to python with `debugpy` library installed
|
require('dap-python').setup('/usr/bin/python') -- Path to python with `debugpy` library installed
|
||||||
|
@ -19,6 +20,6 @@ require('dap-python').test_runner = 'pytest' -- Use pytest to run unit tests
|
||||||
|
|
||||||
-- Python mappings
|
-- Python mappings
|
||||||
local pyprefix = ":lua require('dap-python')."
|
local pyprefix = ":lua require('dap-python')."
|
||||||
Keymap("n", "<leader>dptm", pyprefix .. "test_method()<CR>")
|
m.keymap("n", "<leader>dptm", pyprefix .. "test_method()<CR>")
|
||||||
Keymap("n", "<leader>dptc", pyprefix .. "test_class()<CR>")
|
m.keymap("n", "<leader>dptc", pyprefix .. "test_class()<CR>")
|
||||||
Keymap("v", "<leader>ds", "<ESC>" .. pyprefix .. "debug_selection()<CR>")
|
m.keymap("v", "<leader>ds", "<ESC>" .. pyprefix .. "debug_selection()<CR>")
|
||||||
|
|
29
home/.config/nvim/lua/utility/mappings.lua
Normal file
29
home/.config/nvim/lua/utility/mappings.lua
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
local vim = require("vim")
|
||||||
|
local api = vim.api
|
||||||
|
local cmd = vim.cmd
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- Define a keymap
|
||||||
|
function M.keymap(mode, shortcut, command, options)
|
||||||
|
-- Assume silent, noremap unless specified otherwise
|
||||||
|
local opts = {noremap=true, silent=true}
|
||||||
|
|
||||||
|
if options then opts = vim.tbl_extend("force", opts, options) end
|
||||||
|
api.nvim_set_keymap(mode, shortcut, command, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Define an abbreviation
|
||||||
|
function M.abbrev(mode, input, result, reabbrev)
|
||||||
|
-- Assume noreabbrev unless specified otherwise
|
||||||
|
reabbrev = reabbrev or false
|
||||||
|
local command
|
||||||
|
if reabbrev then
|
||||||
|
command = mode .. "abbrev"
|
||||||
|
else
|
||||||
|
command = mode .. "noreabbrev"
|
||||||
|
end
|
||||||
|
cmd(command .. " " .. input .. " " .. result)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
Loading…
Reference in a new issue