new neovim configs

This commit is contained in:
Juan Wu 2023-07-17 13:32:24 -04:00
commit 1898ac5c10
20 changed files with 466 additions and 110 deletions

View file

@ -22,6 +22,3 @@ require("lazy").setup({
colorscheme = { "rose-pine" }, colorscheme = { "rose-pine" },
} }
}) })
-- set theme
vim.cmd.colorscheme("rose-pine")

View file

@ -2,30 +2,38 @@
"Comment.nvim": { "branch": "master", "commit": "176e85eeb63f1a5970d6b88f1725039d85ca0055" }, "Comment.nvim": { "branch": "master", "commit": "176e85eeb63f1a5970d6b88f1725039d85ca0055" },
"LuaSnip": { "branch": "master", "commit": "45a4e899ca8f54936fe32ead6bba65f2a8d42e12" }, "LuaSnip": { "branch": "master", "commit": "45a4e899ca8f54936fe32ead6bba65f2a8d42e12" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"fzf": { "branch": "master", "commit": "0130f64934d2a3ac4f5639ed16cf3dbcfb38240b" }, "fzf": { "branch": "master", "commit": "547e101f1d6bf326d286bac0fb3272738a92a67f" },
"fzf-lua": { "branch": "main", "commit": "359f3e9eccbc38a6158f57e75aa2a3c525abc476" }, "fzf-lua": { "branch": "main", "commit": "19732fdf9b8b038b6a5813b077b382ab2b48e094" },
"git.nvim": { "branch": "main", "commit": "7a342e61f28e321ef08e00fca4be74ff3ef88335" }, "git.nvim": { "branch": "main", "commit": "7a342e61f28e321ef08e00fca4be74ff3ef88335" },
"gitsigns.nvim": { "branch": "main", "commit": "48c3ae8ec74cb83f9570ceb0c5ab8217db7a2220" }, "gitsigns.nvim": { "branch": "main", "commit": "5a04466685008f29c71fa5ec25d421deb1c83fea" },
"harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, "harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" },
"lazy.nvim": { "branch": "main", "commit": "da8b00581a52f5f87ad2aba9f52171fda7491f18" }, "lazy.nvim": { "branch": "main", "commit": "14d76aac4bd3ff07c1fca074c210f28f766a931e" },
"lsp-zero.nvim": { "branch": "v2.x", "commit": "7b9627c2cb50906993e194290b2e539c95dfdf47" }, "lsp-zero.nvim": { "branch": "v2.x", "commit": "0b4c5966884e80c5100c04790defe1fd72d918aa" },
"lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" }, "lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "796008869e67ef27a5aa5ac44c08ce2a60b89f55" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "828a538ac8419f586c010996aefa5df6eb7c250b" },
"mason.nvim": { "branch": "main", "commit": "5ad3e113b0c3fde3caba8630599373046f6197e8" }, "mason.nvim": { "branch": "main", "commit": "5ad3e113b0c3fde3caba8630599373046f6197e8" },
"neo-tree.nvim": { "branch": "v2.x", "commit": "7f6fa04dbd8e8c79d1af33bc90e856b65d8641da" },
"nui.nvim": { "branch": "main", "commit": "d146966a423e60699b084eeb28489fe3b6427599" },
"null-ls.nvim": { "branch": "main", "commit": "db09b6c691def0038c456551e4e2772186449f35" }, "null-ls.nvim": { "branch": "main", "commit": "db09b6c691def0038c456551e4e2772186449f35" },
"nvim-autopairs": { "branch": "master", "commit": "e8f7dd7a72de3e7b6626c050a802000e69d53ff0" }, "nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" },
"nvim-cmp": { "branch": "main", "commit": "c4e491a87eeacf0408902c32f031d802c7eafce8" }, "nvim-cmp": { "branch": "main", "commit": "c4e491a87eeacf0408902c32f031d802c7eafce8" },
"nvim-lspconfig": { "branch": "master", "commit": "deade69789089c3da15237697156334fb3e943f0" }, "nvim-dap": { "branch": "master", "commit": "3bde6f786057fa29d8356559b2ae3a52d9317fba" },
"nvim-treesitter": { "branch": "master", "commit": "b4b94ec387525cb9df4b56eb1a8bf33231a0df47" }, "nvim-dap-ui": { "branch": "master", "commit": "85b16ac2309d85c88577cd8ee1733ce52be8227e" },
"nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
"nvim-lspconfig": { "branch": "master", "commit": "4b26897a80c41eb2f116b271cbdcd4686fb52dd6" },
"nvim-treesitter": { "branch": "master", "commit": "39f10b0b14184f746a0c9e7475c5ea81a9a812f6" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "52f1f3280d9092bfaee5c45be5962fabee3d9654" },
"nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" }, "nvim-ts-autotag": { "branch": "main", "commit": "6be1192965df35f94b8ea6d323354f7dc7a557e4" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "7f625207f225eea97ef7a6abe7611e556c396d2f" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "7f625207f225eea97ef7a6abe7611e556c396d2f" },
"nvim-web-devicons": { "branch": "master", "commit": "9ab9b0b894b2388a9dbcdee5f00ce72e25d85bf9" }, "nvim-web-devicons": { "branch": "master", "commit": "9ab9b0b894b2388a9dbcdee5f00ce72e25d85bf9" },
"plenary.nvim": { "branch": "master", "commit": "bda256fab0eb66a15e8190937e417e6a14ee5d72" }, "plenary.nvim": { "branch": "master", "commit": "1a6a7c929628566cf406aa7da1d048a1ddc7e9a8" },
"rose-pine": { "branch": "main", "commit": "932adb0d9351186db047302de021bb2976756a07" }, "rose-pine": { "branch": "main", "commit": "932adb0d9351186db047302de021bb2976756a07" },
"telescope-file-browser.nvim": { "branch": "master", "commit": "e03ff55962417b69c85ef41424079bb0580546ba" }, "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" },
"telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" },
"todo-comments.nvim": { "branch": "main", "commit": "09b0b17d824d2d56f02ff15967e8a2499a89c731" }, "todo-comments.nvim": { "branch": "main", "commit": "09b0b17d824d2d56f02ff15967e8a2499a89c731" },
"undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" }, "undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" },
"vim-floaterm": { "branch": "master", "commit": "bcaeabf89a92a924031d471395054d84bd88ce2f" }, "vim-floaterm": { "branch": "master", "commit": "bcaeabf89a92a924031d471395054d84bd88ce2f" },
"which-key.nvim": { "branch": "main", "commit": "d871f2b664afd5aed3dc1d1573bef2fb24ce0484" } "vscode-js-debug": { "branch": "main", "commit": "16b9a70171b94cfe4aafc49e991f93b87b8ffb77" },
"which-key.nvim": { "branch": "main", "commit": "96e99913df649d45333a9ad625ad4c72d5e65fe1" }
} }

View file

@ -1,4 +1,5 @@
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- easy escape -- easy escape
vim.keymap.set("i", "<C-[>", "<Esc>", { noremap = true, silent = true }) vim.keymap.set("i", "<C-[>", "<Esc>", { noremap = true, silent = true })
@ -32,7 +33,7 @@ vim.keymap.set("n", "q", "<nop>", { noremap = true })
vim.keymap.set("n", "<leader>q", "q", { noremap = true }) vim.keymap.set("n", "<leader>q", "q", { noremap = true })
-- select and replace -- select and replace
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]]) vim.keymap.set("n", "<leader>ss", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
-- no copy, delete line, for god sake... -- no copy, delete line, for god sake...
vim.keymap.set("n", "dd", "\"_dd") vim.keymap.set("n", "dd", "\"_dd")
@ -81,9 +82,8 @@ vim.keymap.set("i", "<C-k>", "<Up>", { noremap = true })
vim.keymap.set("i", "<C-l>", "<Right>", { noremap = true }) vim.keymap.set("i", "<C-l>", "<Right>", { noremap = true })
-- terminal keymaps -- terminal keymaps
vim.keymap.set("t", "<C-t>", "<C-\\><C-n>", { noremap = true }) vim.keymap.set("t", "<C-t>", "<C-\\><C-n>", { noremap = true }) -- exit insert mode in terminal
vim.keymap.set("t", "<C-x>", "<cmd>bd!<CR>", { noremap = true }) vim.keymap.set("t", "<C-x>", "<cmd>bd!<CR>", { noremap = true }) -- terminate terminal session
vim.keymap.set("n", "<C-t>", "<cmd>term<CR>i", { noremap = true }) vim.keymap.set("n", "<C-t>", "<cmd>term<CR>i", { noremap = true }) -- create new terminal session
-- lazygit on floaterm vim.keymap.set({ 'n', 'v' }, "<Space>", "<Nop>", { silent = true })
vim.keymap.set("n", "<leader>g", "<cmd>FloatermNew lazygit<CR>", { noremap = true })

View file

@ -42,3 +42,19 @@ vim.opt.termguicolors = true -- good shit, just take it
-- activate persistent undo -- activate persistent undo
vim.opt.undofile = true vim.opt.undofile = true
-- [[ highlight on yank ]]
local highligh_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highligh_group,
pattern = '*',
})
vim.opt.completeopt = 'menuone,noselect'
vim.opt.breakindent = true

View file

@ -2,7 +2,19 @@ return {
{ {
"rose-pine/nvim", "rose-pine/nvim",
name = "rose-pine", name = "rose-pine",
lazy = true,
priority = 1000, priority = 1000,
enabled = true,
config = function()
vim.cmd.colorscheme("rose-pine")
end
},
{
-- Theme inspired by Atom
'navarasu/onedark.nvim',
priority = 1000,
enabled = false,
config = function()
vim.cmd.colorscheme 'onedark'
end,
}, },
} }

View file

@ -1,6 +1,6 @@
return { return {
"voldikss/vim-floaterm", "voldikss/vim-floaterm",
keys = { keys = {
{ "<leader>gl", "<cmd>FloatermNew lazygit<CR>", desc = "Open lazygit in a floating window" }, { "<leader>lg", "<cmd>FloatermNew lazygit<CR>", desc = "Open lazygit in a floating window" },
}, },
} }

View file

@ -5,9 +5,6 @@ return {
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
{ "junegunn/fzf", build = "./install --bin" } { "junegunn/fzf", build = "./install --bin" }
}, },
config = function() config = {},
-- calling `setup` is optional for customization
require("fzf-lua").setup({})
end,
enabled = true, enabled = true,
} }

View file

@ -1,9 +1,8 @@
return { return {
'dinhhuy258/git.nvim', 'dinhhuy258/git.nvim',
keys = { keys = {
{ "<leader>gb", "<cmd>GitBlame<CR>", desc = "Open Git Blame" }, { "<leader>gbl", "<cmd>GitBlame<CR>", desc = "Open [G]it [Bl]ame" },
{ "<leader>gd", "<cmd>GitDiff<CR>", desc = "Open Git Diff" }, { "<leader>gd", "<cmd>GitDiff<CR>", desc = "Open [G]it [D]iff" },
{ "<leader>gs", "<cmd>Git status<CR>", desc = "Open Git Status" }
}, },
cmd = { cmd = {
"Git", "Git",
@ -16,9 +15,7 @@ return {
git.setup({ git.setup({
default_keymaps = true, default_keymaps = true,
keymaps = { keymaps = {
blame = "<leader>gb",
quit_blame = "q", quit_blame = "q",
diff = "<leader>gd",
diff_close = "q", diff_close = "q",
}, },
target_branch = "main", target_branch = "main",

View file

@ -20,15 +20,38 @@ return {
config = function() config = function()
local lspzero = require("lsp-zero") local lspzero = require("lsp-zero")
lspzero.preset("recommended") lspzero.preset({})
lspzero.on_attach(function(client, bufnr) lspzero.on_attach(function(client, bufnr)
lspzero.default_keymaps({ buffer = bufnr }) lspzero.default_keymaps({
buffer = bufnr,
omit = {
'gr'
},
})
function nmap(key, action, desc)
vim.keymap.set(
"n",
key,
action,
{
desc = "LSP: " .. desc,
}
)
end
nmap("[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", "Goto Prev Diagnostic");
nmap("]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", "Goto Next Diagnostic")
local current_dir = vim.fn.expand("%:p:h") local current_dir = vim.fn.expand("%:p:h")
-- vim.keymap.set('n', 'gr', '<cmd>Telescope lsp_references<cr>', { buffer = true })
-- format with space + f -- format with space + f
vim.keymap.set("n", "<leader>f", "<cmd>lua vim.lsp.buf.format()<CR>") -- vim.keymap.set("n", "<leader>fb", "<cmd>lua vim.lsp.buf.format()<CR>",
-- { desc = "[F]ormat [B]uffer" })
nmap("<leader>fb", "<cmd>lua vim.lsp.buf.format()<CR>", "[F]ormat [B]uffer")
end) end)
lspzero.ensure_installed({ lspzero.ensure_installed({

View file

@ -6,15 +6,17 @@ return {
lualine.setup { lualine.setup {
options = { options = {
icons_enabled = true, icons_enabled = false,
section_separators = { --[[ section_separators = {
left = '', left = '',
right = '' right = ''
}, },
component_separators = { component_separators = {
left = '', left = '',
right = '' right = ''
}, }, ]]
section_separators = '',
component_separators = '|',
disabled_filetypes = {} disabled_filetypes = {}
}, },
sections = { sections = {

View file

@ -0,0 +1,70 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v2.x",
cmd = { "Neotree" },
keys = {
{ "<leader>fs", "<cmd>NeoTreeFloatToggle<CR>", desc = "Toggle [F]ile [S]ystem Floating Menu" },
{ "<C-b>", "<cmd>NeoTreeFocusToggle<CR>", desc = "Open Side File System" }
},
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = {
use_default_mappings = true,
mappings = {
["<space>"] = {
"toggle_node",
nowait = true, -- disable `nowait` if you have existing combos starting with this char that you want to use
},
["<2-LeftMouse>"] = "open",
["<cr>"] = "open",
["<esc>"] = "cancel", -- close preview or floating neo-tree window
["P"] = { "toggle_preview", config = { use_float = true } },
["l"] = "focus_preview",
["O"] = "open_split",
["o"] = "open_vsplit",
["S"] = "none",
["s"] = "none",
-- ["S"] = "split_with_window_picker",
-- ["s"] = "vsplit_with_window_picker",
["t"] = "open_tabnew",
-- ["<cr>"] = "open_drop",
-- ["t"] = "open_tab_drop",
["w"] = "open_with_window_picker",
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
["C"] = "close_node",
-- ['C'] = 'close_all_subnodes',
["z"] = "close_all_nodes",
--["Z"] = "expand_all_nodes",
["a"] = {
"add",
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
-- some commands may take optional config options, see `:h neo-tree-mappings` for details
config = {
show_path = "none" -- "none", "relative", "absolute"
}
},
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
["d"] = "delete",
["r"] = "rename",
["y"] = "copy_to_clipboard",
["x"] = "cut_to_clipboard",
["p"] = "paste_from_clipboard",
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
-- ["c"] = {
-- "copy",
-- config = {
-- show_path = "none" -- "none", "relative", "absolute"
-- }
--}
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
["q"] = "close_window",
["R"] = "refresh",
["?"] = "show_help",
["<"] = "prev_source",
[">"] = "next_source",
}
}
}

View file

@ -0,0 +1,10 @@
return {
"folke/neodev.nvim",
enabled = false,
config = {
library = {
plugins = true,
types = true,
}
}
}

View file

@ -0,0 +1,21 @@
return {
"rcarriga/nvim-dap-ui",
dependencies = {
'mfussenegger/nvim-dap',
},
config = function()
local dap, dapui = require("dap"), require("dapui")
dapui.setup({
width = 50,
})
dap.listeners.after.event_initialized['dapui_config'] = function()
dapui.open()
end
dap.listeners.before.event_terminated['dapui_config'] = function()
dapui.close()
end
dap.listeners.before.event_exited['dapui_config'] = function()
dapui.close()
end
end
}

View file

@ -0,0 +1,63 @@
local DEBUGGER_PATH = vim.fn.stdpath("data") .. "/lazy/vscode-js-debug"
return {
{
"microsoft/vscode-js-debug",
lazy = true,
build = "npm install --legacy-peer-deps && npx gulp vsDebugServerBundle && mv dist out",
},
{
'mxsdev/nvim-dap-vscode-js',
dependencies = {
"mfussenegger/nvim-dap",
},
config = function()
local dapVsCode = require("dap-vscode-js")
dapVsCode.setup({
node_path = "node",
debugger_path = DEBUGGER_PATH,
adapters = {
"pwa-node",
"pwa-chrome",
"pwa-msedge",
"pwa-extensionHost",
"node-terminal",
}
})
for _, language in ipairs({ "typescript", "javascript" }) do
require("dap").configurations[language] = {
{
type = "pwa-node",
request = "launch",
name = "Launch file (node)",
program = "${file}",
cwd = "${workspaceFolder}",
},
{
type = "pwa-node",
request = "attach",
name = "Attach (node)",
processId = require('dap.utils').pick_process,
cwd = "${workspaceFolder}",
},
{
type = "pwa-node",
request = "launch",
name = "Debug Jest Tests",
trace = true,
runtimeExecutable = "node",
runtimeArgs = {
"./node_modules/jest/bin/jest.js",
"--runInBand",
},
rootPath = "${workspaceFolder}",
cwd = "${workspaceFolder}",
console = "integratedTerminal",
internalConsoleOptions = "neverOpen",
},
}
end
end
}
}

View file

@ -0,0 +1,78 @@
return {
'mfussenegger/nvim-dap',
config = function()
local status, wk = pcall(require, "which-key")
local dap_breakpoints = {
breakpoint = {
text = "",
texthl = "LspDiagnosticsSignError",
linehl = "",
numhl = "",
},
rejected = {
text = "",
texthl = "LspDiagnosticsSignHint",
linehl = "",
numhl = "",
},
stopped = {
text = "",
texthl = "LspDiagnosticsSignInformation",
linehl = "DiagnosticUnderlineInfo",
numhl = "LspDiagnosticsSignInformation",
},
}
vim.fn.sign_define("DapBreakpoint", dap_breakpoints.breakpoint)
vim.fn.sign_define("DapStopped", dap_breakpoints.stopped)
vim.fn.sign_define("DapBreakpointRejected", dap_breakpoints.rejected)
if not status then
local function nmap(key, action, desc)
vim.keymap.set(
"n",
"<leader>d" .. key,
action,
{
desc = "[D]AP: " .. desc,
noremap = true,
nowait = false,
silent = true
}
)
end
nmap("c", "<cmd>lua require'dap'.continue()<CR>", "[C]ontinue")
nmap("b", "<cmd>lua require'dap'.toggle_breakpoint()<CR>", "Toggle [B]reakpoint")
nmap("i", "<cmd>lua require'dap'.step_into()<CR>", "Step [I]nto")
nmap("o", "<cmd>lua require'dap'.step_over()<CR>", "Step [O]ver")
nmap("u", "<cmd>lua require'dap'.step_out()<CR>", "[U] Step Out")
nmap("x", "<cmd>lua require'dap'.terminate()<CR>", "[T]erminate")
nmap("q", "<cmd>lua require'dap'.close()<CR>", "[Q]uit")
else
local keymap = {
d = {
name = "DAP",
c = { "<cmd>lua require'dap'.continue()<CR>", "[C]ontinue" },
b = { "<cmd>lua require'dap'.toggle_breakpoint()<CR>", "Toggle [B]reakpoint" },
i = { "<cmd>lua require'dap'.step_into()<CR>", "Step [I]nto" },
o = { "<cmd>lua require'dap'.step_over()<CR>", "Step [O]ver" },
u = { "<cmd>lua require'dap'.step_out()<CR>", "[U] Step Out" },
x = { "<cmd>lua require'dap'.terminate()<CR>", "[T]erminate" },
q = { "<cmd>lua require'dap'.close()<CR>", "[Q]uit" },
},
}
local opts = {
mode = "n",
prefix = "<leader>",
buffer = nil,
silent = true,
noremap = true,
nowait = false,
}
wk.register(keymap, opts)
end
end
}

View file

@ -0,0 +1,6 @@
return {
"nvim-telescope/telescope-dap.nvim",
dependencies = {
'mfussenegger/nvim-dap'
},
}

View file

@ -4,4 +4,5 @@ return {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim", "nvim-lua/plenary.nvim",
}, },
enabled = false,
} }

View file

@ -0,0 +1,5 @@
return {
'nvim-telescope/telescope-fzf-native.nvim',
build = 'make',
enabled = true,
}

View file

@ -6,11 +6,11 @@ return {
local telescope = require("telescope") local telescope = require("telescope")
local actions = require("telescope.actions") local actions = require("telescope.actions")
local builtin = require("telescope.builtin") local builtin = require("telescope.builtin")
local fb_actions = require "telescope".extensions.file_browser.actions -- local fb_actions = require "telescope".extensions.file_browser.actions
--
local function telescope_buffer_dir() -- local function telescope_buffer_dir()
return vim.fn.expand("%:p:h") -- return vim.fn.expand("%:p:h")
end -- end
telescope.setup({ telescope.setup({
defaults = { defaults = {
@ -20,64 +20,73 @@ return {
} }
} }
}, },
extensions = { -- extensions = {
file_browser = { -- file_browser = {
theme = "dropdown", -- theme = "dropdown",
hijack_netrw = true, -- hijack_netrw = true,
hidden = true, -- hidden = true,
mappings = { -- mappings = {
['i'] = { -- ['i'] = {
['<C-w>'] = function() vim.cmd("normal vbd") end, -- ['<C-w>'] = function() vim.cmd("normal vbd") end,
['<C-j>'] = function(bufnr) actions.move_selection_next(bufnr) end, -- ['<C-j>'] = function(bufnr) actions.move_selection_next(bufnr) end,
['<C-k>'] = function(bufnr) actions.move_selection_previous(bufnr) end, -- ['<C-k>'] = function(bufnr) actions.move_selection_previous(bufnr) end,
['<C-s>'] = function(bufnr) actions.select_vertical(bufnr) end, -- ['<C-s>'] = function(bufnr) actions.select_vertical(bufnr) end,
}, -- },
['n'] = { -- ['n'] = {
['N'] = fb_actions.create, -- ['N'] = fb_actions.create,
['h'] = fb_actions.goto_parent_dir, -- ['h'] = fb_actions.goto_parent_dir,
['/'] = function() vim.cmd("startinsert") end, -- ['/'] = function() vim.cmd("startinsert") end,
['D'] = fb_actions.remove, -- ['D'] = fb_actions.remove,
['<C-s>'] = function(bufnr) actions.select_vertical(bufnr) end, -- ['<C-s>'] = function(bufnr) actions.select_vertical(bufnr) end,
['<C-a>'] = function(bufnr) actions.toggle_all(bufnr) end, -- ['<C-a>'] = function(bufnr) actions.toggle_all(bufnr) end,
} -- }
} -- }
}, -- },
} -- }
}) })
telescope.load_extension("file_browser") -- pcall(telescope.load_extension, "file_browser")
pcall(telescope.load_extension, "fzf")
pcall(telescope.load_extension, "dap")
-- Set up keymaps specific to telescope -- Builtin pickers
vim.keymap.set("n", ";f", function() vim.keymap.set("n", "<leader>sf", function()
builtin.find_files({ no_ignore = false, hidden = true }) builtin.find_files({ no_ignore = false, hidden = true })
end) end, { desc = "[S]earch [F]iles" })
vim.keymap.set("n", ";g", builtin.git_files) vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp Tags" })
vim.keymap.set("n", ";h", builtin.help_tags) vim.keymap.set("n", "<leader>sb", builtin.buffers, { desc = "[S]earch [B]uffers" })
vim.keymap.set("n", ";d", vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch [W]ord" })
function() vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" })
telescope.extensions.file_browser.file_browser({ vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" })
path = "%:p:h", vim.keymap.set("n", "gr", builtin.lsp_references, { desc = "[G]o to [R]eferences", noremap = true })
cwd = telescope_buffer_dir(),
respect_gitignore = true,
hidden = true,
grouped = true,
previewer = false,
initial_mode = "normal",
layout_config = { height = 40 }
})
end)
local status, wk = pcall(require, "which-key"); -- Git pickers
if status then vim.keymap.set("n", "<leader>gf", builtin.git_files, { desc = "Search [G]it [F]iles" })
wk.register({ vim.keymap.set("n", "<leader>gs", builtin.git_status, { desc = "List [G]it [S]tatus" })
[";"] = { vim.keymap.set("n", "<leader>gh", builtin.git_stash, { desc = "List [G]it [S]tash" })
name = "Telescope", vim.keymap.set("n", "<leader>gbb", builtin.git_branches, { desc = "List [G]it [B]ranches" })
f = { desc = "Search files in project" }, vim.keymap.set("n", "<leader>gc", builtin.git_bcommits, { desc = "List Buffer [G]it [C]ommits" })
d = { desc = "Open directory viewer" },
g = { desc = "Search git files" }, -- File Browser Ext
h = { desc = "Search help tags" }, -- vim.keymap.set("n", "<leader>od",
} -- function()
}) -- telescope.extensions.file_browser.file_browser({
end -- path = "%:p:h",
-- cwd = telescope_buffer_dir(),
-- respect_gitignore = true,
-- hidden = true,
-- grouped = true,
-- previewer = false,
-- initial_mode = "normal",
-- layout_config = { height = 40 }
-- })
-- end, { desc = "[O]pen [D]irectory" })
vim.keymap.set('n', '<leader>/', function()
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown({
winblend = 10,
previewer = false,
}))
end, { desc = '[/] Fuzzily serach in current buffer' })
end end
} }

View file

@ -5,28 +5,25 @@ return {
"BufReadPost", "BufReadPost",
"BufNewFile" "BufNewFile"
}, },
dependencies = {
"nvim-treesitter/nvim-treesitter-textobjects",
},
config = function() config = function()
local treesitter = require("nvim-treesitter.configs") local treesitter = require("nvim-treesitter.configs")
treesitter.setup { treesitter.setup {
-- A list of parser names, or "all" -- A list of parser names, or "all"
ensure_installed = { "vimdoc", "javascript", "typescript", "c", "lua", "rust" }, ensure_installed = { "vimdoc", "javascript", "typescript", "c", "lua", "rust" },
-- Install parsers synchronously (only applied to `ensure_installed`) -- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false, sync_install = false,
-- Automatically install missing parsers when entering buffer -- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true, auto_install = true,
highlight = { highlight = {
enable = true, enable = true,
}, },
context_commentstring = { context_commentstring = {
enable = true, enable = true,
}, },
incremental_selection = { incremental_selection = {
enable = true, enable = true,
keymaps = { keymaps = {
@ -35,7 +32,51 @@ return {
scope_incremental = "<C-s>", scope_incremental = "<C-s>",
node_decremental = "<M-p>" node_decremental = "<M-p>"
} }
} },
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
keymaps = {
-- You can use the capture groups defined in textobjects.scm
['aa'] = '@parameter.outer',
['ia'] = '@parameter.inner',
['af'] = '@function.outer',
['if'] = '@function.inner',
['ac'] = '@class.outer',
['ic'] = '@class.inner',
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
[']m'] = '@function.outer',
[']]'] = '@class.outer',
},
goto_next_end = {
[']M'] = '@function.outer',
[']['] = '@class.outer',
},
goto_previous_start = {
['[m'] = '@function.outer',
['[['] = '@class.outer',
},
goto_previous_end = {
['[M'] = '@function.outer',
['[]'] = '@class.outer',
},
},
swap = {
enable = true,
swap_next = {
['<leader>]'] = '@parameter.inner',
},
swap_previous = {
['<leader>['] = '@parameter.inner',
},
},
},
} }
end end
} }