mirror of
https://github.com/Cian-H/dotfiles.git
synced 2025-12-22 19:31:57 +00:00
Upgraded yazi plugins
This commit is contained in:
@@ -1,5 +1,42 @@
|
|||||||
[plugin]
|
[[plugin.deps]]
|
||||||
deps = [{ use = "Reledia/glow", rev = "5ce76dc" }, { use = "Reledia/hexyl", rev = "39d3d4e" }, { use = "Rolv-Apneseth/starship", rev = "9c37d37" }, { use = "yazi-rs/plugins:git", rev = "71c4fc2" }, { use = "yazi-rs/plugins:full-border", rev = "71c4fc2" }, { use = "yazi-rs/plugins:chmod", rev = "71c4fc2" }, { use = "yazi-rs/plugins:max-preview", rev = "71c4fc2" }, { use = "yazi-rs/plugins:mime-ext", rev = "71c4fc2" }]
|
use = "Reledia/glow"
|
||||||
|
rev = "5ce76dc"
|
||||||
|
hash = "52e5f5c602962e7cbf874da28f52ba45"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "Reledia/hexyl"
|
||||||
|
rev = "39d3d4e"
|
||||||
|
hash = "dd624cbaff94af65f39fd86bc57b340"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "Rolv-Apneseth/starship"
|
||||||
|
rev = "f6939fb"
|
||||||
|
hash = "8ae899541dc7accb680ee4fd382a09c"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:git"
|
||||||
|
rev = "beb586a"
|
||||||
|
hash = "771f18427fb75fb19990ce602bb322f4"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:full-border"
|
||||||
|
rev = "beb586a"
|
||||||
|
hash = "ae9e1d0c6bfd68cdebc98cc684c22b45"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:chmod"
|
||||||
|
rev = "beb586a"
|
||||||
|
hash = "f28138c2e11e87962b66d583fef724c3"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:max-preview"
|
||||||
|
rev = "beb586a"
|
||||||
|
hash = "15b2ff7f6563c14d5b2e93b3e9da35de"
|
||||||
|
|
||||||
|
[[plugin.deps]]
|
||||||
|
use = "yazi-rs/plugins:mime-ext"
|
||||||
|
rev = "beb586a"
|
||||||
|
hash = "b03f3d80d26b6d7bb490b1380e9cb754"
|
||||||
|
|
||||||
[flavor]
|
[flavor]
|
||||||
deps = []
|
deps = []
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
|
|
||||||
local selected_or_hovered = ya.sync(function()
|
local selected_or_hovered = ya.sync(function()
|
||||||
local tab, paths = cx.active, {}
|
local tab, paths = cx.active, {}
|
||||||
for _, u in pairs(tab.selected) do
|
for _, u in pairs(tab.selected) do
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
|
|
||||||
local function setup(_, opts)
|
local function setup(_, opts)
|
||||||
local type = opts and opts.type or ui.Border.ROUNDED
|
local type = opts and opts.type or ui.Border.ROUNDED
|
||||||
local old_build = Tab.build
|
local old_build = Tab.build
|
||||||
@@ -17,9 +19,9 @@ local function setup(_, opts)
|
|||||||
|
|
||||||
local c = self._chunks
|
local c = self._chunks
|
||||||
self._chunks = {
|
self._chunks = {
|
||||||
c[1]:padding(ui.Padding.y(1)),
|
c[1]:pad(ui.Pad.y(1)),
|
||||||
c[2]:padding(ui.Padding(c[1].w > 0 and 0 or 1, c[3].w > 0 and 0 or 1, 1, 1)),
|
c[2]:pad(ui.Pad(1, c[3].w > 0 and 0 or 1, 1, c[1].w > 0 and 0 or 1)),
|
||||||
c[3]:padding(ui.Padding.y(1)),
|
c[3]:pad(ui.Pad.y(1)),
|
||||||
}
|
}
|
||||||
|
|
||||||
local style = THEME.manager.border_style
|
local style = THEME.manager.border_style
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# git.yazi
|
# git.yazi
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Yazi v0.4.1 or later is required for this plugin to work.
|
> Yazi v25.2.7 or later is required for this plugin to work.
|
||||||
|
|
||||||
Show the status of Git file changes as linemode in the file list.
|
Show the status of Git file changes as linemode in the file list.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
|
|
||||||
local WIN = ya.target_family() == "windows"
|
local WIN = ya.target_family() == "windows"
|
||||||
local PATS = {
|
local PATS = {
|
||||||
{ "[MT]", 6 }, -- Modified
|
{ "[MT]", 6 }, -- Modified
|
||||||
@@ -145,11 +147,11 @@ local function setup(st, opts)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not change or signs[change] == "" then
|
if not change or signs[change] == "" then
|
||||||
return ui.Line("")
|
return ""
|
||||||
elseif self._file:is_hovered() then
|
elseif self._file:is_hovered() then
|
||||||
return ui.Line { ui.Span(" "), ui.Span(signs[change]) }
|
return ui.Line { " ", signs[change] }
|
||||||
else
|
else
|
||||||
return ui.Line { ui.Span(" "), ui.Span(signs[change]):style(styles[change]) }
|
return ui.Line { " ", ui.Span(signs[change]):style(styles[change]) }
|
||||||
end
|
end
|
||||||
end, opts.order)
|
end, opts.order)
|
||||||
end
|
end
|
||||||
@@ -159,7 +161,7 @@ local function fetch(_, job)
|
|||||||
local repo = root(cwd)
|
local repo = root(cwd)
|
||||||
if not repo then
|
if not repo then
|
||||||
remove(tostring(cwd))
|
remove(tostring(cwd))
|
||||||
return 1
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
local paths = {}
|
local paths = {}
|
||||||
@@ -175,8 +177,7 @@ local function fetch(_, job)
|
|||||||
:stdout(Command.PIPED)
|
:stdout(Command.PIPED)
|
||||||
:output()
|
:output()
|
||||||
if not output then
|
if not output then
|
||||||
ya.err("Cannot spawn git command, error: " .. err)
|
return true, Err("Cannot spawn `git` command, error: %s", err)
|
||||||
return 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local changed, ignored = {}, {}
|
local changed, ignored = {}, {}
|
||||||
@@ -202,7 +203,7 @@ local function fetch(_, job)
|
|||||||
end
|
end
|
||||||
add(tostring(cwd), repo, changed)
|
add(tostring(cwd), repo, changed)
|
||||||
|
|
||||||
return 3
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
return { setup = setup, fetch = fetch }
|
return { setup = setup, fetch = fetch }
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
--- @sync entry
|
--- @sync entry
|
||||||
|
|
||||||
local function entry(st)
|
local function entry(st)
|
||||||
@@ -17,7 +17,6 @@ Add this to your `~/.config/yazi/yazi.toml`:
|
|||||||
```toml
|
```toml
|
||||||
[[plugin.prepend_fetchers]]
|
[[plugin.prepend_fetchers]]
|
||||||
id = "mime"
|
id = "mime"
|
||||||
if = "!(mime|dummy)"
|
|
||||||
name = "*"
|
name = "*"
|
||||||
run = "mime-ext"
|
run = "mime-ext"
|
||||||
prio = "high"
|
prio = "high"
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
|
|
||||||
local FILES = {
|
local FILES = {
|
||||||
[".envrc"] = "text/plain",
|
[".envrc"] = "text/plain",
|
||||||
[".gitconfig"] = "text/plain",
|
[".gitconfig"] = "text/plain",
|
||||||
[".gitignore"] = "text/plain",
|
[".gitignore"] = "text/plain",
|
||||||
[".luacheckrc"] = "text/lua",
|
[".luacheckrc"] = "text/lua",
|
||||||
|
[".npmrc"] = "text/plain",
|
||||||
[".styluaignore"] = "text/plain",
|
[".styluaignore"] = "text/plain",
|
||||||
[".zshenv"] = "text/plain",
|
[".zshenv"] = "text/plain",
|
||||||
[".zshrc"] = "text/plain",
|
[".zshrc"] = "text/plain",
|
||||||
@@ -72,6 +75,8 @@ local EXTS = {
|
|||||||
bcpio = "application/bcpio",
|
bcpio = "application/bcpio",
|
||||||
bdf = "application/font-bdf",
|
bdf = "application/font-bdf",
|
||||||
bdm = "application/syncml.dm+wbxml",
|
bdm = "application/syncml.dm+wbxml",
|
||||||
|
bean = "text/plain",
|
||||||
|
beancount = "text/plain",
|
||||||
bed = "application/realvnc.bed",
|
bed = "application/realvnc.bed",
|
||||||
bh2 = "application/fujitsu.oasysprs",
|
bh2 = "application/fujitsu.oasysprs",
|
||||||
bin = "application/octet-stream",
|
bin = "application/octet-stream",
|
||||||
@@ -602,6 +607,7 @@ local EXTS = {
|
|||||||
p7s = "application/pkcs7-signature",
|
p7s = "application/pkcs7-signature",
|
||||||
p8 = "application/pkcs8",
|
p8 = "application/pkcs8",
|
||||||
pas = "text/pascal",
|
pas = "text/pascal",
|
||||||
|
patch = "text/diff",
|
||||||
paw = "application/pawaafile",
|
paw = "application/pawaafile",
|
||||||
pbd = "application/powerbuilder6",
|
pbd = "application/powerbuilder6",
|
||||||
pbm = "image/portable-bitmap",
|
pbm = "image/portable-bitmap",
|
||||||
@@ -1064,8 +1070,13 @@ function M:fetch(job)
|
|||||||
local merged_files = ya.dict_merge(FILES, opts.with_files or {})
|
local merged_files = ya.dict_merge(FILES, opts.with_files or {})
|
||||||
local merged_exts = ya.dict_merge(EXTS, opts.with_exts or {})
|
local merged_exts = ya.dict_merge(EXTS, opts.with_exts or {})
|
||||||
|
|
||||||
local updates, unknown = {}, {}
|
local updates, unknown, state = {}, {}, {}
|
||||||
for _, file in ipairs(job.files) do
|
for i, file in ipairs(job.files) do
|
||||||
|
if file.cha.is_dummy then
|
||||||
|
state[i] = false
|
||||||
|
goto continue
|
||||||
|
end
|
||||||
|
|
||||||
local mime
|
local mime
|
||||||
if file.cha.len == 0 then
|
if file.cha.len == 0 then
|
||||||
mime = "inode/empty"
|
mime = "inode/empty"
|
||||||
@@ -1075,12 +1086,13 @@ function M:fetch(job)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if mime then
|
if mime then
|
||||||
updates[tostring(file.url)] = mime
|
updates[tostring(file.url)], state[i] = mime, true
|
||||||
elseif opts.fallback_file1 then
|
elseif opts.fallback_file1 then
|
||||||
unknown[#unknown + 1] = file
|
unknown[#unknown + 1] = file
|
||||||
else
|
else
|
||||||
updates[tostring(file.url)] = "application/octet-stream"
|
updates[tostring(file.url)], state[i] = "application/octet-stream", true
|
||||||
end
|
end
|
||||||
|
::continue::
|
||||||
end
|
end
|
||||||
|
|
||||||
if next(updates) then
|
if next(updates) then
|
||||||
@@ -1088,11 +1100,27 @@ function M:fetch(job)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if #unknown > 0 then
|
if #unknown > 0 then
|
||||||
job.files = unknown
|
return self.fallback_builtin(job, unknown, state)
|
||||||
return require("mime"):fetch(job)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return 1
|
return state
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.fallback_builtin(job, unknown, state)
|
||||||
|
local indices = {}
|
||||||
|
for i, f in ipairs(job.files) do
|
||||||
|
indices[f:hash()] = i
|
||||||
|
end
|
||||||
|
|
||||||
|
local result = require("mime"):fetch(ya.dict_merge(job, { files = unknown }))
|
||||||
|
for i, f in ipairs(unknown) do
|
||||||
|
if type(result) == "table" then
|
||||||
|
state[indices[f:hash()]] = result[i]
|
||||||
|
else
|
||||||
|
state[indices[f:hash()]] = result
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return state
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
@@ -32,15 +32,24 @@ Add this to `~/.config/yazi/init.lua`:
|
|||||||
require("starship"):setup()
|
require("starship"):setup()
|
||||||
```
|
```
|
||||||
|
|
||||||
If you wish to define a custom config file for `starship` to use, you can pass in a path
|
Make sure you have [starship](https://github.com/starship/starship) installed and in your `PATH`.
|
||||||
to the setup function like this:
|
|
||||||
|
## Config
|
||||||
|
|
||||||
|
Here is an example with all available config options:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
starship:setup({ config_file = "/home/rolv/.config/starship_secondary.toml" })
|
require("starship"):setup({
|
||||||
|
-- Hide flags (such as filter, find and search). This is recommended for starship themes which
|
||||||
|
-- are intended to go across the entire width of the terminal.
|
||||||
|
hide_flags = false, -- Default: false
|
||||||
|
-- Whether to place flags after the starship prompt. False means the flags will be placed before the prompt.
|
||||||
|
flags_after_prompt = true, -- Default: true
|
||||||
|
-- Custom starship configuration file to use
|
||||||
|
config_file = "~/.config/starship_full.toml", -- Default: nil
|
||||||
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure you have [starship](https://github.com/starship/starship) installed and in your `PATH`.
|
|
||||||
|
|
||||||
## Extra
|
## Extra
|
||||||
|
|
||||||
If you use a `starship` theme with a background colour, it might look a bit to cramped on just the one line `Yazi` gives the header by default. To fix this, you can add this to your `init.lua`:
|
If you use a `starship` theme with a background colour, it might look a bit to cramped on just the one line `Yazi` gives the header by default. To fix this, you can add this to your `init.lua`:
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
local save = ya.sync(function(st, cwd, output)
|
|
||||||
if cx.active.current.cwd == Url(cwd) then
|
|
||||||
st.output = output
|
|
||||||
ya.render()
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Helper function for accessing the `config_file` state variable
|
|
||||||
---@return string
|
|
||||||
local get_config_file = ya.sync(function(st)
|
|
||||||
return st.config_file
|
|
||||||
end)
|
|
||||||
|
|
||||||
return {
|
|
||||||
---User arguments for setup method
|
|
||||||
---@class SetupArgs
|
|
||||||
---@field config_file string Absolute path to a starship config file
|
|
||||||
|
|
||||||
--- Setup plugin
|
|
||||||
--- @param st table State
|
|
||||||
--- @param args SetupArgs|nil
|
|
||||||
setup = function(st, args)
|
|
||||||
-- Replace default header widget
|
|
||||||
Header:children_remove(1, Header.LEFT)
|
|
||||||
Header:children_add(function()
|
|
||||||
return ui.Line.parse(st.output or "")
|
|
||||||
end, 1000, Header.LEFT)
|
|
||||||
|
|
||||||
-- Check for custom starship config file
|
|
||||||
if args ~= nil and args.config_file ~= nil then
|
|
||||||
local url = Url(args.config_file)
|
|
||||||
if url.is_regular then
|
|
||||||
local config_file = args.config_file
|
|
||||||
|
|
||||||
-- Manually replace '~' and '$HOME' at the start of the path with the OS environment variable
|
|
||||||
local home = os.getenv("HOME")
|
|
||||||
if home then
|
|
||||||
home = tostring(home)
|
|
||||||
config_file = config_file:gsub("^~", home):gsub("^$HOME", home)
|
|
||||||
end
|
|
||||||
|
|
||||||
st.config_file = config_file
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Pass current working directory and custom config path (if specified) to the plugin's entry point
|
|
||||||
---Callback for subscribers to update the prompt
|
|
||||||
local callback = function()
|
|
||||||
local cwd = cx.active.current.cwd
|
|
||||||
if st.cwd ~= cwd then
|
|
||||||
st.cwd = cwd
|
|
||||||
ya.manager_emit("plugin", {
|
|
||||||
st._id,
|
|
||||||
args = ya.quote(tostring(cwd), true),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Subscribe to events
|
|
||||||
ps.sub("cd", callback)
|
|
||||||
ps.sub("tab", callback)
|
|
||||||
end,
|
|
||||||
|
|
||||||
entry = function(_, job_or_args)
|
|
||||||
-- yazi 2024-11-29 changed the way arguments are passed to the plugin
|
|
||||||
-- entry point. They were moved inside {args = {...}}. If the user is using
|
|
||||||
-- a version before this change, they can use the old implementation.
|
|
||||||
-- https://github.com/sxyazi/yazi/pull/1966
|
|
||||||
local args = job_or_args.args or job_or_args
|
|
||||||
local command = Command("starship"):arg("prompt"):cwd(args[1]):env("STARSHIP_SHELL", "")
|
|
||||||
|
|
||||||
-- Point to custom starship config
|
|
||||||
local config_file = get_config_file()
|
|
||||||
if config_file then
|
|
||||||
command = command:env("STARSHIP_CONFIG", config_file)
|
|
||||||
end
|
|
||||||
|
|
||||||
local output = command:output()
|
|
||||||
if output then
|
|
||||||
save(args[1], output.stdout:gsub("^%s+", ""))
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
138
dot_config/yazi/plugins/starship.yazi/main.lua
Normal file
138
dot_config/yazi/plugins/starship.yazi/main.lua
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
--- @since 25.2.7
|
||||||
|
|
||||||
|
-- For development
|
||||||
|
--[[ local function notify(message) ]]
|
||||||
|
--[[ ya.notify({ title = "Starship", content = message, timeout = 5 }) ]]
|
||||||
|
--[[ end ]]
|
||||||
|
|
||||||
|
local save = ya.sync(function(st, cwd, output)
|
||||||
|
if cx.active.current.cwd == Url(cwd) then
|
||||||
|
st.output = output
|
||||||
|
ya.render()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Helper function for accessing the `config_file` state variable
|
||||||
|
---@return string
|
||||||
|
local get_config_file = ya.sync(function(st)
|
||||||
|
return st.config_file
|
||||||
|
end)
|
||||||
|
|
||||||
|
return {
|
||||||
|
---User arguments for setup method
|
||||||
|
---@class SetupArgs
|
||||||
|
---@field config_file string Absolute path to a starship config file
|
||||||
|
---@field hide_flags boolean Whether to hide all flags (such as filter and search). Recommended for themes which are intended to take the full width of the terminal.
|
||||||
|
---@field flags_after_prompt boolean Whether to place flags (such as filter and search) after the starship prompt. By default this is true.
|
||||||
|
|
||||||
|
--- Setup plugin
|
||||||
|
--- @param st table State
|
||||||
|
--- @param args SetupArgs|nil
|
||||||
|
setup = function(st, args)
|
||||||
|
local hide_flags = false
|
||||||
|
local flags_after_prompt = true
|
||||||
|
|
||||||
|
-- Check setup args
|
||||||
|
if args ~= nil then
|
||||||
|
if args.config_file ~= nil then
|
||||||
|
local url = Url(args.config_file)
|
||||||
|
if url.is_regular then
|
||||||
|
local config_file = args.config_file
|
||||||
|
|
||||||
|
-- Manually replace '~' and '$HOME' at the start of the path with the OS environment variable
|
||||||
|
local home = os.getenv("HOME")
|
||||||
|
if home then
|
||||||
|
home = tostring(home)
|
||||||
|
config_file = config_file:gsub("^~", home):gsub("^$HOME", home)
|
||||||
|
end
|
||||||
|
|
||||||
|
st.config_file = config_file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.hide_flags ~= nil then
|
||||||
|
hide_flags = args.hide_flags
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.flags_after_prompt ~= nil then
|
||||||
|
flags_after_prompt = args.flags_after_prompt
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Replace default header widget
|
||||||
|
Header:children_remove(1, Header.LEFT)
|
||||||
|
Header:children_add(function(self)
|
||||||
|
local max = self._area.w - self._right_width
|
||||||
|
if max <= 0 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
if hide_flags or not st.output then
|
||||||
|
return ui.Line.parse(st.output or "")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Split `st.output` at the first line break (or keep as is if none was found)
|
||||||
|
local output = st.output:match("([^\n]*)\n?") or st.output
|
||||||
|
|
||||||
|
local flags = self:flags()
|
||||||
|
if flags_after_prompt then
|
||||||
|
output = output .. " " .. flags
|
||||||
|
else
|
||||||
|
output = flags .. " " .. output
|
||||||
|
end
|
||||||
|
|
||||||
|
return ui.Line.parse(output)
|
||||||
|
end, 1000, Header.LEFT)
|
||||||
|
|
||||||
|
-- Pass current working directory and custom config path (if specified) to the plugin's entry point
|
||||||
|
---Callback for subscribers to update the prompt
|
||||||
|
local callback = function()
|
||||||
|
local cwd = cx.active.current.cwd
|
||||||
|
if st.cwd ~= cwd then
|
||||||
|
st.cwd = cwd
|
||||||
|
|
||||||
|
if ya.confirm then
|
||||||
|
-- >= yazi 25.2.7
|
||||||
|
ya.manager_emit("plugin", {
|
||||||
|
st._id,
|
||||||
|
ya.quote(tostring(cwd), true),
|
||||||
|
})
|
||||||
|
else
|
||||||
|
-- < yazi 25.2.7
|
||||||
|
ya.manager_emit("plugin", {
|
||||||
|
st._id,
|
||||||
|
args = ya.quote(tostring(cwd), true),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Subscribe to events
|
||||||
|
ps.sub("cd", callback)
|
||||||
|
ps.sub("tab", callback)
|
||||||
|
end,
|
||||||
|
|
||||||
|
entry = function(_, job_or_args)
|
||||||
|
-- yazi 2024-11-29 changed the way arguments are passed to the plugin
|
||||||
|
-- entry point. They were moved inside {args = {...}}. If the user is using
|
||||||
|
-- a version before this change, they can use the old implementation.
|
||||||
|
-- https://github.com/sxyazi/yazi/pull/1966
|
||||||
|
local args = job_or_args.args or job_or_args
|
||||||
|
local command = Command("starship")
|
||||||
|
:arg("prompt")
|
||||||
|
:stdin(Command.INHERIT)
|
||||||
|
:cwd(args[1])
|
||||||
|
:env("STARSHIP_SHELL", "")
|
||||||
|
|
||||||
|
-- Point to custom starship config
|
||||||
|
local config_file = get_config_file()
|
||||||
|
if config_file then
|
||||||
|
command = command:env("STARSHIP_CONFIG", config_file)
|
||||||
|
end
|
||||||
|
|
||||||
|
local output = command:output()
|
||||||
|
if output then
|
||||||
|
save(args[1], output.stdout:gsub("^%s+", ""))
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user