Browse Source

changes

master
Tovi Jaeschke-Rogers 19 hours ago
parent
commit
00e4bb1759
15 changed files with 314 additions and 537 deletions
  1. +25
    -0
      .config/aliasrc
  2. +6
    -6
      .config/nvim/lua/lsp/utils.lua
  3. +0
    -11
      .config/nvim/lua/plugins/claude-code.lua
  4. +0
    -2
      .config/nvim/lua/plugins/colorscheme.lua
  5. +0
    -93
      .config/nvim/lua/plugins/dap.lua
  6. +0
    -10
      .config/nvim/lua/plugins/hardtime.lua
  7. +0
    -1
      .config/nvim/lua/plugins/laravel.lua
  8. +0
    -26
      .config/nvim/lua/plugins/notify.lua
  9. +270
    -0
      .config/nvim/lua/plugins/snacks.lua
  10. +0
    -263
      .config/nvim/lua/plugins/telescope.lua
  11. +0
    -58
      .config/nvim/lua/plugins/telescope/multigrep.lua
  12. +1
    -1
      .config/nvim/lua/plugins/todo-comments.lua
  13. +0
    -48
      .config/nvim/lua/plugins/trouble.lua
  14. +0
    -18
      .config/nvim/lua/plugins/undotree.lua
  15. +12
    -0
      .tmux.conf

+ 25
- 0
.config/aliasrc View File

@ -46,3 +46,28 @@ alias jack-phpunit="dce app-fpm ./vendor/bin/phpunit"
alias jack-subscription-artisan="dce subscription-fpm ./artisan"
alias jack-subscription-paratest="dce subscription-fpm ./test"
alias jack-subscription-phpunit="dce subscription-fpm ./vendor/bin/phpunit"
alias t11wl='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.11.14 workspace list '
alias t11ws='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.11.14 workspace select '
alias t11wd='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.11.14 workspace delete '
alias t11='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.11.14 '
alias t10wl='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.10.8 workspace list '
alias t10ws='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.10.8 workspace select '
alias t10wd='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.10.8 workspace delete '
alias t10='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.10.8 '
alias t12wl='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.0 workspace list '
alias t12ws='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.0 workspace select '
alias t12wd='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.0 workspace delete '
alias t12='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.0 '
alias t1227wl='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.27 workspace list '
alias t1227ws='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.27 workspace select '
alias t1227wd='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.27 workspace delete '
alias t1227='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.27 '
alias t1231wl='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.31 workspace list '
alias t1231ws='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.31 workspace select '
alias t1231wd='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.31 workspace delete '
alias t1231='docker run -it -v $(pwd):/workspace -v /root/.ssh:/root/.ssh:ro -v ~/.aws:/root/.aws -w /workspace hashicorp/terraform:0.12.31 '

+ 6
- 6
.config/nvim/lua/lsp/utils.lua View File

@ -44,19 +44,19 @@ function M.setup_lsp_keymaps(bufnr)
})
end
-- Navigation
map("n", "gr", "<cmd>Telescope lsp_references<CR>", "Show LSP references")
-- Navigation (using Snacks.nvim picker)
map("n", "gr", function() Snacks.picker.lsp_references() end, "Show LSP references")
map("n", "gD", vim.lsp.buf.declaration, "Go to declaration")
map("n", "gd", "<cmd>Telescope lsp_definitions<CR>", "Show LSP definitions")
map("n", "gi", "<cmd>Telescope lsp_implementations<CR>", "Show LSP implementations")
map("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", "Show LSP type definitions")
map("n", "gd", function() Snacks.picker.lsp_definitions() end, "Show LSP definitions")
map("n", "gi", function() Snacks.picker.lsp_implementations() end, "Show LSP implementations")
map("n", "gt", function() Snacks.picker.lsp_type_definitions() end, "Show LSP type definitions")
-- Actions
map({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, "See available code actions")
map("n", "<leader>rn", vim.lsp.buf.rename, "Smart rename")
-- Diagnostics
map("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", "Show buffer diagnostics")
map("n", "<leader>D", function() Snacks.picker.diagnostics({ buf = 0 }) end, "Show buffer diagnostics")
map("n", "<leader>d", vim.diagnostic.open_float, "Show line diagnostics")
map("n", "[d", function()
vim.diagnostic.jump({ count = -1 })


+ 0
- 11
.config/nvim/lua/plugins/claude-code.lua View File

@ -1,11 +0,0 @@
return {
"greggh/claude-code.nvim",
dependencies = {
"nvim-lua/plenary.nvim", -- Required for git operations
},
config = function()
require("claude-code").setup()
vim.keymap.set('n', '<leader>CC', '<cmd>ClaudeCode<CR>', { desc = 'Toggle Claude Code' })
end
}

+ 0
- 2
.config/nvim/lua/plugins/colorscheme.lua View File

@ -72,8 +72,6 @@ return {
-- Disable or enable colorscheme extensions
extensions = {
telescope = true,
notify = true,
mini = true,
},
})


+ 0
- 93
.config/nvim/lua/plugins/dap.lua View File

@ -1,93 +0,0 @@
return {
"mfussenegger/nvim-dap",
dependencies = {
"rcarriga/nvim-dap-ui",
"theHamsta/nvim-dap-virtual-text",
},
config = function()
local dap = require("dap")
local dapui = require('dapui')
-- Setup DAP UI with explicit configuration
dapui.setup()
dap.adapters.php = {
type = 'executable',
command = vim.fn.stdpath('data') .. '/mason/bin/php-debug-adapter',
}
-- Get the correct project paths (make this global so keys can access it)
_G.get_project_paths = function()
local cwd = vim.fn.getcwd()
-- Check if we're in the project root (where docker-compose.yml is)
if vim.fn.filereadable(cwd .. "/docker-compose.yml") == 1 then
return {
project_root = cwd,
api_path = cwd .. "/app/api",
docker_path = "/var/www"
}
-- Check if we're in the app/api directory
elseif string.match(cwd, "app/api$") then
local project_root = string.gsub(cwd, "/app/api$", "")
return {
project_root = project_root,
api_path = cwd,
docker_path = "/var/www"
}
else
-- Fallback - assume we're somewhere in the project
return {
project_root = cwd,
api_path = cwd,
docker_path = "/var/www"
}
end
end
local paths = _G.get_project_paths()
-- PHP configurations
dap.configurations.php = {
{
name = "🚀 Jack Laravel - Listen for Xdebug",
type = "php",
request = "launch",
port = 9003,
pathMappings = {
[paths.docker_path] = paths.api_path,
},
hostname = "0.0.0.0",
log = true,
xdebugSettings = {
max_children = 512,
max_data = 1024,
max_depth = 4,
},
},
{
name = "🌐 Jack Laravel - Web Request Debug",
type = "php",
request = "launch",
port = 9003,
pathMappings = {
["/var/www"] = paths.api_path,
},
hostname = "0.0.0.0",
-- Pre-configure for Laravel routes
breakMode = "request",
}
}
end,
keys = {
{ "<leader>DD", function() require("dap").continue() end, desc = "Start Laravel Debug" },
{ "<leader>Ds", function() require("dap").step_over() end, desc = "Step Over" },
{ "<leader>Di", function() require("dap").step_into() end, desc = "Step Into" },
{ "<leader>Do", function() require("dap").step_out() end, desc = "Step Out" }, -- Fixed: was "Ds" twice
{ "<leader>bp", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
{ "<leader>bP", function() require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: ")) end, desc = "Conditional Breakpoint" },
{ "<leader>dr", function() require("dap").repl.open() end, desc = "Open REPL" },
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
{ "<leader>du", function() require("dapui").toggle() end, desc = "Toggle DAP UI" },
},
}

+ 0
- 10
.config/nvim/lua/plugins/hardtime.lua View File

@ -1,10 +0,0 @@
return {
"m4xshen/hardtime.nvim",
enabled = false,
lazy = false,
dependencies = {
"MunifTanjim/nui.nvim",
"rcarriga/nvim-notify",
},
opts = {},
}

+ 0
- 1
.config/nvim/lua/plugins/laravel.lua View File

@ -2,7 +2,6 @@ return {
dir = "~/Projects/laravel.nvim",
dependencies = {
"tpope/vim-dotenv",
"nvim-telescope/telescope.nvim",
"MunifTanjim/nui.nvim",
"kevinhwang91/promise-async",
},


+ 0
- 26
.config/nvim/lua/plugins/notify.lua View File

@ -1,26 +0,0 @@
return {
"rcarriga/nvim-notify",
event = "VeryLazy",
opts = {
background_colour = "#000000",
fps = 30,
icons = {
DEBUG = "",
ERROR = "",
INFO = "",
TRACE = "",
WARN = ""
},
level = 2,
minimum_width = 50,
render = "default",
stages = "fade_in_slide_out",
timeout = 5000,
top_down = true
},
config = function(_, opts)
local notify = require("notify")
notify.setup(opts)
vim.notify = notify
end,
}

+ 270
- 0
.config/nvim/lua/plugins/snacks.lua View File

@ -0,0 +1,270 @@
return {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
opts = {
-- Dashboard/Starter
dashboard = { enabled = false },
-- Notification system (replaces nvim-notify)
notifier = {
enabled = true,
timeout = 5000,
width = { min = 50, max = 0.4 },
height = { min = 1, max = 0.6 },
margin = { top = 0, right = 1, bottom = 0 },
padding = true,
sort = { "level", "added" },
level = vim.log.levels.INFO,
icons = {
error = " ",
warn = " ",
info = " ",
debug = " ",
trace = "",
},
style = "compact",
},
-- File picker (replaces telescope)
picker = {
enabled = true,
-- Performance optimizations
show_delay = 0, -- Show picker immediately (default is 5000ms)
limit_live = 5000, -- Reduce live search limit for better performance
matcher = {
frecency = false, -- Disable frecency for faster startup (enable if you want recency scoring)
cwd_bonus = false, -- Disable for better performance
history_bonus = false, -- Disable for better performance
},
formatters = {
file = {
filename_first = true,
},
},
win = {
input = {
keys = {
["<C-n>"] = { "list_down", mode = { "i", "n" } },
["<C-p>"] = { "list_up", mode = { "i", "n" } },
["<C-j>"] = { "history_next", mode = { "i", "n" } },
["<C-k>"] = { "history_prev", mode = { "i", "n" } },
["<C-q>"] = { "qflist", mode = { "i", "n" } },
["<C-c>"] = { "close", mode = { "i", "n" } },
},
},
},
sources = {
files = {
hidden = true,
follow = true,
-- Let snacks auto-detect fd (fastest) or fallback to rg/find
},
grep = {
hidden = true,
follow = true,
},
},
},
-- Quickfile (fast file operations)
quickfile = { enabled = true },
-- Statuscolumn enhancements
statuscolumn = {
enabled = true,
left = { "mark", "sign" }, -- priority of signs on the left (high to low)
right = { "fold", "git" }, -- priority of signs on the right (high to low)
folds = {
open = false, -- show open fold icons
git_hl = false, -- use Git Signs hl for fold icons
},
git = {
-- patterns to match Git signs
patterns = { "GitSign", "MiniDiffSign" },
},
refresh = 50, -- refresh at most every 50ms
},
-- Word highlighting
words = { enabled = true },
-- Styling for inputs
input = { enabled = true },
-- Scrolling
scroll = { enabled = false },
-- Indent guides
indent = { enabled = false },
-- Scope highlighting
scope = { enabled = true },
-- Git integration with blame
git = {
enabled = true,
},
gitbrowse = {
enabled = true,
},
-- Rename with LSP
rename = { enabled = true },
-- Terminal
terminal = { enabled = true },
-- Zen mode
zen = { enabled = false },
-- Dim inactive windows
dim = { enabled = false },
-- Better quickfix
quickfix = { enabled = true },
-- Scratch buffer
scratch = { enabled = true },
-- Toggle options
toggle = { enabled = true },
-- Profiler
profiler = { enabled = false },
-- Debugging helpers
debug = { enabled = false },
-- Treesitter scope
treesitter = { enabled = true },
},
keys = {
-- File navigation (replacing telescope keybindings)
{ "<leader>p", function() Snacks.picker.smart() end, desc = "Find project files" },
{ "<leader>ff", function() Snacks.picker.grep() end, desc = "Live grep" },
{ "<leader>fg", function() Snacks.picker.grep() end, desc = "Live grep" },
{ "<leader>fr", function() Snacks.picker.resume() end, desc = "Resume last picker" },
{ "<leader>fb", function() Snacks.picker.buffers() end, desc = "Find buffers" },
{ "<leader>fo", function() Snacks.picker.recent() end, desc = "Find recent files" },
{ "<leader>fc", function() Snacks.picker.commands() end, desc = "Find commands" },
-- Search
{
"<leader>fw",
function()
Snacks.picker.grep_word()
end,
desc = "Grep word under cursor"
},
{
"<leader>fW",
function()
local word = vim.fn.expand("<cWORD>")
Snacks.picker.grep({ search = word })
end,
desc = "Grep WORD under cursor"
},
{
"<leader>fw",
function()
local mode = vim.fn.mode()
if mode == 'v' or mode == 'V' then
vim.cmd('noau normal! "vy"')
local text = vim.fn.getreg('v')
vim.fn.setreg('v', {})
text = string.gsub(text, "\n", "")
if #text > 0 then
Snacks.picker.grep({ search = text })
else
Snacks.picker.grep()
end
end
end,
mode = "v",
desc = "Grep selection"
},
{
"<leader>fF",
function()
local word = vim.fn.expand("<cword>")
Snacks.picker.files({ search = word })
end,
desc = "Find file with name under cursor"
},
-- Git
{ "<leader>gb", function() Snacks.picker.git_branches() end, desc = "Git branches" },
{ "<leader>gc", function() Snacks.picker.git_log() end, desc = "Git commits" },
{ "<leader>gs", function() Snacks.picker.git_status() end, desc = "Git status" },
{ "<leader>gbl", function() Snacks.git.blame_line() end, desc = "Git blame line" },
-- LSP
{ "<leader>ds", function() Snacks.picker.lsp_symbols() end, desc = "Document symbols" },
{ "<leader>ws", function() Snacks.picker.lsp_symbols({ symbols = "workspace" }) end, desc = "Workspace symbols" },
{ "<leader>dws", function() Snacks.picker.lsp_symbols({ symbols = "workspace" }) end, desc = "Dynamic workspace symbols" },
{ "gd", function() Snacks.picker.lsp_definitions() end, desc = "Go to definition" },
{ "gr", function() Snacks.picker.lsp_references() end, desc = "Go to references" },
{ "gI", function() Snacks.picker.lsp_implementations() end, desc = "Go to implementation" },
-- Utilities
{ "<leader>fs", function() Snacks.picker.spelling() end, desc = "Spell suggestions" },
{ "<leader>fm", function() Snacks.picker.marks() end, desc = "Marks" },
{ "<leader>fh", function() Snacks.picker.command_history() end, desc = "Command history" },
{ "<leader>fH", function() Snacks.picker.help() end, desc = "Help tags" },
{ "<leader>fk", function() Snacks.picker.keymaps() end, desc = "Keymaps" },
{ "<leader>:", function() Snacks.picker.commands() end, desc = "Commands" },
-- Quickfix
{ "<leader>fq", function() Snacks.picker.qflist() end, desc = "Quickfix list" },
{ "<leader>fl", function() Snacks.picker.loclist() end, desc = "Location list" },
-- Diagnostics
{ "<leader>fd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" },
-- Additional snacks features
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" },
{ "<leader>gf", function() Snacks.lazygit.log_file() end, desc = "Lazygit log (current file)" },
{ "<leader>gl", function() Snacks.lazygit.log() end, desc = "Lazygit log" },
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss notifications" },
{ "<leader>nh", function() Snacks.notifier.show_history() end, desc = "Notification history" },
{ "<c-/>", function() Snacks.terminal() end, desc = "Toggle terminal", mode = { "n", "t" } },
{ "<c-_>", function() Snacks.terminal() end, desc = "Toggle terminal (which_key)", mode = { "n", "t" } },
{ "]]", function() Snacks.words.jump(vim.v.count1) end, desc = "Next reference", mode = { "n", "t" } },
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, desc = "Prev reference", mode = { "n", "t" } },
{ "<leader>N", function() Snacks.notifier.show_history() end, desc = "Notification history" },
{ "<leader>bd", function() Snacks.bufdelete() end, desc = "Delete buffer" },
{ "<leader>cR", function() Snacks.rename.rename_file() end, desc = "Rename file" },
{ "<leader>gB", function() Snacks.gitbrowse() end, desc = "Git browse" },
{ "<leader>S", function() Snacks.profiler.scratch() end, desc = "Profiler scratch buffer" },
},
init = function()
-- Setup notification handler immediately
vim.notify = function(msg, level, opts)
return Snacks.notifier.notify(msg, level, opts)
end
vim.api.nvim_create_autocmd("User", {
pattern = "VeryLazy",
callback = function()
-- Create some toggle keymaps
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
Snacks.toggle.diagnostics():map("<leader>ud")
Snacks.toggle.line_number():map("<leader>ul")
Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
:map("<leader>uc")
Snacks.toggle.treesitter():map("<leader>uT")
Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map(
"<leader>ub")
Snacks.toggle.inlay_hints():map("<leader>uh")
Snacks.toggle.indent():map("<leader>ug")
Snacks.toggle.dim():map("<leader>uD")
end,
})
end,
}

+ 0
- 263
.config/nvim/lua/plugins/telescope.lua View File

@ -1,263 +0,0 @@
return {
"nvim-telescope/telescope.nvim",
cmd = "Telescope",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"debugloop/telescope-undo.nvim",
"nvim-telescope/telescope-ui-select.nvim",
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
"nvim-telescope/telescope-live-grep-args.nvim",
},
config = function()
local telescope = require("telescope")
local actions = require("telescope.actions")
local builtin = require("telescope.builtin")
local previewers = require("telescope.previewers")
local previewers_utils = require("telescope.previewers.utils")
-- Configuration constants
local MAX_FILE_SIZE = 100000
-- Enable line numbers in telescope previews
vim.api.nvim_create_autocmd('User', {
pattern = 'TelescopePreviewerLoaded',
callback = function()
vim.wo.number = true
end,
})
-- Truncate large files in preview to improve performance
local function truncate_large_files(filepath, bufnr, opts)
opts = opts or {}
filepath = vim.fn.expand(filepath)
vim.uv.fs_stat(filepath, function(_, stat)
if not stat then return end
if stat.size > MAX_FILE_SIZE then
local cmd = { "head", "-c", tostring(MAX_FILE_SIZE), filepath }
previewers_utils.job_maker(cmd, bufnr, opts)
else
previewers.buffer_previewer_maker(filepath, bufnr, opts)
end
end)
end
-- Cache git status to avoid repeated system calls
local is_inside_work_tree = {}
local function smart_project_files()
local cwd = vim.fn.getcwd()
if is_inside_work_tree[cwd] == nil then
vim.fn.system("git rev-parse --is-inside-work-tree")
is_inside_work_tree[cwd] = vim.v.shell_error == 0
end
local opts = is_inside_work_tree[cwd]
and { show_untracked = true, hidden = true }
or {}
local picker = is_inside_work_tree[cwd]
and builtin.git_files
or builtin.find_files
picker(opts)
end
-- Visual selection live grep
local function grep_string_visual()
vim.cmd('noau normal! "vy"')
local text = vim.fn.getreg('v')
vim.fn.setreg('v', {})
text = string.gsub(text, "\n", "")
if #text > 0 then
builtin.live_grep({ default_text = text })
else
builtin.live_grep()
end
end
-- Telescope setup
telescope.setup({
defaults = {
file_sorter = require("telescope.sorters").get_fzy_sorter,
color_devicons = true,
buffer_previewer_maker = truncate_large_files,
initial_mode = "insert",
selection_strategy = "reset",
sorting_strategy = "ascending",
path_display = { "truncate" },
layout_config = {
prompt_position = "top",
horizontal = {
preview_width = 0.6,
},
vertical = {
mirror = false,
},
},
-- Modern borderchars
borderchars = { "", "", "", "", "", "", "", "" },
-- Performance optimizations
use_less = true,
set_env = { COLORTERM = "truecolor" },
mappings = {
i = {
["<C-n>"] = actions.move_selection_next,
["<C-p>"] = actions.move_selection_previous,
["<C-j>"] = actions.cycle_history_next,
["<C-k>"] = actions.cycle_history_prev,
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
["<C-u>"] = false, -- Clear prompt
["<C-c>"] = actions.close, -- Close prompt
},
n = {
["q"] = actions.close,
},
},
},
pickers = {
diagnostics = {
initial_mode = "normal",
layout_config = {
preview_cutoff = 9999,
},
},
buffers = {
sort_mru = true,
sort_lastused = true,
mappings = {
i = {
["<C-d>"] = actions.delete_buffer,
},
n = {
["dd"] = actions.delete_buffer,
},
},
},
find_files = {
hidden = true,
find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" },
},
},
extensions = {
undo = {
side_by_side = true,
layout_strategy = "vertical",
layout_config = {
preview_height = 0.8,
},
mappings = {
i = {
["<CR>"] = require("telescope-undo.actions").restore,
},
n = {
["<CR>"] = require("telescope-undo.actions").restore,
["y"] = require("telescope-undo.actions").yank_additions,
["Y"] = require("telescope-undo.actions").yank_deletions,
["u"] = require("telescope-undo.actions").restore,
},
},
},
fzf = {
fuzzy = true,
override_generic_sorter = true,
override_file_sorter = true,
case_mode = "smart_case",
},
live_grep_args = {
auto_quoting = true,
mappings = {
i = {
["<C-k>"] = require("telescope-live-grep-args.actions").quote_prompt(),
["<C-i>"] = require("telescope-live-grep-args.actions").quote_prompt({ postfix = " --iglob " }),
},
},
},
["ui-select"] = {
require("telescope.themes").get_dropdown(),
},
},
})
-- Load extensions
telescope.load_extension("fzf")
telescope.load_extension("undo")
telescope.load_extension("ui-select")
telescope.load_extension("live_grep_args")
-- Keymaps
local function map(mode, lhs, rhs, desc)
vim.keymap.set(mode, lhs, rhs, { desc = desc, noremap = true, silent = true })
end
-- File navigation
map("n", "<leader>ff", function()
require("telescope").extensions.live_grep_args.live_grep_args()
end, "Live grep with args")
map("n", "<leader>fg", function()
require("plugins.telescope.multigrep").live_multgrep()
end, "Live multigrep")
map("n", "<leader>p", smart_project_files, "Find project files")
map("n", "<leader>fr", builtin.resume, "Resume last telescope")
map("n", "<leader>fb", builtin.buffers, "Find buffers")
map("n", "<leader>fo", builtin.oldfiles, "Find recent files")
map("n", "<leader>fc", builtin.commands, "Find commands")
-- Search
map("n", "<leader>fw", function()
builtin.grep_string({ search = vim.fn.expand("<cword>") })
end, "Grep word under cursor")
map("n", "<leader>fW", function()
builtin.grep_string({ search = vim.fn.expand("<cWORD>") })
end, "Grep WORD under cursor")
map("v", "<leader>fw", grep_string_visual, "Grep selection")
map("n", "<leader>fF", function()
builtin.find_files({ search_file = vim.fn.expand("<cword>") })
end, "Find file with name under cursor")
-- Git
map("n", "<leader>gb", function()
builtin.git_branches({
attach_mappings = function(_, map_func)
map_func("i", "<C-d>", actions.git_delete_branch)
map_func("n", "<C-d>", actions.git_delete_branch)
return true
end,
})
end, "Git branches")
map("n", "<leader>gc", builtin.git_commits, "Git commits")
-- LSP
map("n", "<leader>ds", builtin.lsp_document_symbols, "Document symbols")
map("n", "<leader>ws", builtin.lsp_workspace_symbols, "Workspace symbols")
map("n", "<leader>dws", builtin.lsp_dynamic_workspace_symbols, "Dynamic workspace symbols")
-- Utilities
map("n", "<leader>fu", "<cmd>Telescope undo<cr>", "Undo history")
map("n", "<leader>fs", builtin.spell_suggest, "Spell suggestions")
map("n", "<leader>fm", builtin.marks, "Marks")
map("n", "<leader>fh", builtin.command_history, "Command history")
map("n", "<leader>fH", builtin.help_tags, "Help tags")
-- Quickfix
map("n", "<leader>fq", builtin.quickfix, "Quickfix list")
map("n", "<leader>fQ", builtin.quickfixhistory, "Quickfix history")
end,
}

+ 0
- 58
.config/nvim/lua/plugins/telescope/multigrep.lua View File

@ -1,58 +0,0 @@
local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local make_entry = require("telescope.make_entry")
local conf = require("telescope.config").values
local M = {}
M.live_multgrep = function (opts)
opts = opts or {}
opts.cwd = opts.cwd or vim.uv.cwd()
local finder = finders.new_async_job({
command_generator = function (prompt)
if not prompt or prompt == "" then
return nil
end
local pieces = vim.split(prompt, " ")
local args = { "rg" }
if pieces[1] then
table.insert(args, "-e")
table.insert(args, pieces[1])
end
if pieces[2] then
table.insert(args, "-g")
table.insert(args, pieces[2])
end
---@diagnostic disable-next-line: deprecated
return vim.iter({
args,
{
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
"--hidden",
}
}):flatten():totable()
end,
entry_maker = make_entry.gen_from_vimgrep(opts),
cwd = opts.cwd
})
pickers.new(opts, {
debounce = 100,
prompt_title = "Multi Grep",
finder = finder,
previewer = conf.grep_previewer(opts),
sorter = require("telescope.sorters").empty(),
}):find()
end
return M

+ 1
- 1
.config/nvim/lua/plugins/todo-comments.lua View File

@ -6,7 +6,7 @@ return {
require("todo-comments").setup()
vim.keymap.set("n", "<leader>tt", function()
vim.cmd("TodoTelescope")
require("todo-comments.fzf").todo()
end, {})
vim.keymap.set("n", "<leader>tq", function()


+ 0
- 48
.config/nvim/lua/plugins/trouble.lua View File

@ -1,48 +0,0 @@
return {
"folke/trouble.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>xj",
"<cmd>Trouble diagnostics next<cr>",
desc = "Diagnostics Next (Trouble)",
},
{
"<leader>xk",
"<cmd>Trouble diagnostics prev<cr>",
desc = "Diagnostics Previous (Trouble)",
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}

+ 0
- 18
.config/nvim/lua/plugins/undotree.lua View File

@ -1,18 +0,0 @@
return {
"mbbill/undotree",
event = "VeryLazy",
config = function()
if vim.fn.has("persistent_undo") == 0 then
return
end
local target_path = vim.fn.expand("~/.cache/nvim/undodir/")
if vim.fn.isdirectory(target_path) == 0 then
vim.fn.mkdir(target_path, "p", "0700")
end
vim.opt.undodir = target_path
vim.opt.undofile = true
end,
}

+ 12
- 0
.tmux.conf View File

@ -35,6 +35,18 @@ bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' { if -F '#{pane_at_bottom}'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' { if -F '#{pane_at_top}' '' 'select-pane -U' }
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' { if -F '#{pane_at_right}' '' 'select-pane -R' }
bind -r N swap-window -t -1\; select-window -t -1
bind -r n swap-window -t +1\; select-window -t +1
bind -r H swap-pane -U
bind -r J swap-pane -D
bind -r K swap-pane -U
bind -r L swap-pane -D
bind -r P switch-client -p # Previous session in list
bind -r O switch-client -n # Next session in list (O for "Other")
bind -r Space switch-client -l # Last active session (toggle)
bind-key -T copy-mode-vi 'C-h' if -F '#{pane_at_left}' '' 'select-pane -L'
bind-key -T copy-mode-vi 'C-j' if -F '#{pane_at_bottom}' '' 'select-pane -D'
bind-key -T copy-mode-vi 'C-k' if -F '#{pane_at_top}' '' 'select-pane -U'


Loading…
Cancel
Save