initial
This commit is contained in:
commit
8cc59af68e
37 changed files with 72435 additions and 0 deletions
163
lua/helpers.lua
Normal file
163
lua/helpers.lua
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
local tele_status_ok, _ = pcall(require, "telescope")
|
||||
if not tele_status_ok then return end
|
||||
|
||||
local plen_status_ok, _ = pcall(require, "plenary")
|
||||
if not plen_status_ok then return end
|
||||
|
||||
local term_status_ok, _ = pcall(require, "toggleterm")
|
||||
if not term_status_ok then return end
|
||||
|
||||
local M = {}
|
||||
M.terminals = {}
|
||||
|
||||
local utils = require "telescope.utils"
|
||||
local pickers = require "telescope.pickers"
|
||||
local finders = require "telescope.finders"
|
||||
local make_entry = require "telescope.make_entry"
|
||||
local conf = require("telescope.config").values
|
||||
local Path = require "plenary.path"
|
||||
local toggleterm = require "toggleterm"
|
||||
local terms = require "toggleterm.terminal"
|
||||
|
||||
local function GetBaseDir(filePath)
|
||||
local sep = Path.path.sep
|
||||
if filePath:sub(1, #sep) == sep then
|
||||
return ""
|
||||
else
|
||||
return filePath:sub(1, string.find(filePath, sep))
|
||||
end
|
||||
end
|
||||
|
||||
local function file_exists(name)
|
||||
local f = io.open(name, "r")
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function GetBaseName(filePath)
|
||||
if filePath:sub(-1) == Path.path.sep then filePath = filePath:sub(1, -2) end
|
||||
local pos = string.find(filePath, Path.path.sep)
|
||||
while pos ~= nil do
|
||||
filePath = string.sub(filePath, pos + 1)
|
||||
pos = string.find(filePath, Path.path.sep)
|
||||
end
|
||||
return filePath
|
||||
end
|
||||
|
||||
local function buf_in_cwd(bufname, cwd)
|
||||
if cwd:sub(-1) ~= Path.path.sep then cwd = cwd .. Path.path.sep end
|
||||
local bufname_prefix = bufname:sub(1, #cwd)
|
||||
return bufname_prefix == cwd
|
||||
end
|
||||
|
||||
M.oldfiles = function(opts)
|
||||
local current_buffer = vim.api.nvim_get_current_buf()
|
||||
local current_file = vim.api.nvim_buf_get_name(current_buffer)
|
||||
local results = {}
|
||||
|
||||
for _, buffer in ipairs(vim.split(vim.fn.execute ":buffers! t", "\n")) do
|
||||
local match = tonumber(string.match(buffer, "%s*(%d+)"))
|
||||
local open_by_lsp = string.match(buffer, "line 0$")
|
||||
if match and not open_by_lsp then
|
||||
local file = vim.api.nvim_buf_get_name(match)
|
||||
if vim.loop.fs_stat(file) and match ~= current_buffer then table.insert(results, file) end
|
||||
end
|
||||
end
|
||||
|
||||
for _, file in ipairs(vim.v.oldfiles) do
|
||||
local file_stat = vim.loop.fs_stat(file)
|
||||
if file_stat and file_stat.type == "file" and not vim.tbl_contains(results, file) and file ~= current_file then
|
||||
if GetBaseName(file) ~= ".env" then table.insert(results, file) end
|
||||
end
|
||||
end
|
||||
|
||||
local cwd = vim.loop.cwd()
|
||||
cwd = cwd .. utils.get_separator()
|
||||
results = vim.tbl_filter(function(file) return buf_in_cwd(file, cwd) end, results)
|
||||
|
||||
pickers
|
||||
.new(opts, {
|
||||
prompt_title = "Oldfiles from " .. GetBaseName(cwd),
|
||||
finder = finders.new_table {
|
||||
results = results,
|
||||
entry_maker = make_entry.gen_from_file(opts),
|
||||
},
|
||||
sorter = conf.file_sorter(opts),
|
||||
previewer = conf.file_previewer(opts),
|
||||
})
|
||||
:find()
|
||||
end
|
||||
|
||||
function M.select_terminal()
|
||||
local terminals = terms.get_all()
|
||||
if #terminals > 0 then
|
||||
vim.ui.select(terminals, {
|
||||
prompt = "Please select a terminal to open (or focus): ",
|
||||
format_item = function(term) return term.id .. ": " .. term:_display_name() end,
|
||||
}, function(term)
|
||||
if not term then return end
|
||||
if term:is_open() then
|
||||
term:focus()
|
||||
else
|
||||
term:open()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function M.toggle_term()
|
||||
if #terms.get_all() > 0 then terms.get_last_focused():toggle() end
|
||||
end
|
||||
|
||||
function M.term_horizontal()
|
||||
local term, _ = terms.get_or_create_term(8, "horizontal", "horizontal")
|
||||
term:toggle(8, "horizontal")
|
||||
end
|
||||
|
||||
function M.term_vertical()
|
||||
local term, _ = terms.get_or_create_term(9, "vertical", "vertical")
|
||||
term:toggle(80, "vertical")
|
||||
end
|
||||
|
||||
function M.term_float()
|
||||
local term, _ = terms.get_or_create_term(11, "float", "float")
|
||||
term:toggle(0, "float")
|
||||
end
|
||||
|
||||
function M.openMDfile(executable)
|
||||
local file = vim.api.nvim_buf_get_name(0)
|
||||
if executable then M.MDexecutable = executable end
|
||||
vim.api.nvim_command("terminal flatpak run " .. M.MDexecutable .. " " .. file)
|
||||
end
|
||||
|
||||
function M.compile_sass()
|
||||
local term_num = 12
|
||||
local term = terms.get(term_num, true)
|
||||
local dist = "dist/css"
|
||||
local file_name = "compile_at"
|
||||
|
||||
if file_exists(file_name) then
|
||||
local file_ = io.open(file_name, "r")
|
||||
|
||||
if file_ ~= nil then
|
||||
dist = file_:read()
|
||||
file_:close()
|
||||
end
|
||||
end
|
||||
|
||||
local cmd = "node ~/.local/lib/node_modules/sass/sass.js --watch sass:" .. dist .. " -s compressed --no-source-map"
|
||||
|
||||
if term then
|
||||
term:toggle()
|
||||
else
|
||||
toggleterm.exec(cmd, term_num, 100, ".", "float", "compile_sass")
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
||||
-- vim: ts=4 sts=4 sw=4 expandtab
|
||||
Loading…
Add table
Add a link
Reference in a new issue