mirror of
https://github.com/zoriya/jj.nvim.git
synced 2026-08-05 10:46:08 +00:00
- Add M.setup() to cmd module for configuration
- Move describe editor config to M.config.describe.editor with nested structure
- Add keymaps config with separate log, status, and close sections
- Implement resolve_keymaps_from_specs() helper to build keymap lists from config
- Extract editor.open_editor() keymaps parameter support
- Move status/log event handlers from terminal.lua to cmd.lua
- Convert log/status buffer keymaps to config-driven approach with handler specs
66 lines
1.6 KiB
Lua
66 lines
1.6 KiB
Lua
local M = {}
|
|
local cmd = require("jj.cmd")
|
|
local picker = require("jj.picker")
|
|
local editor = require("jj.ui.editor")
|
|
local diff = require("jj.diff")
|
|
local utils = require("jj.utils")
|
|
|
|
--- Jujutsu plugin configuration
|
|
--- @class jj.Config
|
|
--- @field cmd? jj.cmd.opts Options for command module
|
|
--- @field picker? jj.picker.config Options for picker module
|
|
M.config = {
|
|
-- Default configuration
|
|
--- @type jj.picker.config
|
|
picker = {
|
|
snacks = {},
|
|
},
|
|
--- @type jj.ui.editor.highlights Highlight configuration for describe buffer
|
|
highlights = {
|
|
added = { fg = "#3fb950", ctermfg = "Green" },
|
|
modified = { fg = "#56d4dd", ctermfg = "Cyan" },
|
|
deleted = { fg = "#f85149", ctermfg = "Red" },
|
|
renamed = { fg = "#d29922", ctermfg = "Yellow" },
|
|
},
|
|
}
|
|
|
|
--- Setup the plugin
|
|
--- @param opts jj.Config: Options to configure the plugin
|
|
function M.setup(opts)
|
|
M.config = vim.tbl_deep_extend("force", M.config, opts or {})
|
|
|
|
-- Setup for sub-modules
|
|
picker.setup(opts and opts.picker or {})
|
|
editor.setup({ highlights = M.config.highlights })
|
|
cmd.setup(opts.cmd)
|
|
utils.setup(opts) -- Keep for future-proofing, even if it's a no-op now
|
|
|
|
cmd.register_command()
|
|
|
|
-- Expose public API functions on the top-level module
|
|
M.status = cmd.status
|
|
M.describe = cmd.describe
|
|
M.log = cmd.log
|
|
M.new = cmd.new
|
|
M.edit = cmd.edit
|
|
M.squash = cmd.squash
|
|
M.rebase = cmd.rebase
|
|
M.undo = cmd.undo
|
|
M.redo = cmd.redo
|
|
M.bookmark_create = cmd.bookmark_create
|
|
M.bookmark_delete = cmd.bookmark_delete
|
|
M.j = cmd.j
|
|
|
|
M.picker = {
|
|
status = picker.status,
|
|
file_history = picker.file_history,
|
|
}
|
|
|
|
M.diff = {
|
|
vsplit = diff.open_vdiff,
|
|
hsplit = diff.open_hdiff,
|
|
}
|
|
end
|
|
|
|
return M
|