diff --git a/yazi/init.lua b/yazi/init.lua index 857c54b..aba01b2 100644 --- a/yazi/init.lua +++ b/yazi/init.lua @@ -1,43 +1,48 @@ -local function setup(_, opts) - local type = opts and opts.type or ui.Border.ROUNDED - local old_build = Tab.build +-- local function setup(_, opts) +-- local type = opts and opts.type or ui.Border.ROUNDED +-- 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.Rect.default, ui.Bar.TOP) - end +-- Tab.build = function(self, ...) +-- local bar = function(c, x, y) +-- if x <= 0 or x == self._area.w - 1 then +-- return ui.Bar(ui.Rect.default, ui.Bar.TOP) +-- end - return ui.Bar( - 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) }, - ui.Bar.TOP - ):symbol(c) - end +-- return ui.Bar( +-- 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) }, +-- ui.Bar.TOP +-- ):symbol(c) +-- end - local c = self._chunks - self._chunks = { - c[1]:padding(ui.Padding.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[3]:padding(ui.Padding.y(1)), - } +-- local c = self._chunks +-- self._chunks = { +-- c[1]:padding(ui.Padding.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[3]:padding(ui.Padding.y(1)), +-- } - local style = THEME.manager.border_style - self._base = ya.list_merge(self._base or {}, { - ui.Border(self._area, ui.Border.ALL):type(type):style(style), - ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style), - ui.Bar(self._chunks[3], ui.Bar.LEFT):style(style), +-- local style = THEME.manager.border_style +-- self._base = ya.list_merge(self._base or {}, { +-- ui.Border(self._area, ui.Border.ALL):type(type):style(style), +-- ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style), +-- ui.Bar(self._chunks[3], ui.Bar.LEFT):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), - }) +-- 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 -end +-- old_build(self, ...) +-- end +-- end -setup { +-- setup { +-- -- Available values: ui.Border.PLAIN, ui.Border.ROUNDED +-- type = ui.Border.ROUNDED, +-- } + +require("full-border"):setup { -- Available values: ui.Border.PLAIN, ui.Border.ROUNDED type = ui.Border.ROUNDED, } diff --git a/yazi/plugins/full-border.yazi/DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY b/yazi/plugins/full-border.yazi/DO_NOT_MODIFY_ANYTHING_IN_THIS_DIRECTORY new file mode 100644 index 0000000..e69de29 diff --git a/yazi/plugins/full-border.yazi/LICENSE b/yazi/plugins/full-border.yazi/LICENSE new file mode 100644 index 0000000..fb5b1d6 --- /dev/null +++ b/yazi/plugins/full-border.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 yazi-rs + +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. diff --git a/yazi/plugins/full-border.yazi/README.md b/yazi/plugins/full-border.yazi/README.md new file mode 100644 index 0000000..6e78bd4 --- /dev/null +++ b/yazi/plugins/full-border.yazi/README.md @@ -0,0 +1,32 @@ +# full-border.yazi + +Add a full border to Yazi to make it look fancier. + +![full-border](https://github.com/yazi-rs/plugins/assets/17523360/ef81b560-2465-4d36-abf2-5d21dcb7b987) + +## Installation + +```sh +ya pack -a yazi-rs/plugins:full-border +``` + +## Usage + +Add this to your `init.lua` to enable the plugin: + +```lua +require("full-border"):setup() +``` + +Or you can customize the border type: + +```lua +require("full-border"):setup { + -- Available values: ui.Border.PLAIN, ui.Border.ROUNDED + type = ui.Border.ROUNDED, +} +``` + +## License + +This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. diff --git a/yazi/plugins/full-border.yazi/init.lua b/yazi/plugins/full-border.yazi/init.lua new file mode 100644 index 0000000..958ae67 --- /dev/null +++ b/yazi/plugins/full-border.yazi/init.lua @@ -0,0 +1,50 @@ +-- TODO: remove this once v0.4 is released +local v4 = function(typ, area, ...) + if typ == "bar" then + return ui.Table and ui.Bar(...):area(area) or ui.Bar(area, ...) + else + return ui.Table and ui.Border(...):area(area) or ui.Border(area, ...) + end +end + +local function setup(_, opts) + local type = opts and opts.type or ui.Border.ROUNDED + 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 v4("bar", ui.Rect.default, ui.Bar.TOP) + end + + return v4( + "bar", + 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) }, + ui.Bar.TOP + ):symbol(c) + end + + local c = self._chunks + self._chunks = { + c[1]:padding(ui.Padding.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[3]:padding(ui.Padding.y(1)), + } + + local style = THEME.manager.border_style + self._base = ya.list_merge(self._base or {}, { + v4("border", self._area, ui.Border.ALL):type(type):style(style), + v4("bar", self._chunks[1], ui.Bar.RIGHT):style(style), + v4("bar", self._chunks[3], ui.Bar.LEFT):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 +end + +return { setup = setup }