return { -- Git { 'kdheepak/lazygit.nvim', cond = not env.is_vscode(), cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile" }, keys = { { "gg", "LazyGit", desc = "LazyGit" }, }, dependencies = { 'nvim-telescope/telescope.nvim' }, config = function() require('telescope').load_extension('lazygit') local group = vim.api.nvim_create_augroup("LazygitMods", { clear = true }) vim.api.nvim_create_autocmd("TermEnter", { pattern = "*", group = group, callback = function() local name = vim.api.nvim_buf_get_name(0) if string.find(name, "lazygit") then vim.keymap.set("t", "", function() -- Get the terminal job ID for the current buffer local bufnr = vim.api.nvim_get_current_buf() local chan = vim.b[bufnr].terminal_job_id if chan then -- Send the ESC key sequence to the terminal -- "\x1b" is the escape character vim.api.nvim_chan_send(chan, "\x1b") end --vim.cmd([[call feedkeys("q")]]) end, { buffer = true }) return end end, }) end, doc = "Git UI" }, { 'sindrets/diffview.nvim', cond = not env.is_vscode(), cmd = { "DiffviewOpen", "DiffviewClose", "DiffviewToggleFiles", "DiffviewFocusFiles", "DiffviewRefresh" }, }, { 'APZelos/blamer.nvim', cond = not env.is_vscode(), event = "VeryLazy", -- 遅延読み込み config = function() vim.g.blamer_enabled = 0 -- デフォルトでは無効(`:BlamerToggle`で有効化) vim.g.blamer_delay = 500 end, }, -- octo.nvim - GitHub PR/Issue操作 { 'pwntester/octo.nvim', cond = not env.is_vscode(), cmd = { "Octo" }, dependencies = { 'nvim-lua/plenary.nvim', 'nvim-telescope/telescope.nvim', 'nvim-tree/nvim-web-devicons', }, config = function() require("octo").setup({ use_local_fs = true, enable_builtin = true, default_remote = { "upstream", "origin" }, ssh_aliases = {}, picker = "telescope", picker_config = { use_emojis = true, mappings = { open_in_browser = { lhs = "", desc = "ブラウザで開く" }, copy_url = { lhs = "", desc = "URLをコピー" }, checkout_pr = { lhs = "", desc = "PRをチェックアウト" }, merge_pr = { lhs = "", desc = "PRをマージ" }, }, }, comment_icon = "▎", outdated_icon = "󰅒 ", resolved_icon = " ", reaction_viewer_hint_icon = " ", user_icon = " ", timeline_marker = " ", timeline_indent = 2, right_bubble_delimiter = "", left_bubble_delimiter = "", snippet_context_lines = 4, gh_env = {}, timeout = 10000, default_to_projects_v2 = false, suppress_missing_scope = { projects_v2 = true, }, ui = { use_signcolumn = true, }, issues = { order_by = { field = "CREATED_AT", direction = "DESC", }, }, pull_requests = { order_by = { field = "CREATED_AT", direction = "DESC", }, always_select_remote_on_create = false, }, file_panel = { size = 10, use_icons = true, }, mappings = { issue = { close_issue = { lhs = "oic", desc = "Issueを閉じる" }, reopen_issue = { lhs = "oio", desc = "Issueを再開" }, list_issues = { lhs = "oil", desc = "Issue一覧" }, reload = { lhs = "", desc = "リロード" }, open_in_browser = { lhs = "", desc = "ブラウザで開く" }, copy_url = { lhs = "", desc = "URLをコピー" }, add_assignee = { lhs = "oaa", desc = "担当者を追加" }, remove_assignee = { lhs = "oad", desc = "担当者を削除" }, create_label = { lhs = "olc", desc = "ラベルを作成" }, add_label = { lhs = "ola", desc = "ラベルを追加" }, remove_label = { lhs = "old", desc = "ラベルを削除" }, goto_issue = { lhs = "ogi", desc = "Issueへ移動" }, add_comment = { lhs = "oca", desc = "コメントを追加" }, delete_comment = { lhs = "ocd", desc = "コメントを削除" }, next_comment = { lhs = "]c", desc = "次のコメント" }, prev_comment = { lhs = "[c", desc = "前のコメント" }, react_hooray = { lhs = "orp", desc = "🎉リアクション" }, react_heart = { lhs = "orh", desc = "❤️リアクション" }, react_eyes = { lhs = "ore", desc = "👀リアクション" }, react_thumbs_up = { lhs = "or+", desc = "👍リアクション" }, react_thumbs_down = { lhs = "or-", desc = "👎リアクション" }, react_rocket = { lhs = "orr", desc = "🚀リアクション" }, react_laugh = { lhs = "orl", desc = "😄リアクション" }, react_confused = { lhs = "orc", desc = "😕リアクション" }, }, pull_request = { checkout_pr = { lhs = "opo", desc = "PRをチェックアウト" }, merge_pr = { lhs = "opm", desc = "PRをマージ" }, squash_and_merge_pr = { lhs = "ops", desc = "Squash & Merge" }, list_commits = { lhs = "opc", desc = "コミット一覧" }, list_changed_files = { lhs = "opf", desc = "変更ファイル一覧" }, show_pr_diff = { lhs = "opd", desc = "PRのdiffを表示" }, add_reviewer = { lhs = "ova", desc = "レビュアーを追加" }, remove_reviewer = { lhs = "ovd", desc = "レビュアーを削除" }, close_issue = { lhs = "oic", desc = "PRを閉じる" }, reopen_issue = { lhs = "oio", desc = "PRを再開" }, list_issues = { lhs = "oil", desc = "Issue一覧" }, reload = { lhs = "", desc = "リロード" }, open_in_browser = { lhs = "", desc = "ブラウザで開く" }, copy_url = { lhs = "", desc = "URLをコピー" }, goto_file = { lhs = "gf", desc = "ファイルへ移動" }, add_assignee = { lhs = "oaa", desc = "担当者を追加" }, remove_assignee = { lhs = "oad", desc = "担当者を削除" }, create_label = { lhs = "olc", desc = "ラベルを作成" }, add_label = { lhs = "ola", desc = "ラベルを追加" }, remove_label = { lhs = "old", desc = "ラベルを削除" }, goto_issue = { lhs = "ogi", desc = "Issueへ移動" }, add_comment = { lhs = "oca", desc = "コメントを追加" }, delete_comment = { lhs = "ocd", desc = "コメントを削除" }, next_comment = { lhs = "]c", desc = "次のコメント" }, prev_comment = { lhs = "[c", desc = "前のコメント" }, react_hooray = { lhs = "orp", desc = "🎉リアクション" }, react_heart = { lhs = "orh", desc = "❤️リアクション" }, react_eyes = { lhs = "ore", desc = "👀リアクション" }, react_thumbs_up = { lhs = "or+", desc = "👍リアクション" }, react_thumbs_down = { lhs = "or-", desc = "👎リアクション" }, react_rocket = { lhs = "orr", desc = "🚀リアクション" }, react_laugh = { lhs = "orl", desc = "😄リアクション" }, react_confused = { lhs = "orc", desc = "😕リアクション" }, }, review_thread = { goto_issue = { lhs = "ogi", desc = "Issueへ移動" }, add_comment = { lhs = "oca", desc = "コメントを追加" }, add_suggestion = { lhs = "osa", desc = "提案を追加" }, delete_comment = { lhs = "ocd", desc = "コメントを削除" }, next_comment = { lhs = "]c", desc = "次のコメント" }, prev_comment = { lhs = "[c", desc = "前のコメント" }, select_next_entry = { lhs = "]q", desc = "次のエントリ" }, select_prev_entry = { lhs = "[q", desc = "前のエントリ" }, select_first_entry = { lhs = "[Q", desc = "最初のエントリ" }, select_last_entry = { lhs = "]Q", desc = "最後のエントリ" }, close_review_tab = { lhs = "", desc = "レビュータブを閉じる" }, react_hooray = { lhs = "orp", desc = "🎉リアクション" }, react_heart = { lhs = "orh", desc = "❤️リアクション" }, react_eyes = { lhs = "ore", desc = "👀リアクション" }, react_thumbs_up = { lhs = "or+", desc = "👍リアクション" }, react_thumbs_down = { lhs = "or-", desc = "👎リアクション" }, react_rocket = { lhs = "orr", desc = "🚀リアクション" }, react_laugh = { lhs = "orl", desc = "😄リアクション" }, react_confused = { lhs = "orc", desc = "😕リアクション" }, }, submit_win = { approve_review = { lhs = "", desc = "レビューを承認" }, comment_review = { lhs = "", desc = "コメントレビュー" }, request_changes = { lhs = "", desc = "変更をリクエスト" }, close_review_tab = { lhs = "", desc = "レビュータブを閉じる" }, }, review_diff = { submit_review = { lhs = "ovs", desc = "レビューを提出" }, discard_review = { lhs = "ovd", desc = "レビューを破棄" }, add_review_comment = { lhs = "oca", desc = "レビューコメントを追加" }, add_review_suggestion = { lhs = "osa", desc = "レビュー提案を追加" }, focus_files = { lhs = "oe", desc = "ファイルパネルにフォーカス" }, toggle_files = { lhs = "ob", desc = "ファイルパネルを切り替え" }, next_thread = { lhs = "]t", desc = "次のスレッド" }, prev_thread = { lhs = "[t", desc = "前のスレッド" }, select_next_entry = { lhs = "]q", desc = "次のエントリ" }, select_prev_entry = { lhs = "[q", desc = "前のエントリ" }, select_first_entry = { lhs = "[Q", desc = "最初のエントリ" }, select_last_entry = { lhs = "]Q", desc = "最後のエントリ" }, close_review_tab = { lhs = "", desc = "レビュータブを閉じる" }, toggle_viewed = { lhs = "o", desc = "表示済みを切り替え" }, goto_file = { lhs = "gf", desc = "ファイルへ移動" }, }, file_panel = { submit_review = { lhs = "ovs", desc = "レビューを提出" }, discard_review = { lhs = "ovd", desc = "レビューを破棄" }, next_entry = { lhs = "j", desc = "次のエントリ" }, prev_entry = { lhs = "k", desc = "前のエントリ" }, select_entry = { lhs = "", desc = "エントリを選択" }, refresh_files = { lhs = "R", desc = "ファイル一覧をリフレッシュ" }, focus_files = { lhs = "oe", desc = "ファイルパネルにフォーカス" }, toggle_files = { lhs = "ob", desc = "ファイルパネルを切り替え" }, select_next_entry = { lhs = "]q", desc = "次のエントリ" }, select_prev_entry = { lhs = "[q", desc = "前のエントリ" }, select_first_entry = { lhs = "[Q", desc = "最初のエントリ" }, select_last_entry = { lhs = "]Q", desc = "最後のエントリ" }, close_review_tab = { lhs = "", desc = "レビュータブを閉じる" }, toggle_viewed = { lhs = "o", desc = "表示済みを切り替え" }, }, }, }) end, }, }