Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00c8a641a6 | ||
|
|
0a729ea821 | ||
|
|
c4147c6aaf |
@@ -1,2 +0,0 @@
|
|||||||
TERM=xterm-256color
|
|
||||||
npm_config_prefix=$HOME/.local
|
|
||||||
@@ -51,9 +51,9 @@ if status is-interactive
|
|||||||
|
|
||||||
if command -q nvim
|
if command -q nvim
|
||||||
set -gx EDITOR nvim
|
set -gx EDITOR nvim
|
||||||
alias oo="cd ~/Documents/nca-notes/"
|
alias oo="cd $SECOND_BRAIN"
|
||||||
alias on="nvim +Obsidian new"
|
alias on="nvim '+Obsidian new'"
|
||||||
alias os="nvim +Obsidian search"
|
alias os="nvim '+Obsidian search'"
|
||||||
alias mini="NVIM_APPNAME=mini.nvim nvim"
|
alias mini="NVIM_APPNAME=mini.nvim nvim"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,131 @@
|
|||||||
|
-- from smnatale's github.com/smnatale/nvim-config
|
||||||
|
--
|
||||||
|
-- Copy file path / selection reference for pasting into AI chats
|
||||||
|
|
||||||
|
local scratch_buf = nil
|
||||||
|
local scratch_buf_name = "copy-refs"
|
||||||
|
|
||||||
|
local function get_or_create_scratch()
|
||||||
|
-- if we already created a buffer and it's still valid, reuse it
|
||||||
|
if scratch_buf and vim.api.nvim_buf_is_valid(scratch_buf) then
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
|
||||||
|
-- look for an existing buffer by name
|
||||||
|
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||||
|
if vim.api.nvim_buf_is_valid(buf) then
|
||||||
|
local name = vim.api.nvim_buf_get_name(buf)
|
||||||
|
if name:match("/" .. scratch_buf_name .. "$") or name == scratch_buf_name then
|
||||||
|
scratch_buf = buf
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- create a new unlisted scratch buffer
|
||||||
|
scratch_buf = vim.api.nvim_create_buf(false, true)
|
||||||
|
vim.api.nvim_buf_set_name(scratch_buf, scratch_buf_name)
|
||||||
|
vim.bo[scratch_buf].buftype = "nofile"
|
||||||
|
vim.bo[scratch_buf].bufhidden = "hide"
|
||||||
|
vim.bo[scratch_buf].swapfile = false
|
||||||
|
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_scratch()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local width = math.floor(vim.o.columns * 0.8)
|
||||||
|
local height = math.floor(vim.o.lines * 0.8)
|
||||||
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
local _ = vim.api.nvim_open_win(buf, true, {
|
||||||
|
relative = "editor",
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
row = row,
|
||||||
|
col = col,
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
})
|
||||||
|
vim.api.nvim_buf_set_keymap(buf, "n", "q", ":close<CR>", { noremap = true, silent = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy_ref(opts)
|
||||||
|
-- "%" is the current buffer's file name; ":." makes it relative to the cwd
|
||||||
|
local path = vim.fn.expand("%:.")
|
||||||
|
-- ref is what ends up in the clipboard; start with just the path
|
||||||
|
local ref = path
|
||||||
|
|
||||||
|
if opts.visual then
|
||||||
|
-- '< and '> are only set after leaving visual mode, so read the live selection:
|
||||||
|
-- "v" is the line where visual mode was started (the anchor)
|
||||||
|
local start_line = vim.fn.line("v")
|
||||||
|
-- "." is the line the cursor is on now (the moving end of the selection)
|
||||||
|
local end_line = vim.fn.line(".")
|
||||||
|
-- if the selection was made upward, swap so start is always the smaller line
|
||||||
|
if start_line > end_line then
|
||||||
|
start_line, end_line = end_line, start_line
|
||||||
|
end
|
||||||
|
-- append the range, e.g. "lua/config/keymaps.lua:1:23"
|
||||||
|
ref = path .. ":" .. start_line .. ":" .. end_line
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ask for an optional free-text note on the command line (Enter to skip)
|
||||||
|
local note = vim.fn.input("Prompt (optional): ")
|
||||||
|
if note ~= "" then
|
||||||
|
-- append the note after the ref, separated by a space
|
||||||
|
ref = ref .. " " .. note
|
||||||
|
end
|
||||||
|
|
||||||
|
-- write ref into the "+" register, which is the system clipboard
|
||||||
|
vim.fn.setreg("+", ref)
|
||||||
|
|
||||||
|
-- append to scratch buffer
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||||
|
local insert_pos = #lines
|
||||||
|
if insert_pos > 0 and lines[insert_pos] ~= "" then
|
||||||
|
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { "", ref })
|
||||||
|
else
|
||||||
|
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { ref })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- clear visual selection if we were in visual mode
|
||||||
|
if opts.visual then
|
||||||
|
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- show a confirmation message with what was copied
|
||||||
|
vim.notify("Copied: " .. ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- normal mode: copy just the file path
|
||||||
|
vim.keymap.set("n", "<leader>bc", function()
|
||||||
|
copy_ref({})
|
||||||
|
end, { desc = "Copy file path" })
|
||||||
|
|
||||||
|
-- visual mode: copy the file path plus the selected line range
|
||||||
|
vim.keymap.set("v", "<leader>bc", function()
|
||||||
|
copy_ref({ visual = true })
|
||||||
|
end, { desc = "Copy file path with line range" })
|
||||||
|
|
||||||
|
-- open the copy-ref scratch buffer
|
||||||
|
vim.keymap.set("n", "<leader>b.", function()
|
||||||
|
open_scratch()
|
||||||
|
end, { desc = "Open copy-ref scratch buffer" })
|
||||||
|
|
||||||
|
-- clear the copy-ref scratch buffer
|
||||||
|
vim.keymap.set("n", "<leader>bx", function()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
vim.api.nvim_buf_set_lines(buf, 0, -1, false, {})
|
||||||
|
vim.notify("Cleared copy-refs buffer")
|
||||||
|
end, { desc = "Clear copy-ref scratch buffer" })
|
||||||
|
|
||||||
|
-- yank the entire copy-ref scratch buffer into the + register
|
||||||
|
vim.keymap.set("n", "<leader>by", function()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||||
|
local content = table.concat(lines, "\n")
|
||||||
|
vim.fn.setreg("+", content)
|
||||||
|
vim.notify("Yanked copy-refs buffer (" .. #lines .. " lines)")
|
||||||
|
end, { desc = "Yank copy-ref scratch buffer" })
|
||||||
@@ -42,7 +42,6 @@ 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>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>`", "<cmd>e #<cr>", { desc = "Switch to Other Buffer" })
|
||||||
vim.keymap.set("n", "<leader>bc", "<cmd>tabclose<cr>", { desc = "Close Tab" })
|
|
||||||
|
|
||||||
-- Clear search with <esc>
|
-- Clear search with <esc>
|
||||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<cr>', { desc = "clear hlsearch" })
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<cr>', { desc = "clear hlsearch" })
|
||||||
|
|||||||
@@ -0,0 +1,131 @@
|
|||||||
|
-- from smnatale's github.com/smnatale/nvim-config
|
||||||
|
--
|
||||||
|
-- Copy file path / selection reference for pasting into AI chats
|
||||||
|
|
||||||
|
local scratch_buf = nil
|
||||||
|
local scratch_buf_name = "copy-refs"
|
||||||
|
|
||||||
|
local function get_or_create_scratch()
|
||||||
|
-- if we already created a buffer and it's still valid, reuse it
|
||||||
|
if scratch_buf and vim.api.nvim_buf_is_valid(scratch_buf) then
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
|
||||||
|
-- look for an existing buffer by name
|
||||||
|
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||||
|
if vim.api.nvim_buf_is_valid(buf) then
|
||||||
|
local name = vim.api.nvim_buf_get_name(buf)
|
||||||
|
if name:match("/" .. scratch_buf_name .. "$") or name == scratch_buf_name then
|
||||||
|
scratch_buf = buf
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- create a new unlisted scratch buffer
|
||||||
|
scratch_buf = vim.api.nvim_create_buf(false, true)
|
||||||
|
vim.api.nvim_buf_set_name(scratch_buf, scratch_buf_name)
|
||||||
|
vim.bo[scratch_buf].buftype = "nofile"
|
||||||
|
vim.bo[scratch_buf].bufhidden = "hide"
|
||||||
|
vim.bo[scratch_buf].swapfile = false
|
||||||
|
|
||||||
|
return scratch_buf
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_scratch()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local width = math.floor(vim.o.columns * 0.8)
|
||||||
|
local height = math.floor(vim.o.lines * 0.8)
|
||||||
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
local _ = vim.api.nvim_open_win(buf, true, {
|
||||||
|
relative = "editor",
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
row = row,
|
||||||
|
col = col,
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
})
|
||||||
|
vim.api.nvim_buf_set_keymap(buf, "n", "q", ":close<CR>", { noremap = true, silent = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
local function copy_ref(opts)
|
||||||
|
-- "%" is the current buffer's file name; ":." makes it relative to the cwd
|
||||||
|
local path = vim.fn.expand("%:.")
|
||||||
|
-- ref is what ends up in the clipboard; start with just the path
|
||||||
|
local ref = path
|
||||||
|
|
||||||
|
if opts.visual then
|
||||||
|
-- '< and '> are only set after leaving visual mode, so read the live selection:
|
||||||
|
-- "v" is the line where visual mode was started (the anchor)
|
||||||
|
local start_line = vim.fn.line("v")
|
||||||
|
-- "." is the line the cursor is on now (the moving end of the selection)
|
||||||
|
local end_line = vim.fn.line(".")
|
||||||
|
-- if the selection was made upward, swap so start is always the smaller line
|
||||||
|
if start_line > end_line then
|
||||||
|
start_line, end_line = end_line, start_line
|
||||||
|
end
|
||||||
|
-- append the range, e.g. "lua/config/keymaps.lua:1:23"
|
||||||
|
ref = path .. ":" .. start_line .. ":" .. end_line
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ask for an optional free-text note on the command line (Enter to skip)
|
||||||
|
local note = vim.fn.input("Prompt (optional): ")
|
||||||
|
if note ~= "" then
|
||||||
|
-- append the note after the ref, separated by a space
|
||||||
|
ref = ref .. " " .. note
|
||||||
|
end
|
||||||
|
|
||||||
|
-- write ref into the "+" register, which is the system clipboard
|
||||||
|
vim.fn.setreg("+", ref)
|
||||||
|
|
||||||
|
-- append to scratch buffer
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||||
|
local insert_pos = #lines
|
||||||
|
if insert_pos > 0 and lines[insert_pos] ~= "" then
|
||||||
|
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { "", ref })
|
||||||
|
else
|
||||||
|
vim.api.nvim_buf_set_lines(buf, insert_pos, insert_pos, false, { ref })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- clear visual selection if we were in visual mode
|
||||||
|
if opts.visual then
|
||||||
|
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- show a confirmation message with what was copied
|
||||||
|
vim.notify("Copied: " .. ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- normal mode: copy just the file path
|
||||||
|
vim.keymap.set("n", "<leader>bc", function()
|
||||||
|
copy_ref({})
|
||||||
|
end, { desc = "Copy file path" })
|
||||||
|
|
||||||
|
-- visual mode: copy the file path plus the selected line range
|
||||||
|
vim.keymap.set("v", "<leader>bc", function()
|
||||||
|
copy_ref({ visual = true })
|
||||||
|
end, { desc = "Copy file path with line range" })
|
||||||
|
|
||||||
|
-- open the copy-ref scratch buffer
|
||||||
|
vim.keymap.set("n", "<leader>b.", function()
|
||||||
|
open_scratch()
|
||||||
|
end, { desc = "Open copy-ref scratch buffer" })
|
||||||
|
|
||||||
|
-- clear the copy-ref scratch buffer
|
||||||
|
vim.keymap.set("n", "<leader>bx", function()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
vim.api.nvim_buf_set_lines(buf, 0, -1, false, {})
|
||||||
|
vim.notify("Cleared copy-refs buffer")
|
||||||
|
end, { desc = "Clear copy-ref scratch buffer" })
|
||||||
|
|
||||||
|
-- yank the entire copy-ref scratch buffer into the + register
|
||||||
|
vim.keymap.set("n", "<leader>by", function()
|
||||||
|
local buf = get_or_create_scratch()
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
|
||||||
|
local content = table.concat(lines, "\n")
|
||||||
|
vim.fn.setreg("+", content)
|
||||||
|
vim.notify("Yanked copy-refs buffer (" .. #lines .. " lines)")
|
||||||
|
end, { desc = "Yank copy-ref scratch buffer" })
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
vim.pack.add({{ src = "https://github.com/martindur/zdiff.nvim" }})
|
||||||
|
|
||||||
|
vim.keymap.set('n', "<leader>gz", "<cmd>Zdiff<cr>", { desc = "Zdiff (uncommitted)" })
|
||||||
|
vim.keymap.set('n', "<leader>gZ", "<cmd>Zdiff main<cr>", { desc = "Zdiff (vs main)" })
|
||||||
@@ -3,6 +3,7 @@ USER_FULLNAME = "Steve Beaulac"
|
|||||||
USER_EMAIL = "steve@beaulac.me"
|
USER_EMAIL = "steve@beaulac.me"
|
||||||
DOTFILES_DIR = "{{config_root}}"
|
DOTFILES_DIR = "{{config_root}}"
|
||||||
THEME_DIR = "~/.config/omarchy/current/theme"
|
THEME_DIR = "~/.config/omarchy/current/theme"
|
||||||
|
SECOND_BRAIN = "~/Documents/sjv-brain"
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
DOTFILES_DIR = "{{config_root}}"
|
DOTFILES_DIR = "{{config_root}}"
|
||||||
@@ -15,9 +16,8 @@ dotfiles.default_mode = "symlink-each"
|
|||||||
"~/.config/btop" = "config/btop"
|
"~/.config/btop" = "config/btop"
|
||||||
"~/.config/btop/themes/current.theme" = { source = "~/.config/omarchy/current/theme/btop.theme", mode = "symlink" }
|
"~/.config/btop/themes/current.theme" = { source = "~/.config/omarchy/current/theme/btop.theme", mode = "symlink" }
|
||||||
"~/.config/emacs" = "config/emacs"
|
"~/.config/emacs" = "config/emacs"
|
||||||
"~/.config/environment.d" = "config/environment.d"
|
"~/.config/environment.d/generic.conf" = { source = "templates/environments.tmpl", mode = "template", template = "tera" }
|
||||||
"~/.gnupg" = "config/gnupg"
|
"~/.gnupg" = "config/gnupg"
|
||||||
"~/.config/environment.d/dotfiles.conf" = { source = "templates/dofiles.conf.tmpl", template = "tera", mode = "template" }
|
|
||||||
"~/.config/fish" = "config/fish" # check if we really need the fisher plugins
|
"~/.config/fish" = "config/fish" # check if we really need the fisher plugins
|
||||||
"~/.config/gdb" = "config/gdb"
|
"~/.config/gdb" = "config/gdb"
|
||||||
"~/.config/ghostty" = "config/ghostty"
|
"~/.config/ghostty" = "config/ghostty"
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
TERM=xterm-256color
|
||||||
|
npm_config_prefix=$HOME/.local
|
||||||
|
|
||||||
|
DOTFILES_DIR = "{{ vars.DOTFILES_DIR }}"
|
||||||
|
USER_FULLNAME = "{{ vars.USER_FULLNAME }}"
|
||||||
|
USER_EMAIL = "{{ vars.USER_FULLNAME }}"
|
||||||
|
THEME_DIR = "{{ vars.THEME_DIR }}"
|
||||||
|
SECOND_BRAIN = "{{ vars.SECOND_BRAIN }}"
|
||||||
Reference in New Issue
Block a user