remove since I no longer use it
This commit is contained in:
parent
6f7b7da871
commit
cb49c2cb7a
3 changed files with 0 additions and 252 deletions
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2024 Rolv Apneseth
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,108 +0,0 @@
|
||||||
# starship.yazi
|
|
||||||
|
|
||||||
Starship prompt plugin for [Yazi](https://github.com/sxyazi/yazi)
|
|
||||||
|
|
||||||
<https://github.com/Rolv-Apneseth/starship.yazi/assets/69486699/f7314687-5cb1-4d66-8d9d-cca960ba6716>
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
- [Yazi](https://github.com/sxyazi/yazi) (v25.4.8+)
|
|
||||||
- [starship](https://github.com/starship/starship)
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ya pack -a Rolv-Apneseth/starship
|
|
||||||
```
|
|
||||||
|
|
||||||
### Manual
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Linux / MacOS
|
|
||||||
git clone https://github.com/Rolv-Apneseth/starship.yazi.git ~/.config/yazi/plugins/starship.yazi
|
|
||||||
# Windows
|
|
||||||
git clone https://github.com/Rolv-Apneseth/starship.yazi.git %AppData%\yazi\config\plugins\starship.yazi
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Add this to `~/.config/yazi/init.lua`:
|
|
||||||
|
|
||||||
```lua
|
|
||||||
require("starship"):setup()
|
|
||||||
```
|
|
||||||
|
|
||||||
Make sure you have [starship](https://github.com/starship/starship) installed and in your `PATH`.
|
|
||||||
|
|
||||||
## Config
|
|
||||||
|
|
||||||
Here is an example with all available config options:
|
|
||||||
|
|
||||||
```lua
|
|
||||||
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
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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`:
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Click to expand</summary>
|
|
||||||
|
|
||||||
```lua
|
|
||||||
local old_build = Tab.build
|
|
||||||
|
|
||||||
Tab.build = function(self, ...)
|
|
||||||
local bar = function(c, x, y)
|
|
||||||
if x <= 0 or x == self._area.w - 1 then
|
|
||||||
return ui.Bar(ui.Bar.TOP):area(ui.Rect.default)
|
|
||||||
end
|
|
||||||
|
|
||||||
return ui.Bar(ui.Bar.TOP)
|
|
||||||
:area(ui.Rect({
|
|
||||||
x = x,
|
|
||||||
y = math.max(0, y),
|
|
||||||
w = ya.clamp(0, self._area.w - x, 1),
|
|
||||||
h = math.min(1, self._area.h),
|
|
||||||
}))
|
|
||||||
:symbol(c)
|
|
||||||
end
|
|
||||||
|
|
||||||
local c = self._chunks
|
|
||||||
self._chunks = {
|
|
||||||
c[1]:pad(ui.Pad.y(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]:pad(ui.Pad.y(1)),
|
|
||||||
}
|
|
||||||
|
|
||||||
local style = th.mgr.border_style
|
|
||||||
self._base = ya.list_merge(self._base or {}, {
|
|
||||||
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):style(style),
|
|
||||||
ui.Bar(ui.Bar.LEFT):area(self._chunks[1]):style(style),
|
|
||||||
|
|
||||||
bar("┬", c[1].right - 1, c[1].y),
|
|
||||||
bar("┴", c[1].right - 1, c[1].bottom - 1),
|
|
||||||
bar("┬", c[2].right, c[2].y),
|
|
||||||
bar("┴", c[2].right, c[2].bottom - 1),
|
|
||||||
})
|
|
||||||
|
|
||||||
old_build(self, ...)
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> This works by overriding your `Tab.build` function so make sure this is the only place you're doing that in your config. For example, this would be incompatible with the [full-border plugin](https://github.com/yazi-rs/plugins/tree/main/full-border.yazi)
|
|
||||||
|
|
||||||
## Thanks
|
|
||||||
|
|
||||||
- [sxyazi](https://github.com/sxyazi) for providing the code for this plugin and the demo video [in this comment](https://github.com/sxyazi/yazi/issues/767#issuecomment-1977082834)
|
|
|
@ -1,123 +0,0 @@
|
||||||
--- @since 25.4.8
|
|
||||||
|
|
||||||
-- For development
|
|
||||||
--[[ local function notify(message) ]]
|
|
||||||
--[[ ya.notify({ title = "Starship", content = message, timeout = 3 }) ]]
|
|
||||||
--[[ end ]]
|
|
||||||
|
|
||||||
local save = ya.sync(function(st, _cwd, output)
|
|
||||||
st.output = output
|
|
||||||
ya.render()
|
|
||||||
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
|
|
||||||
|
|
||||||
ya.manager_emit("plugin", {
|
|
||||||
st._id,
|
|
||||||
ya.quote(tostring(cwd), true),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Subscribe to events
|
|
||||||
ps.sub("cd", callback)
|
|
||||||
ps.sub("tab", callback)
|
|
||||||
end,
|
|
||||||
|
|
||||||
entry = function(_, job)
|
|
||||||
local args = job.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,
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue