Add ement
This commit is contained in:
parent
460957cb60
commit
bc4b5444a1
|
@ -190,6 +190,7 @@ See `evil-collection-init' and `evil-collection--modes-with-delayed-setup'."
|
||||||
ediff
|
ediff
|
||||||
eglot
|
eglot
|
||||||
elpaca
|
elpaca
|
||||||
|
ement
|
||||||
explain-pause-mode
|
explain-pause-mode
|
||||||
eldoc
|
eldoc
|
||||||
elfeed
|
elfeed
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
;;; evil-collection-ement.el --- Evil integration for Ement.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2023 Nicholas Vollmer
|
||||||
|
|
||||||
|
;; Author: Nicholas Vollmer
|
||||||
|
;; Keywords: convenience
|
||||||
|
;; Maintainer: James Nguyen <james@jojojames.com>
|
||||||
|
;; URL: https://github.com/emacs-evil/evil-collection
|
||||||
|
;; Version: 0.0.0
|
||||||
|
;; Package-Requires: ((emacs "27.1"))
|
||||||
|
;; Keywords: evil, emacs, convenience, 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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; Evil bindings for Ement.el
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
(require 'evil-collection)
|
||||||
|
(require 'ement nil t)
|
||||||
|
(require 'ement-room-list nil t)
|
||||||
|
|
||||||
|
(defgroup evil-collection-ement nil
|
||||||
|
"Evil bindings for Ement.el."
|
||||||
|
:group 'evil-collection)
|
||||||
|
|
||||||
|
(defcustom evil-collection-ement-want-auto-retro nil
|
||||||
|
"When non-nil, automatically run `ement-room-retro' when scrolled up at `bob'."
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
|
(defconst evil-collection-ement-maps '(ement-describe-room-mode-map
|
||||||
|
ement-room-list-mode-map
|
||||||
|
ement-room-mode-map))
|
||||||
|
|
||||||
|
(declare-function ement-room-retro "ement-room")
|
||||||
|
(defun evil-collection-ement--auto-retro ()
|
||||||
|
"Call `ement-room-retro' scroll requested from beginning of buffer hit."
|
||||||
|
(and (= (line-beginning-position) (point-min))
|
||||||
|
(not (eq evil-state 'emacs))
|
||||||
|
(member this-command '(previous-line evil-scroll-up))
|
||||||
|
(call-interactively #'ement-room-retro)
|
||||||
|
(setq this-command 'ement-room-retro)))
|
||||||
|
|
||||||
|
(defun evil-collection-ement--install-auto-retro ()
|
||||||
|
"Install `evil-collection-ement--auto-retro'."
|
||||||
|
(add-hook 'post-command-hook #'evil-collection-ement--auto-retro nil t))
|
||||||
|
|
||||||
|
(defun evil-collection-ement-setup ()
|
||||||
|
"Set up `evil' bindings for Ement.el."
|
||||||
|
(evil-collection-define-key 'normal 'ement-describe-room-mode-map
|
||||||
|
(kbd "q") 'quit-window)
|
||||||
|
|
||||||
|
(evil-collection-define-key 'normal 'ement-room-list-mode-map
|
||||||
|
(kbd "d") 'ement-room-list-kill-buffer
|
||||||
|
(kbd "RET") 'ement-room-list-RET
|
||||||
|
(kbd "<return>") 'ement-room-list-RET)
|
||||||
|
|
||||||
|
(evil-collection-define-key '(normal motion) 'ement-room-mode-map
|
||||||
|
(kbd "<") 'ement-room-transient
|
||||||
|
(kbd "<return>") 'ement-room-send-message
|
||||||
|
(kbd "RET") 'ement-rooom-send-message
|
||||||
|
(kbd "M-RET") 'ement-room-compose-message
|
||||||
|
(kbd "<M-return>") 'ement-room-compose-message
|
||||||
|
(kbd "a") 'ement-room-send-message
|
||||||
|
(kbd "A") 'ement-room-compose-message
|
||||||
|
(kbd "d") 'ement-room-delete-message
|
||||||
|
(kbd "D") 'ement-room-delete-message
|
||||||
|
(kbd "J") 'ement-room-write-reply
|
||||||
|
(kbd "]]") 'ement-room-goto-next
|
||||||
|
(kbd "[[") 'ement-room-goto-prev
|
||||||
|
(kbd "gr") 'ement-room-sync
|
||||||
|
(kbd "gu") 'ement-room-goto-fully-read-marker
|
||||||
|
(kbd "gm") 'ement-room-mark-read
|
||||||
|
(kbd "gv") 'ement-room-view-event
|
||||||
|
(kbd "i") 'ement-room-edit-message
|
||||||
|
(kbd "q") 'quit-window
|
||||||
|
;; Room prefix bindings
|
||||||
|
(kbd "r/") 'ement-room-occur
|
||||||
|
(kbd "rd") 'ement-room-describe
|
||||||
|
(kbd "rf") 'ement-room-set-message-format
|
||||||
|
(kbd "rl") 'ement-room-list
|
||||||
|
(kbd "rm") 'ement-list-members
|
||||||
|
(kbd "rn") 'ement-room-override-name
|
||||||
|
(kbd "rN") 'ement-room-set-notification-state
|
||||||
|
(kbd "rt") 'ement-room-set-topic
|
||||||
|
(kbd "rT") 'ement-tag-room
|
||||||
|
;; Room membership
|
||||||
|
(kbd "Rc") 'ement-create-room
|
||||||
|
(kbd "Rj") 'ement-room-join
|
||||||
|
(kbd "Rl") 'ement-room-leave
|
||||||
|
(kbd "RF") 'ement-room-forget
|
||||||
|
(kbd "Rn") 'ement-room-set-display-name
|
||||||
|
(kbd "Rs") 'ement-room-toggle-space
|
||||||
|
;; Send prefix bindings
|
||||||
|
(kbd "se") 'ement-room-send-emote
|
||||||
|
(kbd "sf") 'ement-room-send-file
|
||||||
|
(kbd "si") 'ement-room-send-image
|
||||||
|
(kbd "sr") 'ement-room-send-reaction
|
||||||
|
;; User prefix bindings
|
||||||
|
(kbd "ui") 'ement-invite-user
|
||||||
|
(kbd "uI") 'ement-ignore-user
|
||||||
|
(kbd "u RET") 'ement-send-direct-message
|
||||||
|
(kbd "u <return>") 'ement-send-direct-message)
|
||||||
|
|
||||||
|
(when evil-collection-ement-want-auto-retro
|
||||||
|
(add-hook 'ement-room-mode-hook #'evil-collection-ement--install-auto-retro))
|
||||||
|
nil)
|
||||||
|
|
||||||
|
(provide 'evil-collection-ement)
|
||||||
|
;;; evil-collection-ement.el ends here
|
Loading…
Reference in New Issue