- Add `prefix` option to `bookmark_create()` function for setting default bookmark names
- Add `bookmark.prefix` configuration option for global bookmark prefix defaults
- Update README with bookmark prefix usage examples
Convert blocking jj commands to async using vim.fn.jobstart() to prevent UI
freezing during fetch, push, rebase, squash, and other heavy operations.
Changes:
- Implement execute_command_async() in runner with proper error handling
- Captures stdout from job and passes to success callback
- Supports stdin input for commands that require it
- Includes silent flag to suppress error notifications
- Replicates sync version's error handling behavior
- Convert blocking operations to async:
- handle_log_fetch, handle_log_push_all, handle_log_new
- handle_log_edit, handle_log_abandon, handle_log_describe
- describe.execute_describe, all init.lua commands
- Add push/fetch as public commands with CLI support:
- M.fetch() - fetch from remote
- M.push(opts) - push all changes or specific bookmark
- CLI: :J push, :J push <bookmark>, :J fetch
- Implement handle_log_push_bookmark() for revision under cursor:
- Retrieves and strips modified bookmark indicator (*)
- Pushes specific bookmark to remote
- Keybind: Shift+p in log buffer
- Update README with new keybinds:
- a: abandon revision under cursor
- f: fetch from remote
- p: push all changes
- Shift+p: push revision's bookmark
- Add Lua API docs for push command options
- Add close_on_edit option to close log buffer after editing a change (default: false)
- Rename handle_log_enter to handle_log_edit with close_on_exit parameter
- Update log keymaps to pass close_on_edit config to handlers
- Update config types and defaults in init.lua