feat(nvim): updated config to use vim.pack instead of lazy
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
['http'] = 'http',
|
||||
},
|
||||
})
|
||||
|
||||
-- Check if we need to reload the file when it changed
|
||||
vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, {
|
||||
desc = 'Check time',
|
||||
group = vim.api.nvim_create_augroup("sjb-checktime", { clear = true}),
|
||||
callback = function()
|
||||
if vim.o.buftype ~= 'nofile' then
|
||||
vim.cmd('checktime')
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('sjb-highlight-yank', { clear = true }),
|
||||
callback = function()
|
||||
vim.hl.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
-- windows to close
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = {
|
||||
"OverseerForm",
|
||||
"OverseerList",
|
||||
"floggraph",
|
||||
"fugitive",
|
||||
"git",
|
||||
"help",
|
||||
"lspinfo",
|
||||
"man",
|
||||
"neotest-output",
|
||||
"neotest-summary",
|
||||
"qf",
|
||||
"query",
|
||||
"spectre_panel",
|
||||
"startuptime",
|
||||
"toggleterm",
|
||||
"tsplayground",
|
||||
"vim",
|
||||
},
|
||||
group = vim.api.nvim_create_augroup('sjb-quick-close', { clear = true }),
|
||||
callback = function(event)
|
||||
vim.bo[event.buf].buflisted = false
|
||||
vim.keymap.set("n", "q", "<cmd>close<cr>", { buffer = event.buf, silent = true })
|
||||
end,
|
||||
})
|
||||
|
||||
-- wrap and check for spell in text filetypes
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
group = vim.api.nvim_create_augroup("sjb-wrap-spell", { clear = true }),
|
||||
pattern = { "gitcommit", "markdown" },
|
||||
callback = function()
|
||||
vim.opt_local.wrap = true
|
||||
vim.opt_local.spell = true
|
||||
end,
|
||||
})
|
||||
|
||||
-- Auto create dir when saving a file, in case some intermediate directory does not exist
|
||||
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||
group = vim.api.nvim_create_augroup("sjb-auto-create-dir", { clear = true}),
|
||||
callback = function(event)
|
||||
if event.match:match("^%w%w+://") then
|
||||
return
|
||||
end
|
||||
local file = vim.loop.fs_realpath(event.match) or event.match
|
||||
vim.fn.mkdir(vim.fn.fnamemodify(file, ":p:h"), "p")
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
if vim.fn.isdirectory(".jj") == 1 then
|
||||
vim.fn.jobstart({"jj", "status"}, {
|
||||
on_exit = function(_, exit_code)
|
||||
if exit_code ~= 0 then
|
||||
vim.notify("jj command failed", vim.log.levels.WARN)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local gpgGroup = vim.api.nvim_create_augroup("customGpg", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufReadPre", "FileReadPre" }, {
|
||||
pattern = "*.gpg",
|
||||
group = gpgGroup,
|
||||
callback = function()
|
||||
-- Make sure nothing is written to shada file while editing an encrypted file.
|
||||
vim.opt_local.shada = nil
|
||||
-- We don't want a swap file, as it writes unencrypted data to disk
|
||||
vim.opt_local.swapfile = false
|
||||
-- Switch to binary mode to read the encrypted file
|
||||
vim.opt_local.bin = true
|
||||
-- Save the current 'ch' value to a buffer-local variable
|
||||
vim.b.ch_save = vim.opt_local.ch:get()
|
||||
vim.cmd "set ch=2"
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
|
||||
pattern = "*.gpg",
|
||||
group = gpgGroup,
|
||||
callback = function()
|
||||
vim.cmd "'[,']!gpg --decrypt 2> /dev/null"
|
||||
-- Switch to normal mode for editing
|
||||
vim.opt_local.bin = false
|
||||
-- Restore the 'ch' value from the buffer-local variable
|
||||
vim.opt_local.ch = vim.b.ch_save
|
||||
vim.cmd "unlet b:ch_save"
|
||||
vim.cmd(":doautocmd BufReadPost " .. vim.fn.expand "%:r")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Convert all text to encrypted text before writing
|
||||
vim.api.nvim_create_autocmd({ "BufWritePre", "FileWritePre" }, {
|
||||
pattern = "*.gpg",
|
||||
group = gpgGroup,
|
||||
callback = function()
|
||||
-- Switch to binary mode to write the encrypted file
|
||||
vim.opt_local.bin = true
|
||||
-- So we can avoid the armor option
|
||||
vim.cmd("'[,']!gpg --default-recipient-self -e 2>/dev/null")
|
||||
end,
|
||||
})
|
||||
-- Undo the encryption so we are back in the normal text, directly after the file has been written.
|
||||
vim.api.nvim_create_autocmd({ "BufWritePost", "FileWritePost" }, {
|
||||
pattern = "*.gpg",
|
||||
group = gpgGroup,
|
||||
callback = function()
|
||||
vim.cmd("u")
|
||||
-- Switch to normal mode for editing
|
||||
vim.opt_local.bin = false
|
||||
end,
|
||||
})
|
||||
@@ -0,0 +1,78 @@
|
||||
-- Keymaps for better default experience
|
||||
-- See `:help vim.keymap.set()`
|
||||
--vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
||||
|
||||
-- Remap for dealing with word wrap
|
||||
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||
|
||||
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||
|
||||
-- save file
|
||||
-- vim.keymap.set({ "i", "x", "n", "s" }, "<C-s>", "<cmd>w<cr><esc>", { desc = "Save file" })
|
||||
-- vim.keymap.set({ "i", "x", "n", "s" }, "<C-x><C-s>", "<cmd>:qall<cr>", { desc = "Save file" })
|
||||
|
||||
-- better indenting
|
||||
vim.keymap.set("v", "<", "<gv")
|
||||
vim.keymap.set("v", ">", ">gv")
|
||||
|
||||
-- better jumps
|
||||
vim.keymap.set("n", "<C-d>", "<C-d>zz")
|
||||
vim.keymap.set("n", "<C-u>", "<C-u>zz")
|
||||
vim.keymap.set("n", "<C-f>", "<C-f>zz")
|
||||
vim.keymap.set("n", "<C-b>", "<C-b>zz")
|
||||
|
||||
vim.keymap.set("i", "<C-f>", "<C-x><C-f>", { noremap = true, silent = true })
|
||||
vim.keymap.set("i", "<C-b>", "<C-x><C-b>", { noremap = true, silent = true })
|
||||
vim.keymap.set("i", "<C-l>", "<C-x><C-l>", { noremap = true, silent = true })
|
||||
|
||||
-- Paste over currently selected text without yanking it
|
||||
vim.keymap.set("v", "p", '"_dP')
|
||||
|
||||
vim.keymap.set("n", "<leader>p", [["_dP]], { desc = "Paste over currently selected text without yanking it" })
|
||||
|
||||
vim.keymap.set("n", "<leader>Y", [["+Y]], { noremap = true, silent = true })
|
||||
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true })
|
||||
|
||||
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]], { noremap = true, silent = true })
|
||||
|
||||
-- new file
|
||||
vim.keymap.set("n", "<leader>bn", "<cmd>enew<cr>", { desc = "New File" })
|
||||
-- vim.keymap.set("n", "<leader>bd", "<cmd>bdelete<cr>", { desc = "Unload Buffer" })
|
||||
|
||||
vim.keymap.set("n", "<leader>`", "<cmd>e #<cr>", { desc = "Switch to Other Buffer" })
|
||||
vim.keymap.set("n", "<leader>bc", "<cmd>tabclose<cr>", { desc = "Close Tab" })
|
||||
|
||||
-- Clear search with <esc>
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<cr>', { desc = "clear hlsearch" })
|
||||
-- vim.keymap.set("n", "<leader><esc>", "<cmd>nohlsearch<cr>", { desc = "clear hlsearch" })
|
||||
|
||||
-- Diagnostic keymaps
|
||||
vim.keymap.set('n', '<leader>cl', vim.diagnostic.setloclist, { desc = 'Send diagnostic to location list' })
|
||||
vim.keymap.set("n", "<leader>cq", vim.diagnostic.setqflist, { desc = "Send diagnostic to Quickfix" })
|
||||
-- vim.keymap.set("n", "<leader>gq", "<cmd>copen<cr>", { desc = "Quickfix List" })
|
||||
-- vim.keymap.set("n", "<leader>gl", "<cmd>lopen<cr>", { desc = "Location List" })
|
||||
|
||||
vim.keymap.set('n', '<leader>eb', "<cmd>.w !bash -e<cr>", { desc = "Send line to bash" })
|
||||
vim.keymap.set('n', '<leader>eB', "<cmd>%w !bash -e<cr>", { desc = "Send buffer to bash" })
|
||||
vim.keymap.set('n', '<leader>e.', "<cmd>.!bash -e<cr>", { desc = "Execute current line" })
|
||||
vim.keymap.set('n', '<leader>e%', "<cmd>% !bash -e<cr>", { desc = "Execute current buffer" })
|
||||
vim.keymap.set('n', '<leader>ex', "<cmd>!chmod +x %<cr>", { desc = "Make file executable" })
|
||||
|
||||
vim.keymap.set('n', "<leader>eL", "<cmd>source %<cr>", { desc = "Source current buffer" })
|
||||
vim.keymap.set('n', "<leader>el", "<cmd>.lua<cr>", { desc = "Source current line" })
|
||||
vim.keymap.set('v', "<leader>el", "<cmd>lua<cr>", { desc = "Source current line" })
|
||||
vim.keymap.set('n', '<leader>xu', '<cmd>Lazy sync<cr>', { desc = 'Lazy sync' })
|
||||
|
||||
|
||||
vim.keymap.set("n", "<leader>cx", function()
|
||||
local file = vim.fn.expand "%"
|
||||
local line = vim.fn.line "."
|
||||
vim.fn.setreg("+", string.format("%s:%d", file, line))
|
||||
vim.notify "Copied line reference to clipboard"
|
||||
end, { desc = "Copy line reference to clipboard" })
|
||||
|
||||
vim.keymap.set("n", "<leader>ktn", require('tasks').create_new_task, { desc = "create new task" } )
|
||||
vim.keymap.set("n", "<leader>kts", require('tasks').start_task, { desc = "start task" } )
|
||||
vim.keymap.set("n", "<leader>kte", require('tasks').stop_task, { desc = "stop task" } )
|
||||
@@ -0,0 +1,33 @@
|
||||
function R(name)
|
||||
require("plenary.reload").reload_module(name)
|
||||
end
|
||||
|
||||
function websearch(url, o)
|
||||
-- Get visual selection or prompt for search
|
||||
local search_term
|
||||
|
||||
-- Check if there's a visual selection
|
||||
if vim.fn.mode() == 'v' or vim.fn.mode() == 'V' then
|
||||
-- Get the visual selection
|
||||
local start_pos = vim.fn.getpos("'<")
|
||||
local end_pos = vim.fn.getpos("'>")
|
||||
local lines = vim.fn.getline(start_pos[2], end_pos[2])
|
||||
local selected_text = table.concat(lines, " ")
|
||||
search_term = selected_text
|
||||
else
|
||||
search_term = (o and o.args) or vim.fn.input("Search: ")
|
||||
end
|
||||
|
||||
-- Encode the search term for URLs
|
||||
local escaped = vim.uri_encode(search_term)
|
||||
|
||||
-- Construct and execute the search URL
|
||||
local search_url = (url):format(escaped)
|
||||
|
||||
vim.ui.open(search_url)
|
||||
end
|
||||
-- Command to call the search function
|
||||
vim.api.nvim_create_user_command('DuckDuckGo', function(o) websearch('https://duckduckgo.com/?q=%s', o) end, { nargs = 1 })
|
||||
vim.api.nvim_create_user_command('Docsrs', function(o) websearch('https://docs.rs/%s', o) end, { nargs = 1})
|
||||
vim.api.nvim_create_user_command('RustStd', function(o) websearch('https://doc.rust-lang.org/std/?search=%s', o) end, { nargs = 1})
|
||||
vim.keymap.set({ 'n', 'v'}, '<leader>sW', function() websearch('https://duckduckgo.com/?q=%s', null) end, { desc = "Search on DuckDuckGo" })
|
||||
Reference in New Issue
Block a user