Skip to content

Commit

Permalink
feat(mappings): add config option to disable default mappings
Browse files Browse the repository at this point in the history
also align colors and mappings code for better vision
should close #507
  • Loading branch information
konosubakonoakua committed Mar 18, 2024
1 parent 1e2376a commit 9bf5958
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 116 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ require"octo".setup({
dark_blue = "#0366d6",
purple = "#6f42c1",
},
mappings_disable_default = false, -- disable default mappings if true, but will still adapt user mappings
mappings = {
issue = {
close_issue = { lhs = "<space>ic", desc = "close issue" },
Expand Down
2 changes: 2 additions & 0 deletions doc/octo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,8 @@ I can't see my v2 projects in issues and/or pull requests!~
If you don't care about projects v2 you can suppress the warning by setting
`suppress_missing_scope.projects_v2 = true` in your Octo config.

How can I disable default key mappings?~
set `mappings_disable_default = true` in user config.

CREDITS *octo-credits*

Expand Down
237 changes: 121 additions & 116 deletions lua/octo/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ local M = {}
---@field file_panel OctoConfigFilePanel
---@field colors OctoConfigColors
---@field mappings { [OctoMappingsWindow]: OctoMappingsList}
---@field mappings_disable_default boolean

--- Returns the default octo config values
---@return OctoConfig
Expand Down Expand Up @@ -132,143 +133,144 @@ function M.get_default_values()
use_icons = true,
},
colors = {
white = "#ffffff",
grey = "#2A354C",
black = "#000000",
red = "#fdb8c0",
dark_red = "#da3633",
green = "#acf2bd",
dark_green = "#238636",
yellow = "#d3c846",
white = "#ffffff",
grey = "#2A354C",
black = "#000000",
red = "#fdb8c0",
dark_red = "#da3633",
green = "#acf2bd",
dark_green = "#238636",
yellow = "#d3c846",
dark_yellow = "#735c0f",
blue = "#58A6FF",
dark_blue = "#0366d6",
purple = "#6f42c1",
blue = "#58A6FF",
dark_blue = "#0366d6",
purple = "#6f42c1",
},
mappings_disable_default = false,
mappings = {
issue = {
close_issue = { lhs = "<space>ic", desc = "close issue" },
reopen_issue = { lhs = "<space>io", desc = "reopen issue" },
list_issues = { lhs = "<space>il", desc = "list open issues on same repo" },
reload = { lhs = "<C-r>", desc = "reload issue" },
open_in_browser = { lhs = "<C-b>", desc = "open issue in browser" },
copy_url = { lhs = "<C-y>", desc = "copy url to system clipboard" },
add_assignee = { lhs = "<space>aa", desc = "add assignee" },
remove_assignee = { lhs = "<space>ad", desc = "remove assignee" },
create_label = { lhs = "<space>lc", desc = "create label" },
add_label = { lhs = "<space>la", desc = "add label" },
remove_label = { lhs = "<space>ld", desc = "remove label" },
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
close_issue = { lhs = "<space>ic", desc = "close issue" },
reopen_issue = { lhs = "<space>io", desc = "reopen issue" },
list_issues = { lhs = "<space>il", desc = "list open issues on same repo" },
reload = { lhs = "<C-r>", desc = "reload issue" },
open_in_browser = { lhs = "<C-b>", desc = "open issue in browser" },
copy_url = { lhs = "<C-y>", desc = "copy url to system clipboard" },
add_assignee = { lhs = "<space>aa", desc = "add assignee" },
remove_assignee = { lhs = "<space>ad", desc = "remove assignee" },
create_label = { lhs = "<space>lc", desc = "create label" },
add_label = { lhs = "<space>la", desc = "add label" },
remove_label = { lhs = "<space>ld", desc = "remove label" },
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
react_thumbs_down = { lhs = "<space>r-", desc = "add/remove 👎 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
},
pull_request = {
checkout_pr = { lhs = "<space>po", desc = "checkout PR" },
merge_pr = { lhs = "<space>pm", desc = "merge commit PR" },
checkout_pr = { lhs = "<space>po", desc = "checkout PR" },
merge_pr = { lhs = "<space>pm", desc = "merge commit PR" },
squash_and_merge_pr = { lhs = "<space>psm", desc = "squash and merge PR" },
rebase_and_merge_pr = { lhs = "<space>prm", desc = "rebase and merge PR" },
list_commits = { lhs = "<space>pc", desc = "list PR commits" },
list_changed_files = { lhs = "<space>pf", desc = "list PR changed files" },
show_pr_diff = { lhs = "<space>pd", desc = "show PR diff" },
add_reviewer = { lhs = "<space>va", desc = "add reviewer" },
remove_reviewer = { lhs = "<space>vd", desc = "remove reviewer request" },
close_issue = { lhs = "<space>ic", desc = "close PR" },
reopen_issue = { lhs = "<space>io", desc = "reopen PR" },
list_issues = { lhs = "<space>il", desc = "list open issues on same repo" },
reload = { lhs = "<C-r>", desc = "reload PR" },
open_in_browser = { lhs = "<C-b>", desc = "open PR in browser" },
copy_url = { lhs = "<C-y>", desc = "copy url to system clipboard" },
goto_file = { lhs = "gf", desc = "go to file" },
add_assignee = { lhs = "<space>aa", desc = "add assignee" },
remove_assignee = { lhs = "<space>ad", desc = "remove assignee" },
create_label = { lhs = "<space>lc", desc = "create label" },
add_label = { lhs = "<space>la", desc = "add label" },
remove_label = { lhs = "<space>ld", desc = "remove label" },
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
react_thumbs_down = { lhs = "<space>r-", desc = "add/remove 👎 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
review_start = { lhs = "<space>vs", desc = "start a review for the current PR" },
review_resume = { lhs = "<space>vr", desc = "resume a pending review for the current PR" },
list_commits = { lhs = "<space>pc", desc = "list PR commits" },
list_changed_files = { lhs = "<space>pf", desc = "list PR changed files" },
show_pr_diff = { lhs = "<space>pd", desc = "show PR diff" },
add_reviewer = { lhs = "<space>va", desc = "add reviewer" },
remove_reviewer = { lhs = "<space>vd", desc = "remove reviewer request" },
close_issue = { lhs = "<space>ic", desc = "close PR" },
reopen_issue = { lhs = "<space>io", desc = "reopen PR" },
list_issues = { lhs = "<space>il", desc = "list open issues on same repo" },
reload = { lhs = "<C-r>", desc = "reload PR" },
open_in_browser = { lhs = "<C-b>", desc = "open PR in browser" },
copy_url = { lhs = "<C-y>", desc = "copy url to system clipboard" },
goto_file = { lhs = "gf", desc = "go to file" },
add_assignee = { lhs = "<space>aa", desc = "add assignee" },
remove_assignee = { lhs = "<space>ad", desc = "remove assignee" },
create_label = { lhs = "<space>lc", desc = "create label" },
add_label = { lhs = "<space>la", desc = "add label" },
remove_label = { lhs = "<space>ld", desc = "remove label" },
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
react_thumbs_down = { lhs = "<space>r-", desc = "add/remove 👎 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
review_start = { lhs = "<space>vs", desc = "start a review for the current PR" },
review_resume = { lhs = "<space>vr", desc = "resume a pending review for the current PR" },
},
review_thread = {
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
add_suggestion = { lhs = "<space>sa", desc = "add suggestion" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
goto_issue = { lhs = "<space>gi", desc = "navigate to a local repo issue" },
add_comment = { lhs = "<space>ca", desc = "add comment" },
add_suggestion = { lhs = "<space>sa", desc = "add suggestion" },
delete_comment = { lhs = "<space>cd", desc = "delete comment" },
next_comment = { lhs = "]c", desc = "go to next comment" },
prev_comment = { lhs = "[c", desc = "go to previous comment" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
select_first_entry = { lhs = "[Q", desc = "move to first changed file" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
react_thumbs_down = { lhs = "<space>r-", desc = "add/remove 👎 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
react_hooray = { lhs = "<space>rp", desc = "add/remove 🎉 reaction" },
react_heart = { lhs = "<space>rh", desc = "add/remove ❤️ reaction" },
react_eyes = { lhs = "<space>re", desc = "add/remove 👀 reaction" },
react_thumbs_up = { lhs = "<space>r+", desc = "add/remove 👍 reaction" },
react_thumbs_down = { lhs = "<space>r-", desc = "add/remove 👎 reaction" },
react_rocket = { lhs = "<space>rr", desc = "add/remove 🚀 reaction" },
react_laugh = { lhs = "<space>rl", desc = "add/remove 😄 reaction" },
react_confused = { lhs = "<space>rc", desc = "add/remove 😕 reaction" },
},
submit_win = {
approve_review = { lhs = "<C-a>", desc = "approve review" },
comment_review = { lhs = "<C-m>", desc = "comment review" },
request_changes = { lhs = "<C-r>", desc = "request changes review" },
approve_review = { lhs = "<C-a>", desc = "approve review" },
comment_review = { lhs = "<C-m>", desc = "comment review" },
request_changes = { lhs = "<C-r>", desc = "request changes review" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
},
review_diff = {
submit_review = { lhs = "<leader>vs", desc = "submit review" },
discard_review = { lhs = "<leader>vd", desc = "discard review" },
add_review_comment = { lhs = "<space>ca", desc = "add a new review comment" },
submit_review = { lhs = "<leader>vs", desc = "submit review" },
discard_review = { lhs = "<leader>vd", desc = "discard review" },
add_review_comment = { lhs = "<space>ca", desc = "add a new review comment" },
add_review_suggestion = { lhs = "<space>sa", desc = "add a new review suggestion" },
focus_files = { lhs = "<leader>e", desc = "move focus to changed file panel" },
toggle_files = { lhs = "<leader>b", desc = "hide/show changed files panel" },
next_thread = { lhs = "]t", desc = "move to next thread" },
prev_thread = { lhs = "[t", desc = "move to previous thread" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
select_first_entry = { lhs = "[Q", desc = "move to first changed file" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
toggle_viewed = { lhs = "<leader><space>", desc = "toggle viewer viewed state" },
goto_file = { lhs = "gf", desc = "go to file" },
focus_files = { lhs = "<leader>e", desc = "move focus to changed file panel" },
toggle_files = { lhs = "<leader>b", desc = "hide/show changed files panel" },
next_thread = { lhs = "]t", desc = "move to next thread" },
prev_thread = { lhs = "[t", desc = "move to previous thread" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
select_first_entry = { lhs = "[Q", desc = "move to first changed file" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
toggle_viewed = { lhs = "<leader><space>", desc = "toggle viewer viewed state" },
goto_file = { lhs = "gf", desc = "go to file" },
},
file_panel = {
submit_review = { lhs = "<leader>vs", desc = "submit review" },
discard_review = { lhs = "<leader>vd", desc = "discard review" },
next_entry = { lhs = "j", desc = "move to next changed file" },
prev_entry = { lhs = "k", desc = "move to previous changed file" },
select_entry = { lhs = "<cr>", desc = "show selected changed file diffs" },
refresh_files = { lhs = "R", desc = "refresh changed files panel" },
focus_files = { lhs = "<leader>e", desc = "move focus to changed file panel" },
toggle_files = { lhs = "<leader>b", desc = "hide/show changed files panel" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
submit_review = { lhs = "<leader>vs", desc = "submit review" },
discard_review = { lhs = "<leader>vd", desc = "discard review" },
next_entry = { lhs = "j", desc = "move to next changed file" },
prev_entry = { lhs = "k", desc = "move to previous changed file" },
select_entry = { lhs = "<cr>", desc = "show selected changed file diffs" },
refresh_files = { lhs = "R", desc = "refresh changed files panel" },
focus_files = { lhs = "<leader>e", desc = "move focus to changed file panel" },
toggle_files = { lhs = "<leader>b", desc = "hide/show changed files panel" },
select_next_entry = { lhs = "]q", desc = "move to previous changed file" },
select_prev_entry = { lhs = "[q", desc = "move to next changed file" },
select_first_entry = { lhs = "[Q", desc = "move to first changed file" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
toggle_viewed = { lhs = "<leader><space>", desc = "toggle viewer viewed state" },
select_last_entry = { lhs = "]Q", desc = "move to last changed file" },
close_review_tab = { lhs = "<C-c>", desc = "close review tab" },
toggle_viewed = { lhs = "<leader><space>", desc = "toggle viewer viewed state" },
},
repo = {},
},
Expand Down Expand Up @@ -428,6 +430,9 @@ end

function M.setup(opts)
if opts ~= nil then
if opts.mappings_disable_default == true then
M.values.mappings = {} -- clear default mappings before merging user mappings
end
M.values = vim.tbl_deep_extend("force", M.values, opts)
end
local config_errs = M.validate_config()
Expand Down

0 comments on commit 9bf5958

Please sign in to comment.