summaryrefslogtreecommitdiffstats
path: root/lua/conf/binds.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/conf/binds.lua165
1 files changed, 20 insertions, 145 deletions
diff --git a/lua/conf/binds.lua b/lua/conf/binds.lua
index 42c609e..2031852 100644
--- a/lua/conf/binds.lua
+++ b/lua/conf/binds.lua
@@ -1,25 +1,11 @@
-local conf = require('core.conf')
+local misc = require('core.misc')
+local map, auto = misc.map, misc.auto
-local function map(mode, bind, cmd, opts)
- opts = opts or {}
- opts['noremap'] = true
- opts['silent'] = true
-
- if type(bind) == 'table' then
- for i in pairs(bind) do
- vim.keymap.set(mode, bind[i], cmd, opts)
- end
- elseif type(bind) == 'string' then
- vim.keymap.set(mode, bind, cmd, opts)
- end
-end
-
--- vim binds ------------------------------------------------------------------
-g.mapleader = ' ' -- set leader key
+-- vim binds
+vim.g.mapleader = ' ' -- set leader key
map('x', '<leader>p', [["_dP]], { desc = 'Greatest remap of all time.' })
map('n', '<esc>', ':nohlsearch<Bar>:echo<CR>', { desc = 'Clear search.' })
-map('t', '<esc>', '<C-\\><C-n>', { desc = 'make <esc> work in terminals.' })
-- move selected text up/down
map('v', '<S-k>', ":m '<-2<CR>gv=gv", { desc = 'Move selected text up.' })
map('v', '<S-j>', ":m '>+1<CR>gv=gv", { desc = 'Move selected text down.' })
@@ -45,22 +31,7 @@ map('n', '<leader>x', function() -- execute order 111
else
vim.notify("File doesn't exist", vim.log.levels.INFO, { title = misc.appid })
end
-end)
-
--- add some keybinds to the file view (netrw)
-a.nvim_create_autocmd('FileType', {
- pattern = 'netrw',
- callback = function()
- local function bind(lhs, rhs)
- vim.keymap.set('n', lhs, rhs, { remap = true, buffer = true })
- end
- bind('h', '-^') -- Go up a directory
- bind('l', '<CR>') -- Go down a directory / open a file
- bind('.', 'gh') -- Toggle hidden files
- bind('P', '<C-w>z') -- Close preview window
- bind('<esc>', '<cmd>q<CR>') -- Close netrw
- end
-})
+end, { desc = 'toggle executable flag of the file' })
-- tabs
map('n', '[]', '<cmd>tabnew<CR>')
@@ -68,118 +39,22 @@ map('n', '][', '<cmd>tabc<CR>')
map('n', '[[', '<cmd>tabp<CR>')
map('n', ']]', '<cmd>tabn<CR>')
--- config binds ---------------------------------------------------------------
-map('n', '<leader>m', conf.configmenu, { desc = 'Neovim config manager menu', })
-
--- plugin binds ---------------------------------------------------------------
-
--- pretty lsp view
-map('n', 'gd', '<CMD>Glance definitions<CR>')
-map('n', 'gr', '<CMD>Glance references<CR>')
-map('n', 'gy', '<CMD>Glance type_definitions<CR>')
-map('n', 'gi', '<CMD>Glance implementations<CR>')
-
-if pcall(require, "treesj") then
- local treesj = require('treesj') -- treesj
- map('n', '<leader>j', treesj.toggle)
-end
-
-if pcall(require, "telescope") then
- local telebuilt = require('telescope.builtin') -- telescope
- -- local telexten = require('telescope').extensions
- map('n', '<leader>sf', telebuilt.find_files, { desc = 'Find files.' })
- map('n', '<leader>so', telebuilt.oldfiles, { desc = 'Find old files.' })
- map('n', '<leader>sg', telebuilt.git_files, { desc = 'Find git files.' })
- -- search urls in buffer
- map('n', '<leader>su', '<Cmd>UrlView<CR>', { desc = 'Find urls in buffer.' })
- -- search lsp symbols
- map('n', '<leader>ss', telebuilt.lsp_document_symbols,
- { desc = 'Find LSP Symbols.' })
- -- search for keybinds
- map('n', '<leader>sk', telebuilt.keymaps,
- { desc = 'Find nvim Keymaps.' })
- -- search for highlights
- map('n', '<leader>sh', telebuilt.highlights,
- { desc = 'Find nvim Highlights.' })
- -- search for autocommands
- map('n', '<leader>sa', telebuilt.autocommands,
- { desc = 'Find nvim Autocommands.' })
- -- search for vim options
- map('n', '<leader>sv', telebuilt.vim_options, { desc = 'Find vim options.' })
- -- search for string in project
- map('n', '<leader>sp', telebuilt.live_grep, { desc = 'Find string in project.' })
-
- -- Code Actions (requires telescope)
- if pcall(require, "actions-preview") then
- map({ "n", "v" }, "<leader>ca", require("actions-preview").code_actions, {
- desc = 'preview code actions'
- })
+-- good spell suggestion ui
+-- (stolen from https://github.com/neovim/neovim/pull/25833)
+local spell_on_choice = vim.schedule_wrap(function(_, idx)
+ if type(idx) == 'number' then
+ vim.cmd('normal! ' .. idx .. 'z=')
end
-end
-
--- todo list
-if pcall(require, "todo-comments") then
- map("n", "<leader>td", "<cmd>TodoQuickFix<CR>", { desc = 'open up list of TODO\'s' })
-end
-
--- harpoon
-if (pcall(require, 'harpoon')) then
- local harpoon = require("harpoon")
-
- map("n", "<leader>a", function()
- harpoon:list():append()
- vim.notify('added new file to quickmarks', vim.log.levels.INFO, {
- title = misc.appid,
- })
- end)
- map('n', '<C-q>', function() harpoon:list():select(1) end)
- map('n', '<C-g>', function() harpoon:list():select(2) end)
- map('n', '<C-h>', function() harpoon:list():select(3) end)
- map('n', '<C-i>', function() harpoon:list():select(4) end)
-
- map("n", "<C-S-P>", function() harpoon:list():prev() end)
- map("n", "<C-S-N>", function() harpoon:list():next() end)
-
- map("n", "<C-e>", function() require("core.harpoon").switcher() end)
-end
-
-map('n', '<leader>u', '<cmd>UndotreeToggle<CR>', { desc = 'Open undo tree.' })
-map('n', '<leader>f', '<cmd>SFMToggle<CR>', { desc = 'Open file tree view.' })
-map('n', '<C-j>', '<cmd>JABSOpen<CR>', { desc = 'Switch between buffers.' })
-
-if pcall(require, "smart-splits") then
- local smartsplits = require('smart-splits') -- resizing buffers (toggleable)
- map('n', '<leader>r', smartsplits.start_resize_mode)
-end
-
--- neogen
-if pcall(require, "neogen") then
- map('n', '<leader>df', require("neogen").generate, {
- desc = 'Generate anotations',
- })
-end
+end)
--- venn
-function _G.Toggle_venn()
- local mapb = vim.api.nvim_buf_set_keymap
- local venn_enabled = vim.inspect(vim.b.venn_enabled)
- if venn_enabled == "nil" then
- vim.notify("Enabled venn mode", vim.log.levels.LOW, { title = misc.appid })
- vim.b.venn_enabled = true
- vim.cmd([[setlocal ve=all]])
- -- draw a line on HJKL keystokes
- mapb(0, "n", "J", "<C-v>j:VBox<CR>", { noremap = true })
- mapb(0, "n", "K", "<C-v>k:VBox<CR>", { noremap = true })
- mapb(0, "n", "L", "<C-v>l:VBox<CR>", { noremap = true })
- mapb(0, "n", "H", "<C-v>h:VBox<CR>", { noremap = true })
- -- draw a box by pressing "f" with visual selection
- mapb(0, "v", "f", ":VBox<CR>", { noremap = true })
- else
- vim.notify("Disabled venn mode", vim.log.levels.LOW, { title = misc.appid })
- vim.cmd[[setlocal ve=]]
- vim.cmd[[mapclear <buffer>]]
- vim.b.venn_enabled = nil
+local spellsuggest_select = function()
+ if vim.v.count > 0 then
+ spell_on_choice(nil, vim.v.count)
+ return
end
+ local cword = vim.fn.expand('<cword>')
+ local prompt = 'Change ' .. vim.inspect(cword) .. ' to:'
+ vim.ui.select(vim.fn.spellsuggest(cword, vim.o.lines), { prompt = prompt }, spell_on_choice)
end
--- toggle keymappings for venn using <leader>v
-map('n', '<leader>v', ":lua Toggle_venn()<CR>")
+
+vim.keymap.set('n', 'z=', spellsuggest_select, { desc = 'Shows spelling suggestions' })