refactor: add tnf package

This commit is contained in:
Dinesh Salunke 2025-01-03 20:09:04 +05:30
parent e087408b1f
commit 6cd3836bd7
5 changed files with 133 additions and 42 deletions

View File

@ -10,8 +10,7 @@
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"conform.nvim": { "branch": "master", "commit": "9180320205d250429f0f80e073326c674e2a7149" },
"copilot.lua": { "branch": "master", "commit": "886ee73b6d464b2b3e3e6a7ff55ce87feac423a9" },
"conform.nvim": { "branch": "master", "commit": "990d37017e193fe40bdabf058e598e76f5e7d929" },
"dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" },
"flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" },
"gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" },
@ -35,13 +34,13 @@
"nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" },
"nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lspconfig": { "branch": "master", "commit": "8b15a1a597a59f4f5306fad9adfe99454feab743" },
"nvim-notify": { "branch": "master", "commit": "c3797193536711b5d8983975791c4b11dc35ab3a" },
"nvim-lspconfig": { "branch": "master", "commit": "a8ef5e6e497b3ebeaaf35b939c07c211563b2e05" },
"nvim-notify": { "branch": "master", "commit": "bd9cd51f9ef2f6326fc2bc9931d0718c1794e247" },
"nvim-spectre": { "branch": "master", "commit": "08be31c104df3b4b049607694ebb2b6ced4f928b" },
"nvim-treesitter": { "branch": "master", "commit": "b6492f41c46d9c3bc3550ecfb10c3f261e73cba6" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" },
"nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" },
"nvim-web-devicons": { "branch": "master", "commit": "4adeeaa7a32d46cf3b5833341358c797304f950a" },
"nvim-web-devicons": { "branch": "master", "commit": "5740b7382429d20b6ed0bbdb0694185af9507d44" },
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
"smart-splits.nvim": { "branch": "master", "commit": "d2da32b76b89126609f4142bd55279c8723cb050" },

View File

@ -0,0 +1,79 @@
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local Path = require("plenary.path")
local built_in = require("telescope.builtin")
local os_sep = Path.path.sep
local is_dir = function(path)
if Path.is_path(path) then
return path:is_dir()
end
return string.sub(path, -1, -1) == os_sep
end
local create_file = function(file)
if not file then
return
end
if file == "" then
vim.notify(
string.format("[file_browser.%s] %s", "actions.create", "Please enter a valid file or folder name!"),
vim.log.levels.WARN,
{
title = "telescope-file-browser.nvim",
}
)
return
end
file = Path:new(file)
if file:exists() then
vim.notify(
string.format("[file_browser.%s] %s", "actions.create", "Selection already exists!"),
vim.log.levels.WARN,
{
title = "telescope-file-browser.nvim",
}
)
return
end
if not is_dir(file.filename) then
file:touch({ parents = true })
else
Path:new(file.filename:sub(1, -2)):mkdir({ parents = true, mode = 493 }) -- 493 => decimal for mode 0755
end
return file
end
local get_dropdown = require("telescope.themes").get_dropdown
local tnf = function()
built_in.find_files(get_dropdown({
previewer = false,
find_command = { "find", ".", "-type", "d", "-not", "-path", "*/node_modules/*" },
attach_mappings = function(prompt_bufnr)
actions.select_default:replace(function()
local current_picker = action_state.get_current_picker(prompt_bufnr)
local entry = action_state.get_selected_entry()
if entry then
local base_dir = action_state.get_selected_entry().value .. os_sep
current_picker:reset_prompt(base_dir, true)
else
local file_path = current_picker:_get_prompt()
actions.close(prompt_bufnr)
local file = create_file(file_path)
if file then
vim.cmd.edit(file:absolute())
end
end
end)
return true
end,
}))
end
return require("telescope").register_extension({
exports = {
tnf = tnf,
},
})

View File

@ -71,3 +71,5 @@ map("n", "<leader><tab>[", "<cmd>tabprevious<cr>", { desc = "Previous Tab" })
-- map("t", "<esc>", [[<c-\><c-n>]], { desc = "Escape on terminal" })
map("n", "<C-a>", "gg<S-v>G", { desc = "Select all" })
map("n", "<leader>nf", "<cmd>Telescope tnf<cr>", { desc = "Telescope new file" })

View File

@ -104,44 +104,50 @@ return {
desc = "[ L ]ist [ D ]ef[ i ]nitions",
},
},
opts = {
defaults = {
prompt_prefix = "",
selection_caret = "",
sorting_strategy = "ascending",
path_display = {
"smart",
},
layout_config = {
horizontal = {
prompt_position = "top",
width = 0.75,
height = 0.65,
preview_width = 0.6,
config = function(_, opts)
local telescope = require("telescope")
telescope.setup({
defaults = {
prompt_prefix = "",
selection_caret = "",
sorting_strategy = "ascending",
path_display = {
"smart",
},
layout_config = {
horizontal = {
prompt_position = "top",
width = 0.75,
height = 0.65,
preview_width = 0.6,
},
},
mappings = {
i = {
["<C-k>"] = function(...)
require("telescope.actions").move_selection_previous(...)
end,
["<C-j>"] = function(...)
require("telescope.actions").move_selection_next(...)
end,
["<c-t>"] = function(...)
require("trouble.providers.telescope").open_with_trouble(...)
end,
},
n = {
q = function(...)
require("telescope.actions").close(...)
end,
["<c-t>"] = function(...)
require("trouble.providers.telescope").open_with_trouble(...)
end,
},
},
},
mappings = {
i = {
["<C-k>"] = function(...)
require("telescope.actions").move_selection_previous(...)
end,
["<C-j>"] = function(...)
require("telescope.actions").move_selection_next(...)
end,
["<c-t>"] = function(...)
require("trouble.providers.telescope").open_with_trouble(...)
end,
},
n = {
q = function(...)
require("telescope.actions").close(...)
end,
["<c-t>"] = function(...)
require("trouble.providers.telescope").open_with_trouble(...)
end,
},
},
},
},
})
telescope.load_extension("tnf")
end,
},
}

5
lua/plugins/tnf.lua Normal file
View File

@ -0,0 +1,5 @@
return {
"thob/tnf.nvim",
dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
dir = "~/.config/nvim/lua/_plugins/tnf.nvim",
}