dotfiles/emacs/.emacs.d/elpa/evil-collection-20260818.145/modes/fj/evil-collection-fj.el

195 lines
6.3 KiB
EmacsLisp
Raw Normal View History

;;; evil-collection-fj.el --- Evil bindings for fj -*- lexical-binding: t -*-
;; Copyright (C) 2026 0WD0
;; Author: 0WD0 <wd.1105848296@gmail.com>
;; Maintainer: James Nguyen <james@jojojames.com>
;; URL: https://github.com/emacs-evil/evil-collection
;; Version: 0.0.1
;; Package-Requires: ((emacs "29.1"))
;; Keywords: evil, fj, tools
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Evil bindings for fj.el.
;;; Code:
(require 'evil-collection)
(require 'fj nil t)
(defvar fj-commits-mode-map)
(defvar fj-compose-comment-mode)
(defvar fj-compose-comment-mode-map)
(defvar fj-compose-mode)
(defvar fj-compose-mode-map)
(defvar fj-generic-map)
(defvar fj-generic-tl-map)
(defvar fj-issue-tl-mode-map)
(defvar fj-item-view-mode-map)
(defvar fj-notifications-mode-map)
(defvar fj-owned-issues-tl-mode-map)
(defvar fj-repo-tl-map)
(defvar fj-repo-tl-mode-map)
(defvar fj-user-repo-tl-mode-map)
(defvar fj-users-mode-map)
(defconst evil-collection-fj-maps
'(fj-commits-mode-map
fj-compose-comment-mode-map
fj-compose-mode-map
fj-generic-map
fj-generic-tl-map
fj-issue-tl-mode-map
fj-item-view-mode-map
fj-notifications-mode-map
fj-owned-issues-tl-mode-map
fj-repo-tl-map
fj-repo-tl-mode-map
fj-user-repo-tl-mode-map
fj-users-mode-map))
(defconst evil-collection-fj-view-maps
'(fj-commits-mode-map
fj-item-view-mode-map
fj-notifications-mode-map
fj-users-mode-map))
(defconst evil-collection-fj-tabulated-list-maps
'(fj-issue-tl-mode-map
fj-owned-issues-tl-mode-map
fj-repo-tl-map
fj-repo-tl-mode-map
fj-user-repo-tl-mode-map))
(defun evil-collection-fj--setup-compose-buffer ()
"Set up Evil bindings for the current fj compose buffer."
(evil-collection-bind-local 'quit-save 'fj-compose-send)
(evil-collection-bind-local 'quit-cancel 'fj-compose-cancel)
(evil-insert-state))
;;;###autoload
(defun evil-collection-fj-setup ()
"Set up `evil' bindings for fj.el."
(dolist (mode '(fj-commits-mode
fj-issue-tl-mode
fj-item-view-mode
fj-notifications-mode
fj-owned-issues-tl-mode
fj-repo-tl-mode
fj-user-repo-tl-mode
fj-users-mode))
(evil-set-initial-state mode 'normal))
(dolist (map evil-collection-fj-view-maps)
(evil-collection-set-readonly-bindings map))
(dolist (map evil-collection-fj-tabulated-list-maps)
(evil-collection-set-readonly-bindings map))
(evil-collection-bind 'fj-issue-tl-mode-map 'edit 'fj-item-edit)
(evil-collection-bind 'fj-item-view-mode-map 'edit 'fj-item-edit)
(evil-collection-define-key 'normal 'fj-generic-map
"gb" 'fj-switch-to-buffer)
(evil-collection-bind 'fj-generic-map
'cycle-next 'fj-next-tab-item
'cycle-previous 'fj-prev-tab-item
'action-other 'fj-browse-view
'next-item 'fj-item-next
'prev-item 'fj-item-prev
'next-section 'fj-item-next
'prev-section 'fj-item-prev)
(evil-collection-define-key 'normal 'fj-generic-tl-map
"gb" 'fj-switch-to-buffer
"gm" 'imenu
">" 'fj-next-page
"<" 'fj-prev-page)
(evil-collection-bind 'fj-generic-tl-map
'cycle-next 'fj-next-tab-item
'cycle-previous 'fj-prev-tab-item
'action-other 'fj-tl-browse-entry)
(evil-collection-bind 'fj-generic-map 'refresh 'fj-view-reload)
(evil-collection-bind 'fj-generic-tl-map 'refresh 'fj-view-reload)
(evil-collection-define-key 'normal 'fj-repo-tl-map
"C" 'fj-create-issue
"r" 'fj-repo-readme
"g/" 'fj-repo-search
"gm" 'imenu)
(evil-collection-bind 'fj-repo-tl-map
'action 'fj-repo-list-issues
'action-other 'fj-tl-browse-entry
'action-stay 'fj-repo-list-pulls)
(evil-collection-define-operator-key 'yank 'fj-repo-tl-map
"c" 'fj-repo-copy-clone-url)
(evil-collection-define-key 'normal 'fj-issue-tl-mode-map
"c" 'fj-item-comment
"C" 'fj-create-issue
"E" 'fj-item-edit-title
"g/" 'fj-list-issues-search
"x" 'fj-item-close
"X" 'fj-item-delete
"u" 'fj-item-reopen
"al" 'fj-item-label-add
"gL" 'fj-repo-commit-log
"gm" 'imenu)
(evil-collection-bind 'fj-issue-tl-mode-map
'action 'fj-issues-tl-view
'action-other 'fj-tl-browse-entry)
(evil-collection-define-operator-key 'yank 'fj-issue-tl-mode-map
"c" 'fj-repo-copy-clone-url
"u" 'fj-copy-item-url)
(evil-collection-define-key 'normal 'fj-item-view-mode-map
"c" 'fj-item-comment
"E" 'fj-item-edit-title
"r" 'fj-add-reaction
"g/" 'fj-list-issues-search
"x" 'fj-item-close
"X" 'fj-item-delete
"u" 'fj-item-reopen
"al" 'fj-item-label-add
"ar" 'fj-add-reaction
"gd" 'fj-view-pull-diff
"gL" 'fj-repo-commit-log
"gM" 'fj-merge-pull
">" 'fj-item-view-more)
(evil-collection-define-operator-key 'yank 'fj-item-view-mode-map
"u" 'fj-copy-item-url)
(evil-collection-define-key 'normal 'fj-notifications-mode-map
"g/" 'fj-list-issues-search
">" 'fj-next-page
"<" 'fj-prev-page)
(evil-collection-define-key 'normal 'fj-commits-mode-map
"g/" 'fj-list-issues-search
"gL" 'fj-repo-commit-log)
(evil-collection-define-key 'normal 'fj-users-mode-map
"g/" 'fj-list-issues-search
"gL" 'fj-repo-commit-log
">" 'fj-next-page
"<" 'fj-prev-page)
(add-hook 'fj-compose-comment-mode-hook
#'evil-collection-fj--setup-compose-buffer)
(add-hook 'fj-compose-mode-hook
#'evil-collection-fj--setup-compose-buffer))
(provide 'evil-collection-fj)
;;; evil-collection-fj.el ends here