Compare commits
12 Commits
last_dir_m
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ef1254d8a | ||
|
|
fcf947a3e5 | ||
|
|
320ac801ea | ||
|
|
e3b69263e1 | ||
|
|
c6ea5aece0 | ||
|
|
c841641bfa | ||
|
|
0f27237688 | ||
|
|
fbb7c00b6f | ||
|
|
3b6932eea6 | ||
|
|
a70648a22b | ||
|
|
41536aac59 | ||
|
|
95b2c586f4 |
24
README.md
24
README.md
@@ -6,7 +6,7 @@ https://github.com/dedukun/bookmarks.yazi/assets/25795432/9a9fe345-dd06-442e-99f
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Yazi](https://github.com/sxyazi/yazi) v25.2.7+
|
||||
- [Yazi](https://github.com/sxyazi/yazi) v25.4.8+
|
||||
|
||||
## Features
|
||||
|
||||
@@ -18,7 +18,7 @@ https://github.com/dedukun/bookmarks.yazi/assets/25795432/9a9fe345-dd06-442e-99f
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
ya pack -a dedukun/bookmarks
|
||||
ya pkg add dedukun/bookmarks
|
||||
```
|
||||
|
||||
## Import/Export bookmarks
|
||||
@@ -33,22 +33,23 @@ the bookmarks are saved in DDS's state file (`~/.local/state/yazi/.dds` on Linux
|
||||
Add this to your `keymap.toml`:
|
||||
|
||||
```toml
|
||||
[[manager.prepend_keymap]]
|
||||
# If your yazi version is lower than v25.5.28, repleace "mgr" by "manager".
|
||||
[[mgr.prepend_keymap]]
|
||||
on = [ "m" ]
|
||||
run = "plugin bookmarks save"
|
||||
desc = "Save current position as a bookmark"
|
||||
|
||||
[[manager.prepend_keymap]]
|
||||
[[mgr.prepend_keymap]]
|
||||
on = [ "'" ]
|
||||
run = "plugin bookmarks jump"
|
||||
desc = "Jump to a bookmark"
|
||||
|
||||
[[manager.prepend_keymap]]
|
||||
[[mgr.prepend_keymap]]
|
||||
on = [ "b", "d" ]
|
||||
run = "plugin bookmarks delete"
|
||||
desc = "Delete a bookmark"
|
||||
|
||||
[[manager.prepend_keymap]]
|
||||
[[mgr.prepend_keymap]]
|
||||
on = [ "b", "D" ]
|
||||
run = "plugin bookmarks delete_all"
|
||||
desc = "Delete all bookmarks"
|
||||
@@ -67,6 +68,7 @@ require("bookmarks"):setup({
|
||||
desc_format = "full",
|
||||
file_pick_mode = "hover",
|
||||
custom_desc_input = false,
|
||||
show_keys = false,
|
||||
notify = {
|
||||
enable = false,
|
||||
timeout = 1,
|
||||
@@ -144,3 +146,13 @@ For the `new` and `delete` messages, the `<key>` and `<folder>` keywords can be
|
||||
When enabled, user can change description for new bookmark before it is saved.
|
||||
|
||||
By default the custom description input is filled with path.
|
||||
|
||||
### `show_keys`
|
||||
|
||||
When enabled, saving a new bookmark will display a list of all available keys.
|
||||
|
||||
If a key already has a saved bookmark, its description will be shown.
|
||||
|
||||
This helps prevent accidental overwriting of existing bookmarks.
|
||||
|
||||
By default no information is shown.
|
||||
|
||||
58
main.lua
58
main.lua
@@ -1,18 +1,18 @@
|
||||
--- @since 25.2.7
|
||||
--- @since 25.4.8
|
||||
-- stylua: ignore
|
||||
local SUPPORTED_KEYS = {
|
||||
{ on = "0"}, { on = "1"}, { on = "2"}, { on = "3"}, { on = "4"},
|
||||
{ on = "5"}, { on = "6"}, { on = "7"}, { on = "8"}, { on = "9"},
|
||||
{ on = "A"}, { on = "B"}, { on = "C"}, { on = "D"}, { on = "E"},
|
||||
{ on = "F"}, { on = "G"}, { on = "H"}, { on = "I"}, { on = "J"},
|
||||
{ on = "K"}, { on = "L"}, { on = "M"}, { on = "N"}, { on = "O"},
|
||||
{ on = "P"}, { on = "Q"}, { on = "R"}, { on = "S"}, { on = "T"},
|
||||
{ on = "U"}, { on = "V"}, { on = "W"}, { on = "X"}, { on = "Y"}, { on = "Z"},
|
||||
{ on = "a"}, { on = "b"}, { on = "c"}, { on = "d"}, { on = "e"},
|
||||
{ on = "f"}, { on = "g"}, { on = "h"}, { on = "i"}, { on = "j"},
|
||||
{ on = "k"}, { on = "l"}, { on = "m"}, { on = "n"}, { on = "o"},
|
||||
{ on = "p"}, { on = "q"}, { on = "r"}, { on = "s"}, { on = "t"},
|
||||
{ on = "u"}, { on = "v"}, { on = "w"}, { on = "x"}, { on = "y"}, { on = "z"},
|
||||
{ on = "0", desc = "Free" }, { on = "1", desc = "Free" }, { on = "2", desc = "Free" }, { on = "3", desc = "Free" }, { on = "4", desc = "Free"},
|
||||
{ on = "5", desc = "Free" }, { on = "6", desc = "Free" }, { on = "7", desc = "Free" }, { on = "8", desc = "Free" }, { on = "9", desc = "Free"},
|
||||
{ on = "A", desc = "Free" }, { on = "B", desc = "Free" }, { on = "C", desc = "Free" }, { on = "D", desc = "Free" }, { on = "E", desc = "Free"},
|
||||
{ on = "F", desc = "Free" }, { on = "G", desc = "Free" }, { on = "H", desc = "Free" }, { on = "I", desc = "Free" }, { on = "J", desc = "Free"},
|
||||
{ on = "K", desc = "Free" }, { on = "L", desc = "Free" }, { on = "M", desc = "Free" }, { on = "N", desc = "Free" }, { on = "O", desc = "Free"},
|
||||
{ on = "P", desc = "Free" }, { on = "Q", desc = "Free" }, { on = "R", desc = "Free" }, { on = "S", desc = "Free" }, { on = "T", desc = "Free"},
|
||||
{ on = "U", desc = "Free" }, { on = "V", desc = "Free" }, { on = "W", desc = "Free" }, { on = "X", desc = "Free" }, { on = "Y", desc = "Free"}, { on = "Z", desc = "Free" },
|
||||
{ on = "a", desc = "Free" }, { on = "b", desc = "Free" }, { on = "c", desc = "Free" }, { on = "d", desc = "Free" }, { on = "e", desc = "Free"},
|
||||
{ on = "f", desc = "Free" }, { on = "g", desc = "Free" }, { on = "h", desc = "Free" }, { on = "i", desc = "Free" }, { on = "j", desc = "Free"},
|
||||
{ on = "k", desc = "Free" }, { on = "l", desc = "Free" }, { on = "m", desc = "Free" }, { on = "n", desc = "Free" }, { on = "o", desc = "Free"},
|
||||
{ on = "p", desc = "Free" }, { on = "q", desc = "Free" }, { on = "r", desc = "Free" }, { on = "s", desc = "Free" }, { on = "t", desc = "Free"},
|
||||
{ on = "u", desc = "Free" }, { on = "v", desc = "Free" }, { on = "w", desc = "Free" }, { on = "x", desc = "Free" }, { on = "y", desc = "Free"}, { on = "z", desc = "Free" },
|
||||
}
|
||||
|
||||
local _send_notification = ya.sync(
|
||||
@@ -50,7 +50,7 @@ local _generate_description = ya.sync(function(state, file)
|
||||
end
|
||||
|
||||
if state.desc_format == "parent" then
|
||||
return tostring(file.url:parent())
|
||||
return tostring(file.url.parent)
|
||||
end
|
||||
-- full description
|
||||
return tostring(file.url)
|
||||
@@ -139,12 +139,27 @@ local save_last_jump = ya.sync(function(state) _save_last(state.last_persist, tr
|
||||
|
||||
local save_last_mark = ya.sync(function(state) _save_last(state.last_persist, true) end)
|
||||
|
||||
local _is_show_keys_enabled = ya.sync(function(state) return state.show_keys end)
|
||||
|
||||
local _is_custom_desc_input_enabled = ya.sync(function(state) return state.custom_desc_input end)
|
||||
|
||||
-- ***********************************************
|
||||
-- **============= C O M M A N D S =============**
|
||||
-- ***********************************************
|
||||
|
||||
local get_updated_keys = ya.sync(function(state, keys)
|
||||
if state.bookmarks then
|
||||
for _, bookmarks_value in pairs(state.bookmarks) do
|
||||
for _, keys_value in pairs(keys) do
|
||||
if keys_value.on == bookmarks_value.on then
|
||||
keys_value.desc = bookmarks_value.desc
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return keys
|
||||
end)
|
||||
|
||||
local save_bookmark = ya.sync(function(state, idx, custom_desc)
|
||||
local file = _get_bookmark_file()
|
||||
|
||||
@@ -155,7 +170,7 @@ local save_bookmark = ya.sync(function(state, idx, custom_desc)
|
||||
_idx = #state.bookmarks + 1
|
||||
end
|
||||
|
||||
local bookmark_desc = tostring(file.url)
|
||||
local bookmark_desc = tostring(_generate_description(file))
|
||||
if custom_desc then
|
||||
bookmark_desc = tostring(custom_desc)
|
||||
end
|
||||
@@ -256,7 +271,10 @@ return {
|
||||
end
|
||||
|
||||
if action == "save" then
|
||||
local key = ya.which { cands = SUPPORTED_KEYS, silent = true }
|
||||
if _is_show_keys_enabled() then
|
||||
SUPPORTED_KEYS = get_updated_keys(SUPPORTED_KEYS)
|
||||
end
|
||||
local key = ya.which { cands = SUPPORTED_KEYS, silent = not _is_show_keys_enabled() }
|
||||
if key then
|
||||
if _is_custom_desc_input_enabled() then
|
||||
local value, event = ya.input {
|
||||
@@ -292,9 +310,9 @@ return {
|
||||
end
|
||||
|
||||
if bookmarks[selected].is_parent then
|
||||
ya.manager_emit("cd", { bookmarks[selected].path })
|
||||
ya.mgr_emit("cd", { bookmarks[selected].path })
|
||||
else
|
||||
ya.manager_emit("reveal", { bookmarks[selected].path })
|
||||
ya.mgr_emit("reveal", { bookmarks[selected].path })
|
||||
end
|
||||
elseif action == "delete" then
|
||||
delete_bookmark(selected)
|
||||
@@ -351,6 +369,10 @@ return {
|
||||
state.custom_desc_input = args.custom_desc_input
|
||||
end
|
||||
|
||||
if type(args.show_keys) == "boolean" then
|
||||
state.show_keys = args.show_keys
|
||||
end
|
||||
|
||||
state.notify = {
|
||||
enable = false,
|
||||
timeout = 1,
|
||||
|
||||
Reference in New Issue
Block a user