mirror of
https://github.com/vale981/ement.el
synced 2025-03-04 08:51:39 -05:00
Add/Change: Sync bindings with Transient menu, update readme
This commit is contained in:
parent
078d9db4ef
commit
9b3756c796
3 changed files with 146 additions and 68 deletions
79
README.org
79
README.org
|
@ -123,6 +123,7 @@ If you want to install it manually, it's simple enough, but you should know what
|
|||
|
||||
These bindings are common to all of the following buffer types:
|
||||
|
||||
+ Switch to a room buffer: ~M-g M-r~
|
||||
+ Switch to the room list buffer: ~M-g M-l~
|
||||
+ Switch to the mentions buffer: ~M-g M-m~
|
||||
+ Switch to the notifications buffer: ~M-g M-n~
|
||||
|
@ -131,34 +132,68 @@ These bindings are common to all of the following buffer types:
|
|||
|
||||
+ Show command menu: ~?~
|
||||
|
||||
*Sending messages*
|
||||
[[images/transient.png]]
|
||||
|
||||
+ Write new message: ~RET~
|
||||
+ Write reply to event at point (when region is active, only quote marked text) : ~S-RET~
|
||||
+ Complete members and rooms at point: ~C-M-i~ (standard ~completion-at-point~ command).
|
||||
+ Compose message in a separate buffer (while writing in minibuffer): ~C-c '~ (Use command ~ement-room-compose-org~ to activate Org mode in the compose buffer.)
|
||||
+ Send emote: ~e~
|
||||
+ Send reaction (a type of annotation) to event at point, or send same reaction at point: ~a~
|
||||
+ Delete message at point: ~C-k~
|
||||
*Movement*
|
||||
|
||||
*Viewing rooms*
|
||||
+ Next event: ~TAB~
|
||||
+ Previous event: ~<backtab>~
|
||||
+ Scroll up and mark read: ~SPC~
|
||||
+ Scroll down: ~S-SPC~
|
||||
+ Jump to fully-read marker: ~M-SPC~
|
||||
+ Load older messages: at top of buffer, scroll contents up (i.e. ~S-SPC~, ~M-v~ or ~mwheel-scroll~)
|
||||
|
||||
+ Move between events: ~TAB~ / ~<backtab>~
|
||||
+ Scroll down (at the end of a room buffer, mark it as read and bury it): ~SPC~
|
||||
+ Scroll up: ~S-SPC~
|
||||
+ Move to the fully-read marker: ~M-SPC~
|
||||
+ Load older messages: at top of buffer, scroll up (i.e. ~S-SPC~, ~M-v~ or ~mwheel-scroll~)
|
||||
+ Search messages (~occur~-style): ~o~
|
||||
+ Show source of event at point: ~v~
|
||||
+ Show another room: ~r~
|
||||
+ Show room list buffer: ~R~
|
||||
+ Sync new messages (not necessary if auto sync is enabled; with prefix to force new sync): ~g~
|
||||
*Switching*
|
||||
|
||||
*Viewing images*
|
||||
+ List rooms: ~M-g M-l~
|
||||
+ Switch to other room: ~M-g M-r~
|
||||
+ Switch to mentions buffer: ~M-g M-m~
|
||||
+ Switch to notifications buffer: ~M-g M-n~
|
||||
+ Quit window: ~q~
|
||||
|
||||
+ Toggle scale of image at point (between fit-to-window and thumbnail): ~mouse-1~
|
||||
*Messages*
|
||||
|
||||
+ Write message: ~RET~
|
||||
+ Write reply to event at point (when region is active, only quote marked text) : ~S-RET~
|
||||
+ Compose message in buffer: ~M-RET~ (while writing in minibuffer: ~C-c ')~ (Use command ~ement-room-compose-org~ to activate Org mode in the compose buffer.)
|
||||
+ Edit message: ~<insert>~
|
||||
+ Delete message: ~C-k~
|
||||
+ Send reaction to event at point, or send same reaction at point: ~s r~
|
||||
+ Send emote: ~s e~
|
||||
+ Send file: ~s f~
|
||||
+ Send image: ~s i~
|
||||
+ View event source: ~v~
|
||||
+ Complete members and rooms at point: ~C-M-i~ (standard ~completion-at-point~ command).
|
||||
|
||||
*Images*
|
||||
|
||||
+ Toggle scale of image (between fit-to-window and thumbnail): ~mouse-1~
|
||||
+ Show image in new buffer at full size: ~double-mouse-1~
|
||||
|
||||
*Users*
|
||||
|
||||
+ Send direct message: ~u RET~
|
||||
+ Invite user: ~u i~
|
||||
+ Ignore user: ~u I~
|
||||
|
||||
*Room*
|
||||
|
||||
+ Occur search in room: ~M-s o~
|
||||
+ Set topic: ~r t~
|
||||
+ Set message format: ~r f~
|
||||
+ Tag/untag room: ~r T~
|
||||
|
||||
*Room membership*
|
||||
|
||||
+ Create room: ~R c~
|
||||
+ Join room: ~R j~
|
||||
+ Leave room: ~R l~
|
||||
+ Forget room: ~R F~
|
||||
|
||||
*Other*
|
||||
|
||||
+ Sync new messages (not necessary if auto sync is enabled; with prefix to force new sync): ~g~
|
||||
|
||||
*** Room list buffer
|
||||
|
||||
+ Show buffer of room at point: ~RET~
|
||||
|
@ -202,7 +237,7 @@ Emacs may not display certain symbols and emojis well by default. Based on [[ht
|
|||
Ement.el doesn't support encrypted rooms natively, but it can be used transparently with the E2EE-aware reverse proxy daemon [[https://github.com/matrix-org/pantalaimon/][Pantalaimon]]. After configuring it according to its documentation, call ~ement-connect~ with the appropriate hostname and port, like:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
(ement-connect :uri-prefix "http://localhost:8009")
|
||||
http://localhost:8009: ment-connect :uri-prefix "")
|
||||
#+END_SRC
|
||||
|
||||
* Rationale
|
||||
|
|
135
ement-room.el
135
ement-room.el
|
@ -105,27 +105,54 @@ Used to, e.g. call `ement-room-compose-org'.")
|
|||
(defvar ement-room-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "?") #'ement-room-transient)
|
||||
(define-key map (kbd "a") #'ement-room-send-reaction)
|
||||
(define-key map (kbd "e") #'ement-room-send-emote)
|
||||
(define-key map (kbd "g") #'ement-room-sync)
|
||||
(define-key map (kbd "o") #'ement-room-occur)
|
||||
(define-key map (kbd "r") #'ement-view-room)
|
||||
(define-key map (kbd "R") #'ement-room-list)
|
||||
(define-key map (kbd "q") #'quit-window)
|
||||
(define-key map (kbd "v") #'ement-room-view-event)
|
||||
(define-key map (kbd "RET") #'ement-room-send-message)
|
||||
|
||||
;; Movement
|
||||
(define-key map (kbd "TAB") #'ement-room-goto-next)
|
||||
(define-key map (kbd "<backtab>") #'ement-room-goto-prev)
|
||||
(define-key map (kbd "SPC") #'ement-room-scroll-up-mark-read)
|
||||
(define-key map (kbd "S-SPC") #'ement-room-scroll-down-command)
|
||||
(define-key map (kbd "M-SPC") #'ement-room-goto-fully-read-marker)
|
||||
(define-key map (kbd "S-<return>") #'ement-room-send-reply)
|
||||
(define-key map (kbd "<backtab>") #'ement-room-goto-prev)
|
||||
(define-key map (kbd "TAB") #'ement-room-goto-next)
|
||||
(define-key map (kbd "C-k") #'ement-room-delete-message)
|
||||
(define-key map [remap scroll-down-command] #'ement-room-scroll-down-command)
|
||||
(define-key map [remap mwheel-scroll] #'ement-room-mwheel-scroll)
|
||||
|
||||
;; Switching
|
||||
(define-key map (kbd "M-g M-l") #'ement-room-list)
|
||||
(define-key map (kbd "M-g M-r") #'ement-view-room)
|
||||
(define-key map (kbd "M-g M-m") #'ement-notify-switch-to-mentions-buffer)
|
||||
(define-key map (kbd "M-g M-n") #'ement-notify-switch-to-notifications-buffer)
|
||||
(define-key map (kbd "q") #'quit-window)
|
||||
|
||||
;; Messages
|
||||
(define-key map (kbd "RET") #'ement-room-send-message)
|
||||
(define-key map (kbd "S-<return>") #'ement-room-send-reply)
|
||||
(define-key map (kbd "M-RET") #'ement-room-compose-message)
|
||||
(define-key map (kbd "<insert>") #'ement-room-edit-message)
|
||||
(define-key map (kbd "C-k") #'ement-room-delete-message)
|
||||
(define-key map (kbd "s r") #'ement-room-send-reaction)
|
||||
(define-key map (kbd "s e") #'ement-room-send-emote)
|
||||
(define-key map (kbd "s f") #'ement-room-send-file)
|
||||
(define-key map (kbd "s i") #'ement-room-send-image)
|
||||
(define-key map (kbd "v") #'ement-room-view-event)
|
||||
|
||||
;; Users
|
||||
(define-key map (kbd "u RET") #'ement-send-direct-message)
|
||||
(define-key map (kbd "u i") #'ement-invite)
|
||||
(define-key map (kbd "u I") #'ement-ignore-user)
|
||||
|
||||
;; Room
|
||||
(define-key map (kbd "M-s o") #'ement-room-occur)
|
||||
(define-key map (kbd "r t") #'ement-room-set-topic)
|
||||
(define-key map (kbd "r f") #'ement-room-set-message-format)
|
||||
(define-key map (kbd "r T") #'ement-tag-room)
|
||||
|
||||
;; Room membership
|
||||
(define-key map (kbd "R c") #'ement-create-room)
|
||||
(define-key map (kbd "R j") #'ement-join-room)
|
||||
(define-key map (kbd "R l") #'ement-leave-room)
|
||||
(define-key map (kbd "R f") #'ement-forget-room)
|
||||
|
||||
;; Other
|
||||
(define-key map (kbd "g") #'ement-room-sync)
|
||||
map)
|
||||
"Keymap for Ement room buffers.")
|
||||
|
||||
|
@ -4039,40 +4066,56 @@ For use in `completion-at-point-functions'."
|
|||
|
||||
(require 'transient)
|
||||
|
||||
(transient-define-prefix ement-room-transient ()
|
||||
(transient-define-prefix ement-room-transient ()
|
||||
"Transient for Ement Room buffers."
|
||||
["Messaging"
|
||||
("RET" "Write message" ement-room-send-message)
|
||||
("S-RET" "Write reply" ement-room-send-reply)
|
||||
("c" "Compose message in buffer" ement-room-compose-message)
|
||||
("e" "Edit message at point" ement-room-edit-message)
|
||||
("C-k" "Delete message at point" ement-room-delete-message)
|
||||
("s e" "Send emote" ement-room-send-emote)
|
||||
("s r" "Send reaction" ement-room-send-reaction)
|
||||
("s f" "Send file" ement-room-send-file)
|
||||
("s i" "Send image" ement-room-send-image)]
|
||||
["Room"
|
||||
("r c" "Create room" ement-create-room)
|
||||
("r j" "Join room" ement-join-room)
|
||||
("r l" "Leave room" ement-leave-room)
|
||||
("r F" "Forget room" ement-forget-room)
|
||||
("r o" "Occur search in room" ement-room-occur)
|
||||
("r t" "Tag/untag room" ement-tag-room)
|
||||
("r T" "Set topic" ement-room-set-topic
|
||||
:description (lambda ()
|
||||
(format "Set topic: %s" (propertize (ement-room-topic ement-room)
|
||||
'face 'font-lock-doc-face))))
|
||||
("r f" "Set message format" ement-room-set-message-format
|
||||
:description (lambda ()
|
||||
(format "Set message format: %s" (propertize ement-room-message-format-spec
|
||||
'face 'font-lock-doc-face))))]
|
||||
["Rooms"
|
||||
("R l" "List rooms" ement-taxy-room-list)
|
||||
("R v" "View other room" ement-view-room)]
|
||||
["Users"
|
||||
("u RET" "Send direct message to user" ement-send-direct-message)
|
||||
("u i" "Invite user" ement-invite)
|
||||
("u I" "Ignore user" ement-ignore-user)])
|
||||
[:pad-keys t
|
||||
["Movement"
|
||||
("TAB" "Next event" ement-room-goto-next)
|
||||
("<backtab>" "Previous event" ement-room-goto-prev)
|
||||
("SPC" "Scroll up and mark read" ement-room-scroll-up-mark-read)
|
||||
("S-SPC" "Scroll down" ement-room-scroll-down-command)
|
||||
("M-SPC" "Jump to fully-read marker" ement-room-goto-fully-read-marker)]
|
||||
["Switching"
|
||||
("M-g M-l" "List rooms" ement-taxy-room-list)
|
||||
("M-g M-r" "Switch to other room" ement-view-room)
|
||||
("M-g M-m" "Switch to mentions buffer" ement-notify-switch-to-mentions-buffer)
|
||||
("M-g M-n" "Switch to notifications buffer" ement-notify-switch-to-notifications-buffer)
|
||||
("q" "Quit window" quit-window)]]
|
||||
[:pad-keys t
|
||||
["Messages"
|
||||
("RET" "Write message" ement-room-send-message)
|
||||
("S-RET" "Write reply" ement-room-send-reply)
|
||||
("M-RET" "Compose message in buffer" ement-room-compose-message)
|
||||
("<insert>" "Edit message" ement-room-edit-message)
|
||||
("C-k" "Delete message" ement-room-delete-message)
|
||||
("s r" "Send reaction" ement-room-send-reaction)
|
||||
("s e" "Send emote" ement-room-send-emote)
|
||||
("s f" "Send file" ement-room-send-file)
|
||||
("s i" "Send image" ement-room-send-image)
|
||||
("v" "View event" ement-room-view-event)]
|
||||
["Users"
|
||||
("u RET" "Send direct message" ement-send-direct-message)
|
||||
("u i" "Invite user" ement-invite)
|
||||
("u I" "Ignore user" ement-ignore-user)]
|
||||
]
|
||||
[:pad-keys t
|
||||
["Room"
|
||||
("M-s o" "Occur search in room" ement-room-occur)
|
||||
("r t" "Set topic" ement-room-set-topic)
|
||||
("r f" "Set message format" ement-room-set-message-format)
|
||||
("r T" "Tag/untag room" ement-tag-room)]
|
||||
["Room membership"
|
||||
("R c" "Create room" ement-create-room)
|
||||
("R j" "Join room" ement-join-room)
|
||||
("R l" "Leave room" ement-leave-room)
|
||||
("R F" "Forget room" ement-forget-room)]
|
||||
]
|
||||
["Other"
|
||||
("g" "Sync new messages" ement-room-sync
|
||||
:if (lambda ()
|
||||
(interactive)
|
||||
(or (not ement-auto-sync)
|
||||
(not (map-elt ement-syncs ement-session)))))])
|
||||
|
||||
;;;; Footer
|
||||
|
||||
|
|
BIN
images/transient.png
Normal file
BIN
images/transient.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
Loading…
Add table
Reference in a new issue