feat: Improved previewers and cleanup
This commit is contained in:
@@ -294,6 +294,8 @@ builtin.lsp_workspace_symbols = function(opts)
|
|||||||
end
|
end
|
||||||
|
|
||||||
builtin.quickfix = function(opts)
|
builtin.quickfix = function(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
|
||||||
local locations = vim.fn.getqflist()
|
local locations = vim.fn.getqflist()
|
||||||
|
|
||||||
if vim.tbl_isempty(locations) then
|
if vim.tbl_isempty(locations) then
|
||||||
@@ -603,6 +605,8 @@ builtin.planets = function(opts)
|
|||||||
|
|
||||||
print("Enjoy astronomy! You viewed:", selection.display)
|
print("Enjoy astronomy! You viewed:", selection.display)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
end,
|
end,
|
||||||
}:find()
|
}:find()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ local has_devicons, devicons = pcall(require, 'nvim-web-devicons')
|
|||||||
|
|
||||||
local utils = require('telescope.utils')
|
local utils = require('telescope.utils')
|
||||||
|
|
||||||
|
local get_default = utils.get_default
|
||||||
|
|
||||||
local make_entry = {}
|
local make_entry = {}
|
||||||
|
|
||||||
make_entry.types = {
|
make_entry.types = {
|
||||||
@@ -131,13 +133,16 @@ end
|
|||||||
|
|
||||||
function make_entry.gen_from_quickfix(opts)
|
function make_entry.gen_from_quickfix(opts)
|
||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
|
opts.tail_path = get_default(opts.tail_path, true)
|
||||||
|
|
||||||
local make_display = function(entry)
|
local make_display = function(entry)
|
||||||
local to_concat = {}
|
local to_concat = {}
|
||||||
|
|
||||||
if not opts.hide_filename then
|
if not opts.hide_filename then
|
||||||
local filename = entry.filename
|
local filename = entry.filename
|
||||||
if opts.shorten_path then
|
if opts.tail_path then
|
||||||
|
filename = utils.path_tail(filename)
|
||||||
|
elseif opts.shorten_path then
|
||||||
filename = utils.path_shorten(filename)
|
filename = utils.path_shorten(filename)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -151,17 +156,19 @@ function make_entry.gen_from_quickfix(opts)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return function(entry)
|
return function(entry)
|
||||||
|
local filename = entry.filename or vim.api.nvim_buf_get_name(entry.bufnr)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
valid = true,
|
valid = true,
|
||||||
|
|
||||||
value = entry,
|
value = entry,
|
||||||
ordinal = (
|
ordinal = (
|
||||||
not opts.ignore_filename and entry.filename
|
not opts.ignore_filename and filename
|
||||||
or ''
|
or ''
|
||||||
) .. ' ' .. entry.text,
|
) .. ' ' .. entry.text,
|
||||||
display = make_display,
|
display = make_display,
|
||||||
|
|
||||||
filename = entry.filename,
|
filename = filename,
|
||||||
lnum = entry.lnum,
|
lnum = entry.lnum,
|
||||||
col = entry.col,
|
col = entry.col,
|
||||||
text = entry.text,
|
text = entry.text,
|
||||||
|
|||||||
@@ -593,6 +593,9 @@ function Picker:set_selection(row)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: Probably should figure out what the rows are that made this happen...
|
||||||
|
-- Probably something with setting a row that's too high for this?
|
||||||
|
-- Not sure.
|
||||||
local set_ok, set_errmsg = pcall(function()
|
local set_ok, set_errmsg = pcall(function()
|
||||||
-- Handle adding '> ' to beginning of selections
|
-- Handle adding '> ' to beginning of selections
|
||||||
if self._selection_row then
|
if self._selection_row then
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ local from_entry = require('telescope.from_entry')
|
|||||||
local log = require('telescope.log')
|
local log = require('telescope.log')
|
||||||
local utils = require('telescope.utils')
|
local utils = require('telescope.utils')
|
||||||
|
|
||||||
local get_default = utils.get_default
|
local flatten = vim.tbl_flatten
|
||||||
local buf_delete = utils.buf_delete
|
local buf_delete = utils.buf_delete
|
||||||
local job_is_running = utils.job_is_running
|
local job_is_running = utils.job_is_running
|
||||||
|
|
||||||
@@ -16,7 +16,44 @@ local Previewer = {}
|
|||||||
Previewer.__index = Previewer
|
Previewer.__index = Previewer
|
||||||
|
|
||||||
-- TODO: Should play with these some more, ty @clason
|
-- TODO: Should play with these some more, ty @clason
|
||||||
local bat_options = " --style=plain --color=always "
|
local bat_options = {"--style=plain", "--color=always"}
|
||||||
|
local bat_maker = function(filename, lnum, start, finish)
|
||||||
|
local command = {"bat"}
|
||||||
|
|
||||||
|
if lnum then
|
||||||
|
table.insert(command, { "--highlight-line", lnum})
|
||||||
|
end
|
||||||
|
|
||||||
|
if start and finish then
|
||||||
|
table.insert(command, { "-r", string.format("%s:%s", start, finish) })
|
||||||
|
end
|
||||||
|
|
||||||
|
return flatten {
|
||||||
|
command, bat_options, "--", filename
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- TODO: Add other options for cat to do this better
|
||||||
|
local cat_maker = function(filename, lnum, start, finish)
|
||||||
|
return {
|
||||||
|
"cat", "--", filename
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local get_maker = function(opts)
|
||||||
|
local maker = opts.maker
|
||||||
|
if not maker and 1 == vim.fn.executable("bat") then
|
||||||
|
maker = bat_maker
|
||||||
|
elseif not maker and 1 == vim.fn.executable("cat") then
|
||||||
|
maker = cat_maker
|
||||||
|
end
|
||||||
|
|
||||||
|
if not maker then
|
||||||
|
error("Needs maker")
|
||||||
|
end
|
||||||
|
|
||||||
|
return maker
|
||||||
|
end
|
||||||
|
|
||||||
local previewer_ns = vim.api.nvim_create_namespace('telescope.previewers')
|
local previewer_ns = vim.api.nvim_create_namespace('telescope.previewers')
|
||||||
|
|
||||||
@@ -97,6 +134,7 @@ previewers.new_termopen_previewer = function(opts)
|
|||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
|
|
||||||
assert(opts.get_command, "get_command is a required function")
|
assert(opts.get_command, "get_command is a required function")
|
||||||
|
assert(not opts.preview_fn, "preview_fn not allowed")
|
||||||
|
|
||||||
local opt_setup = opts.setup
|
local opt_setup = opts.setup
|
||||||
local opt_teardown = opts.teardown
|
local opt_teardown = opts.teardown
|
||||||
@@ -104,45 +142,32 @@ previewers.new_termopen_previewer = function(opts)
|
|||||||
local old_bufs = {}
|
local old_bufs = {}
|
||||||
|
|
||||||
local function get_term_id(self)
|
local function get_term_id(self)
|
||||||
if not self.state then
|
if not self.state then return nil end
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
return self.state.termopen_id
|
return self.state.termopen_id
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_bufnr(self)
|
local function get_bufnr(self)
|
||||||
if not self.state then
|
if not self.state then return nil end
|
||||||
return nil
|
|
||||||
end
|
|
||||||
return self.state.termopen_bufnr
|
return self.state.termopen_bufnr
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_term_id(self, value)
|
local function set_term_id(self, value)
|
||||||
if job_is_running(get_term_id(self)) then
|
if job_is_running(get_term_id(self)) then vim.fn.jobstop(get_term_id(self)) end
|
||||||
vim.fn.jobstop(get_term_id(self))
|
if self.state then self.state.termopen_id = value end
|
||||||
end
|
|
||||||
|
|
||||||
if self.state then
|
|
||||||
self.state.termopen_id = value
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_bufnr(self, value)
|
local function set_bufnr(self, value)
|
||||||
if get_bufnr(self) then table.insert(old_bufs, get_bufnr(self)) end
|
if get_bufnr(self) then table.insert(old_bufs, get_bufnr(self)) end
|
||||||
if self.state then
|
if self.state then self.state.termopen_bufnr = value end
|
||||||
self.state.termopen_bufnr = value
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function setup(self)
|
function opts.setup(self)
|
||||||
local state = {}
|
local state = {}
|
||||||
if opt_setup then
|
if opt_setup then vim.tbl_deep_extend("force", state, opt_setup(self)) end
|
||||||
vim.tbl_deep_extend("force", state, opt_setup(self))
|
|
||||||
end
|
|
||||||
|
|
||||||
return state
|
return state
|
||||||
end
|
end
|
||||||
|
|
||||||
local function teardown(self)
|
function opts.teardown(self)
|
||||||
if opt_teardown then
|
if opt_teardown then
|
||||||
opt_teardown(self)
|
opt_teardown(self)
|
||||||
end
|
end
|
||||||
@@ -158,10 +183,9 @@ previewers.new_termopen_previewer = function(opts)
|
|||||||
for _, bufnr in ipairs(old_bufs) do
|
for _, bufnr in ipairs(old_bufs) do
|
||||||
buf_delete(bufnr)
|
buf_delete(bufnr)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function preview_fn(self, entry, status)
|
function opts.preview_fn(self, entry, status)
|
||||||
if get_bufnr(self) == nil then
|
if get_bufnr(self) == nil then
|
||||||
set_bufnr(self, vim.api.nvim_win_get_buf(status.preview_win))
|
set_bufnr(self, vim.api.nvim_win_get_buf(status.preview_win))
|
||||||
end
|
end
|
||||||
@@ -185,21 +209,19 @@ previewers.new_termopen_previewer = function(opts)
|
|||||||
vim.api.nvim_buf_set_name(bufnr, tostring(bufnr))
|
vim.api.nvim_buf_set_name(bufnr, tostring(bufnr))
|
||||||
end
|
end
|
||||||
|
|
||||||
return Previewer:new {
|
if not opts.send_input then
|
||||||
setup = setup,
|
function opts.send_input(self, input)
|
||||||
teardown = teardown,
|
|
||||||
preview_fn = preview_fn,
|
|
||||||
|
|
||||||
send_input = function(self, input)
|
|
||||||
local termcode = vim.api.nvim_replace_termcodes(input, true, false, true)
|
local termcode = vim.api.nvim_replace_termcodes(input, true, false, true)
|
||||||
|
|
||||||
local term_id = get_term_id(self)
|
local term_id = get_term_id(self)
|
||||||
if term_id then
|
if term_id then
|
||||||
vim.fn.chansend(term_id, termcode)
|
vim.fn.chansend(term_id, termcode)
|
||||||
end
|
end
|
||||||
end,
|
end
|
||||||
|
end
|
||||||
|
|
||||||
scroll_fn = function(self, direction)
|
if not opts.scroll_fn then
|
||||||
|
function opts.scroll_fn(self, direction)
|
||||||
if not self.state then
|
if not self.state then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -208,25 +230,11 @@ previewers.new_termopen_previewer = function(opts)
|
|||||||
local count = math.abs(direction)
|
local count = math.abs(direction)
|
||||||
|
|
||||||
self:send_input(count..input)
|
self:send_input(count..input)
|
||||||
end,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
previewers.termopen = defaulter(function(opts)
|
|
||||||
local command_string = assert(opts.command, 'opts.command is required')
|
|
||||||
|
|
||||||
return previewers.new {
|
|
||||||
preview_fn = function(_, entry, status)
|
|
||||||
local bufnr = vim.api.nvim_create_buf(false, true)
|
|
||||||
|
|
||||||
vim.api.nvim_win_set_buf(status.preview_win, bufnr)
|
|
||||||
|
|
||||||
with_preview_window(status, bufnr, function()
|
|
||||||
vim.fn.termopen(string.format(command_string, entry.value))
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
}
|
end
|
||||||
end, {})
|
|
||||||
|
return Previewer:new(opts)
|
||||||
|
end
|
||||||
|
|
||||||
previewers.vim_buffer = defaulter(function(_)
|
previewers.vim_buffer = defaulter(function(_)
|
||||||
return previewers.new {
|
return previewers.new {
|
||||||
@@ -282,6 +290,104 @@ previewers.vim_buffer = defaulter(function(_)
|
|||||||
end, {})
|
end, {})
|
||||||
|
|
||||||
|
|
||||||
|
previewers.cat = defaulter(function(opts)
|
||||||
|
local maker = get_maker(opts)
|
||||||
|
|
||||||
|
return previewers.new_termopen_previewer {
|
||||||
|
get_command = function(entry)
|
||||||
|
local path = from_entry.path(entry, true)
|
||||||
|
if path == nil then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
return maker(path)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
previewers.vimgrep = defaulter(function(opts)
|
||||||
|
local maker = get_maker(opts)
|
||||||
|
|
||||||
|
return previewers.new_termopen_previewer {
|
||||||
|
get_command = function(entry, status)
|
||||||
|
local win_id = status.preview_win
|
||||||
|
local height = vim.api.nvim_win_get_height(win_id)
|
||||||
|
|
||||||
|
local filename = entry.filename
|
||||||
|
local lnum = entry.lnum or 0
|
||||||
|
|
||||||
|
local context = math.floor(height / 2)
|
||||||
|
local start = math.max(0, lnum - context)
|
||||||
|
local finish = lnum + context
|
||||||
|
|
||||||
|
return maker(filename, lnum, start, finish)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
previewers.qflist = defaulter(function(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
|
||||||
|
local maker = get_maker(opts)
|
||||||
|
|
||||||
|
return previewers.new_termopen_previewer {
|
||||||
|
get_command = function(entry, status)
|
||||||
|
local win_id = status.preview_win
|
||||||
|
local height = vim.api.nvim_win_get_height(win_id)
|
||||||
|
|
||||||
|
local filename = entry.filename
|
||||||
|
local lnum = entry.lnum
|
||||||
|
|
||||||
|
local start, finish
|
||||||
|
if entry.start and entry.finish then
|
||||||
|
start = entry.start
|
||||||
|
finish = entry.finish
|
||||||
|
else
|
||||||
|
local context = math.floor(height / 2)
|
||||||
|
start = math.max(0, lnum - context)
|
||||||
|
finish = lnum + context
|
||||||
|
end
|
||||||
|
|
||||||
|
return maker(filename, lnum, start, finish)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
-- WIP
|
||||||
|
previewers.help = defaulter(function(_)
|
||||||
|
return previewers.new {
|
||||||
|
preview_fn = function(_, entry, status)
|
||||||
|
with_preview_window(status, nil, function()
|
||||||
|
local old_tags = vim.o.tags
|
||||||
|
vim.o.tags = vim.fn.expand("$VIMRUNTIME") .. '/doc/tags'
|
||||||
|
|
||||||
|
local taglist = vim.fn.taglist('^' .. entry.value .. '$')
|
||||||
|
if vim.tbl_isempty(taglist) then
|
||||||
|
taglist = vim.fn.taglist(entry.value)
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.tbl_isempty(taglist) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local best_entry = taglist[1]
|
||||||
|
local new_bufnr = vim.fn.bufnr(best_entry.filename, true)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_option(new_bufnr, 'filetype', 'help')
|
||||||
|
vim.api.nvim_win_set_buf(status.preview_win, new_bufnr)
|
||||||
|
|
||||||
|
vim.cmd [["gg"]]
|
||||||
|
print(best_entry.cmd)
|
||||||
|
vim.cmd(string.format([[execute "%s"]], best_entry.cmd))
|
||||||
|
|
||||||
|
vim.o.tags = old_tags
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
-- WIP
|
||||||
|
-- TODO: This needs a big rewrite.
|
||||||
previewers.vim_buffer_or_bat = defaulter(function(_)
|
previewers.vim_buffer_or_bat = defaulter(function(_)
|
||||||
return previewers.new {
|
return previewers.new {
|
||||||
preview_fn = function(_, entry, status)
|
preview_fn = function(_, entry, status)
|
||||||
@@ -317,131 +423,6 @@ previewers.vim_buffer_or_bat = defaulter(function(_)
|
|||||||
}
|
}
|
||||||
end, {})
|
end, {})
|
||||||
|
|
||||||
previewers.cat = defaulter(function(opts)
|
|
||||||
return previewers.new_termopen_previewer {
|
|
||||||
get_command = function(entry)
|
|
||||||
local path = from_entry.path(entry, true)
|
|
||||||
if path == nil then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
return string.format('bat %s -- "%s"', bat_options, path)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
previewers.vimgrep = defaulter(function(_)
|
|
||||||
local command_string = "cat -- '%s'"
|
|
||||||
if vim.fn.executable("bat") then
|
|
||||||
command_string = "bat --highlight-line '%s' -r '%s':'%s'" .. bat_options .. " -- '%s'"
|
|
||||||
end
|
|
||||||
|
|
||||||
return previewers.new_termopen_previewer {
|
|
||||||
get_command = function(entry, status)
|
|
||||||
local win_id = status.preview_win
|
|
||||||
local height = vim.api.nvim_win_get_height(win_id)
|
|
||||||
|
|
||||||
local filename = entry.filename
|
|
||||||
local lnum = entry.lnum or 0
|
|
||||||
|
|
||||||
local context = math.floor(height / 2)
|
|
||||||
local start = math.max(0, lnum - context)
|
|
||||||
local finish = lnum + context
|
|
||||||
|
|
||||||
return string.format(command_string, lnum, start, finish, filename)
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
previewers.qflist = defaulter(function(_)
|
|
||||||
return previewers.new {
|
|
||||||
setup = function()
|
|
||||||
local command_string = "cat '%s'"
|
|
||||||
if vim.fn.executable("bat") then
|
|
||||||
command_string = "bat '%s' --highlight-line '%s' -r '%s':'%s'" .. bat_options
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
command_string = command_string
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
|
|
||||||
preview_fn = function(self, entry, status)
|
|
||||||
local bufnr = vim.api.nvim_create_buf(false, true)
|
|
||||||
local win_id = status.preview_win
|
|
||||||
local height = vim.api.nvim_win_get_height(win_id)
|
|
||||||
|
|
||||||
local filename = entry.value.filename
|
|
||||||
local lnum = entry.value.lnum
|
|
||||||
|
|
||||||
local start, finish
|
|
||||||
if entry.start and entry.finish then
|
|
||||||
start = entry.start
|
|
||||||
finish = entry.finish
|
|
||||||
else
|
|
||||||
local context = math.floor(height / 2)
|
|
||||||
start = math.max(0, lnum - context)
|
|
||||||
finish = lnum + context
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_win_set_buf(status.preview_win, bufnr)
|
|
||||||
|
|
||||||
local termopen_command = string.format(self.state.command_string, filename, lnum, start, finish)
|
|
||||||
|
|
||||||
with_preview_window(status, bufnr, function()
|
|
||||||
vim.fn.termopen(termopen_command)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
previewers.help = defaulter(function(_)
|
|
||||||
return previewers.new {
|
|
||||||
preview_fn = function(_, entry, status)
|
|
||||||
with_preview_window(status, nil, function()
|
|
||||||
local old_tags = vim.o.tags
|
|
||||||
vim.o.tags = vim.fn.expand("$VIMRUNTIME") .. '/doc/tags'
|
|
||||||
|
|
||||||
local taglist = vim.fn.taglist('^' .. entry.value .. '$')
|
|
||||||
if vim.tbl_isempty(taglist) then
|
|
||||||
taglist = vim.fn.taglist(entry.value)
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.tbl_isempty(taglist) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local best_entry = taglist[1]
|
|
||||||
local new_bufnr = vim.fn.bufnr(best_entry.filename, true)
|
|
||||||
|
|
||||||
vim.api.nvim_buf_set_option(new_bufnr, 'filetype', 'help')
|
|
||||||
vim.api.nvim_win_set_buf(status.preview_win, new_bufnr)
|
|
||||||
|
|
||||||
vim.cmd [["gg"]]
|
|
||||||
print(best_entry.cmd)
|
|
||||||
vim.cmd(string.format([[execute "%s"]], best_entry.cmd))
|
|
||||||
|
|
||||||
vim.o.tags = old_tags
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
}
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
previewers.planet_previewer = previewers.new {
|
|
||||||
preview_fn = function(self, entry, status)
|
|
||||||
local bufnr = vim.api.nvim_create_buf(false, true)
|
|
||||||
|
|
||||||
vim.api.nvim_win_set_buf(status.preview_win, bufnr)
|
|
||||||
|
|
||||||
local termopen_command = "bat " .. entry.value
|
|
||||||
|
|
||||||
-- HACK! Requires `termopen` to accept buffer argument.
|
|
||||||
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.preview_win))
|
|
||||||
vim.fn.termopen(termopen_command)
|
|
||||||
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.prompt_win))
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
previewers.Previewer = Previewer
|
previewers.Previewer = Previewer
|
||||||
|
|
||||||
return previewers
|
return previewers
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
local utils = {}
|
local utils = {}
|
||||||
|
|
||||||
|
utils.get_separator = (function()
|
||||||
|
local val = package.config:sub(1, 1)
|
||||||
|
return function()
|
||||||
|
return val
|
||||||
|
end
|
||||||
|
end)()
|
||||||
|
|
||||||
utils.if_nil = function(x, was_nil, was_not_nil)
|
utils.if_nil = function(x, was_nil, was_not_nil)
|
||||||
if x == nil then
|
if x == nil then
|
||||||
return was_nil
|
return was_nil
|
||||||
@@ -114,6 +121,15 @@ utils.path_shorten = (function()
|
|||||||
end
|
end
|
||||||
end)()
|
end)()
|
||||||
|
|
||||||
|
utils.path_tail = (function()
|
||||||
|
local os_sep = utils.get_separator()
|
||||||
|
local match_string = '[^' .. os_sep .. ']*$'
|
||||||
|
|
||||||
|
return function(path)
|
||||||
|
return string.match(path, match_string)
|
||||||
|
end
|
||||||
|
end)()
|
||||||
|
|
||||||
-- local x = utils.make_default_callable(function(opts)
|
-- local x = utils.make_default_callable(function(opts)
|
||||||
-- return function()
|
-- return function()
|
||||||
-- print(opts.example, opts.another)
|
-- print(opts.example, opts.another)
|
||||||
@@ -138,10 +154,6 @@ function utils.make_default_callable(f, default_opts)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function utils.get_separator()
|
|
||||||
return package.config:sub(1, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
function utils.job_is_running(job_id)
|
function utils.job_is_running(job_id)
|
||||||
if job_id == nil then return false end
|
if job_id == nil then return false end
|
||||||
return vim.fn.jobwait({job_id}, 0)[1] == -1
|
return vim.fn.jobwait({job_id}, 0)[1] == -1
|
||||||
|
|||||||
Reference in New Issue
Block a user