From eeac79c629141e90da4df9a150c10360d062d63e Mon Sep 17 00:00:00 2001 From: fugotakefusa Date: Sun, 30 Nov 2025 12:02:33 +1300 Subject: [PATCH] 123 --- lua/config/keymaps.lua | 57 ++++++++++++++++++++++++++++++++++++--- lua/plugins/neo-tree.lua | 24 +++++++++++++++++ lua/plugins/telescope.lua | 4 +++ 3 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 lua/plugins/neo-tree.lua diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index a4ae8d65..be3bb6be 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -20,10 +20,6 @@ map("n", "-", "Oil", { desc = "Open parent directory" } ) map("n", "cc", "cd %:p:h", { desc = "Change current dir to a current buffer" }) map("n", "ot", function() - vim.cmd.new() - vim.cmd.term() - vim.cmd.wincmd("J") - vim.api.nvim_win_set_height(0, 15) end) map("t", "", "", { desc = "Escape to Normal mode in terminal" }) @@ -33,3 +29,56 @@ map("v", "p", '"_dP', { desc = "Replace and paste with blackhole registe map("n", "", "zz", { desc = "Page up and center" }) map("n", "", "zz", { desc = "Page down and center" }) + +-- toggle window +local function toggle(bufname, open_window_func) + + local bufnr = vim.fn.bufnr(bufname) + + if bufnr ~= -1 then + -- Remove buffer from memory + vim.api.nvim_buf_delete(bufnr, { force = false }) + -- get window number where a buffer attaches to + local wins = vim.fn.win_findbuf(bufnr) + for _, win in ipairs(wins) do + vim.api.nvim_win_close(win, false) + end + + else + open_window_func() + end +end + +-- toggle oil as a side bar +--map( +-- 'n', +-- '-', +-- function () +-- local function open_oil() +-- vim.cmd("vsplit") +-- vim.cmd("wincmd H") +-- vim.cmd("vertical resize 30") +-- vim.cmd("Oil") +-- end +-- toggle("oil://*", open_oil) +-- end, +-- { desc = "Toggle Oil" } +--) + +-- toggle terminal +map( + 'n', + 't', + function () + local function open_terminal() + vim.cmd.new() + vim.cmd.term() + vim.cmd.wincmd("J") + vim.api.nvim_win_set_height(0, 15) + vim.cmd("startinsert") + end + toggle("term://*", open_terminal) + end, + { desc = "Toggle Terminal" } +) + diff --git a/lua/plugins/neo-tree.lua b/lua/plugins/neo-tree.lua new file mode 100644 index 00000000..e0824fd9 --- /dev/null +++ b/lua/plugins/neo-tree.lua @@ -0,0 +1,24 @@ +return { + "nvim-neo-tree/neo-tree.nvim", + branch = "v3.x", + dependencies = { + "nvim-lua/plenary.nvim", + "MunifTanjim/nui.nvim", + "nvim-tree/nvim-web-devicons", -- optional, but recommended + }, + config = function() + require("neo-tree").setup({ + close_if_last_window = true, -- auto close if it's the last window + popup_border_style = "rounded", + enable_git_status = true, + enable_diagnostics = true, + filesystem = { + follow_current_file = { enabled = true }, -- auto-focus current file + use_libuv_file_watcher = true, -- auto-refresh + }, + }) + + -- Keymaps: toggle Neo-tree easily + vim.keymap.set("n", "n", "Neotree toggle", { desc = "Toggle Neo-tree" }) + end, +} diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua index c1d5c734..778996e5 100644 --- a/lua/plugins/telescope.lua +++ b/lua/plugins/telescope.lua @@ -7,6 +7,8 @@ return { { 'nvim-telescope/telescope-ui-select.nvim' }, + { "nvim-telescope/telescope-file-browser.nvim" }, + { 'nvim-telescope/telescope-fzf-native.nvim', -- `build` is used to run some command when the plugin is installed/updated. @@ -31,9 +33,11 @@ return { -- pcall is like try in python pcall(require('telescope').load_extension, 'fzf') pcall(require('telescope').load_extension, 'ui-select') + pcall(require('telescope').load_extension, 'file_browser') local keymap = vim.keymap.set local builtin = require 'telescope.builtin' + keymap("n", "fb", ":Telescope file_browser") keymap('n', 'fh', builtin.help_tags, { desc = '[F]ind [H]elp' }) keymap('n', 'fk', builtin.keymaps, { desc = '[F]ind [K]eymaps' }) keymap('n', 'ff', builtin.find_files, { desc = '[F]ind [F]iles' })