Meh I'll figure out submodules later
This commit is contained in:
parent
4ca9d44a90
commit
8cb281f436
352 changed files with 66107 additions and 0 deletions
124
.config/nvim/pack/tree/start/neo-tree.nvim/lua/neo-tree.lua
Normal file
124
.config/nvim/pack/tree/start/neo-tree.nvim/lua/neo-tree.lua
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
local M = {}
|
||||
|
||||
--- To be removed in a future release, use this instead:
|
||||
--- ```lua
|
||||
--- require("neo-tree.command").execute({ action = "close" })
|
||||
--- ```
|
||||
---@deprecated
|
||||
M.close_all = function()
|
||||
require("neo-tree.command").execute({ action = "close" })
|
||||
end
|
||||
|
||||
---@type neotree.Config?
|
||||
local new_user_config = nil
|
||||
|
||||
---Updates the config of neo-tree using the latest user config passed through setup, if any.
|
||||
---@return neotree.Config.Base
|
||||
M.ensure_config = function()
|
||||
if not M.config or new_user_config then
|
||||
M.config = require("neo-tree.setup").merge_config(new_user_config)
|
||||
new_user_config = nil
|
||||
end
|
||||
return M.config
|
||||
end
|
||||
|
||||
---A performance-focused version for checking a specific key of a config while trying not to do expensive setup work
|
||||
---@return neotree.Config.Base
|
||||
M.peek_config = function()
|
||||
return new_user_config or M.ensure_config()
|
||||
end
|
||||
|
||||
---@param ignore_filetypes string[]?
|
||||
---@param ignore_winfixbuf boolean?
|
||||
M.get_prior_window = function(ignore_filetypes, ignore_winfixbuf)
|
||||
local utils = require("neo-tree.utils")
|
||||
ignore_filetypes = ignore_filetypes or {}
|
||||
local ignore = utils.list_to_dict(ignore_filetypes)
|
||||
ignore["neo-tree"] = true
|
||||
|
||||
local tabid = vim.api.nvim_get_current_tabpage()
|
||||
local wins = utils.prior_windows[tabid]
|
||||
if wins == nil then
|
||||
return -1
|
||||
end
|
||||
local win_index = #wins
|
||||
while win_index > 0 do
|
||||
local last_win = wins[win_index]
|
||||
if type(last_win) == "number" then
|
||||
local success, is_valid = pcall(vim.api.nvim_win_is_valid, last_win)
|
||||
if success and is_valid and not (ignore_winfixbuf and utils.is_winfixbuf(last_win)) then
|
||||
local buf = vim.api.nvim_win_get_buf(last_win)
|
||||
local ft = vim.bo[buf].filetype
|
||||
local bt = vim.bo[buf].buftype or "normal"
|
||||
if ignore[ft] ~= true and ignore[bt] ~= true then
|
||||
return last_win
|
||||
end
|
||||
end
|
||||
end
|
||||
win_index = win_index - 1
|
||||
end
|
||||
return -1
|
||||
end
|
||||
|
||||
M.paste_default_config = function()
|
||||
local utils = require("neo-tree.utils")
|
||||
---@type string
|
||||
local base_path = assert(debug.getinfo(utils.truthy).source:match("@(.*)/utils/init.lua$"))
|
||||
---@type string
|
||||
local config_path = base_path .. utils.path_separator .. "defaults.lua"
|
||||
---@type string[]?
|
||||
local lines = vim.fn.readfile(config_path)
|
||||
if lines == nil then
|
||||
error("Could not read neo-tree.defaults")
|
||||
end
|
||||
|
||||
-- read up to the end of the config, jut to omit the final return
|
||||
---@type string[]
|
||||
local config = {}
|
||||
for _, line in ipairs(lines) do
|
||||
table.insert(config, line)
|
||||
if line == "}" then
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_put(config, "l", true, false)
|
||||
vim.schedule(function()
|
||||
vim.cmd("normal! `[v`]=")
|
||||
end)
|
||||
end
|
||||
|
||||
M.set_log_level = function(level)
|
||||
require("neo-tree.log").set_level(level)
|
||||
end
|
||||
|
||||
---Ideally this should only be in plugin/neo-tree.lua but lazy-loading might mean this runs before bufenter
|
||||
---@param path string? The path to check
|
||||
---@return boolean hijacked Whether we hijacked a buffer
|
||||
local function try_netrw_hijack(path)
|
||||
if not path or #path == 0 then
|
||||
return false
|
||||
end
|
||||
|
||||
local stats = (vim.uv or vim.loop).fs_stat(path)
|
||||
if not stats or stats.type ~= "directory" then
|
||||
return false
|
||||
end
|
||||
|
||||
return require("neo-tree.setup.netrw").hijack()
|
||||
end
|
||||
|
||||
---@param config neotree.Config
|
||||
M.setup = function(config)
|
||||
-- merging is deferred until ensure_config
|
||||
new_user_config = config
|
||||
if vim.v.vim_did_enter == 0 then
|
||||
try_netrw_hijack(vim.fn.argv(0) --[[@as string]])
|
||||
end
|
||||
end
|
||||
|
||||
M.show_logs = function()
|
||||
vim.cmd("tabnew " .. require("neo-tree.log").outfile)
|
||||
end
|
||||
|
||||
return M
|
||||
Loading…
Add table
Add a link
Reference in a new issue