Releases: alphapapa/ement.el
v0.16
Compatibility
- Use authenticated media requests (part of Matrix 1.11; see MSC3916 and matrix.org's sunsetting unauthenticated media).
Additions
- When option
ement-room-images
is disabled (preventing automatic download and display of images), individual images may be shown by clicking the button in their events.
Changes
- Option
ement-room-coalesce-events
may now be set to (and defaults to) a maximum number of events to coalesce together. (This avoids potential performance problems in rare cases. See #247. Thanks to Arto Jantunen for reporting and Sergio Durigan Junior for testing.)
Fixes
- Replies to edited messages are correctly sent to the original event (whereas previously they were sent to the edit, which caused reactions to not be shown). (#230, #277. Thanks to Phil Sainty for suggesting, and to dionisos for reporting.)
- Set
filter-buffer-substring-function
in room buffers to prevent undesired text properties from being included in copied text. (#278. Thanks to Phil Sainty.) - Command
ement-disconnect
no longer shows an error message. (#208.) - Retrieval of earlier events in a just-joined room. (#148. Thanks to Richard Brežák for reporting, and to Phil Sainty for testing.)
- Cache computed displaynames in rooms (avoiding unnecessary reiteration and recalculation). (#298. Thanks to Rutherther for reporting and testing, and to Phil Sainty.)
- Customization group for options
ement-room-mode-hook
andement-room-self-insert-mode
. (Thanks to Phil Sainty.) - Inheritance for some faces. (#303. Thanks to Jonas Bernoulli.)
v0.15.1
Fixes
- Handle unnamed rooms in
ement-directory
list. (See #248. Thanks to Hunter Jozwiak and Bharath Palavalli for reporting.) - Don't use
cl-type
pcase
form in Emacs versions before 28. (#279. Thanks to Adam Bark for reporting.)
v0.15
Additions
-
Configurable emoji picker for sending reactions. (#199, #201. Thanks to Omar Antolín Camarena.): - Option
ement-room-reaction-picker
sets the default picker. Within that, the user may pressC-g
to choose a different one with a key bound inement-room-reaction-map
. -
A variety of enhancements for using compose buffers. (#140. Thanks to Phil Sainty.): Chiefly, messages can now be composed in small windows below room windows, rather than in the minibuffer or a full-sized window. A variety of options and commands are available related to these features. See compose buffer enhancements.
-
Global minor mode
ement-room-self-insert-mode
enables "just typing" to start a message. (Thanks to Phil Sainty.): See ement-room-self-insert-mode. -
Options affecting how images are displayed in room buffers.: See image display.
Changes
- Improve prompt used when viewing a room that is not joined. (#241. Thanks to Phil Sainty.)
- Format "was kicked and rejoined" membership event pairs.
- Enclose reasons for membership events in quotes for clarity.
- Improve default room list grouping.
- When editing or replying to a message in a compose buffer, the related room event is highlighted persistently until the compose buffer is killed. (Thanks to Phil Sainty.)
- In compose buffers
dabbrev
will prioritise firstly the associated room, and secondly all other rooms, before looking to other buffers for completions. (Thanks to Phil Sainty.) - Aborted messages are now added to
ement-room-message-history
rather than the kill-ring. (Thanks to Phil Sainty.) - Prefix bindings in
ement-room-mode-map
now have named labels inwhich-key
and similar. (Thanks to Phil Sainty.) - Option:
ement-room-use-variable-pitch
(previously namedement-room-shr-use-fonts
) enables variable-pitch fonts for all message types. (This option previously supported formatted messages, but now works for plain text messages as well.) Note: users who have customized theement-room-message-text
face to be variable-pitch should revert that change, as it causes problems for formatted messages, and is no longer necessary. (#174. Thanks to Phil Sainty.)
Fixes
- Edits to previous edit events are correctly sent to the server as edits to the original message event. (#230. Thanks to Phil Sainty.)
- Completion at point works more reliably in compose buffers. (Thanks to Phil Sainty.)
- Toggling images to fill the window body no longer triggers unintended scrolling. (Thanks to Phil Sainty.)
- Recognition of mentions after a newline. (#267. Thanks to Phil Sainty.)
- Newlines in
ement-room-message-format-spec
are considered when calculating the wrap-prefix. (Thanks to Phil Sainty.) - Weight of face
ement-room-list-direct
(now correctly bold in room list heading).
Compose buffer enhancements
- Option
ement-room-compose-buffer-display-action
declares how and where a new compose buffer window should be displayed. (By default, in a new window below the associated room buffer.) - Option
ement-room-compose-buffer-window-dedicated
determines whether compose buffers will have dedicated windows. - Option
ement-room-compose-buffer-window-auto-height
causes dynamic scaling of the compose buffer window height so that the full message is visible at all times. - Option
ement-room-compose-buffer-window-auto-height-min
specifies the minimum window height whenement-room-compose-buffer-window-auto-height
is enabled. - Option
ement-room-compose-buffer-window-auto-height-max
specifies the maximum window height whenement-room-compose-buffer-window-auto-height
is enabled. - Option
ement-room-compose-method
chooses between minibuffer-centric or compose-buffer-centric behaviour. - Command
ement-room-dispatch-new-message
starts writing a new message using your chosenement-room-compose-method
. (Bound toRET
in room buffers.) - Command
ement-room-dispatch-new-message-alt
starts writing a new message using the alternative method. (Bound toM-RET
in room buffers.) - Command
ement-room-dispatch-edit-message
edits a message using your chosenement-room-compose-method
. (Bound to<insert>
in room buffers.) - Command
ement-room-dispatch-reply-to-message
replies to a message using your chosenement-room-compose-method
. (Bound toS-<return>
in room buffers.) - Command
ement-room-compose-edit
edits a message using a compose buffer. - Command
ement-room-compose-reply
replies to a message using a compose buffer. - Command
ement-room-compose-send-direct
sends a message directly from a compose buffer (without the minibuffer). (Bound toC-x C-s
in compose buffers.) - Command
ement-room-compose-abort
kills the compose buffer and delete its window. (Bound toC-c C-k
in compose buffers.) - Command
ement-room-compose-abort-no-history
does the same without adding toement-room-message-history
. (Equivalent toC-u C-c C-k
.) - Command
ement-room-compose-history-prev-message
cycles backwards throughement-room-message-history
. (Bound toM-p
in compose buffers.) - Command
ement-room-compose-history-next-message
cycles forwards throughement-room-message-history
. (Bound toM-n
in compose buffers.) - Command
ement-room-compose-history-isearch-backward
initiates an isearch throughement-room-message-history
. (Bound toM-r
in compose buffers; continue searching withC-r
orC-s
.) - Command
ement-room-compose-history-isearch-backward-regexp
initiates a regexp isearch throughement-room-message-history
. (Bound toC-M-r
in compose buffers; continue searching withC-r
orC-s
.)
ement-room-self-insert-mode
- Option
ement-room-self-insert-commands
determines which commands will start a new message whenement-room-self-insert-mode
is enabled (defaulting toself-insert-command
andyank
). - Option
ement-room-self-insert-chars
determines which typed characters will start a new message whenement-room-self-insert-mode
is enabled (regardless of whether they are bound toself-insert-command
). - Option
ement-room-mode-map-prefix-key
defines a prefix key for accessing the fullement-room-mode-map
whenement-room-self-insert-mode
is enabled. (By default this key isDEL
.)
Image display
- Option
ement-room-image-margin
is the number of pixels of margin around image thumbnails. - Option
ement-room-image-relief
is the number of pixels of shadow rectangle around image thumbnails. - Option
ement-room-image-thumbnail-height
is the window body height multiple to use when toggling full-sized images to thumbnails (by default, 0.2). - Option
ement-room-image-thumbnail-height-min
is the minimum pixel height for thumbnail images (by default, 30 pixels).
v0.14
Additions
- Audio events are rendered as a link to the audio file. (Thanks to Arto Jantunen.)
- Customization group
ement-room-list
. - Option
ement-room-list-space-prefix
is applied to space names in the room list (e.g. set to empty string for cleaner appearance). - Option
ement-room-reaction-names-limit
sets how many senders of a reaction are shown in the buffer (more than that many are shown in the tooltip).
Changes
- Bind
TAB
/BACKTAB
to move between links in room and like buffers. (#113. Thanks to Eric S. Fraga for suggesting.)
Fixes
- Insertion of sender headers (when using "Elemental" message format). (Refactoring contributed by Steven Allen.)
- Some room event data was being unintentionally serialized to disk when caching the room list visibility state. (#256)
- Notifications buffer restores properly when bookmarked.
- Command
ement-room-send-reaction
checks for an event at point. (Thanks to Phil Sainty.)
v0.13
Additions
- Group joined direct rooms in directory buffers.
- Command
end-of-buffer
is bound toN
in room buffers.
Changes
- Command
ement-room-image-show
use frame parameters to maximize the frame, making it easier for users to override. (#223. Thanks to Nicholas Vollmer.)
Fixes
- Name for direct rooms in directory buffers.
- Editing a message from the compose buffer would be sent as a reply to the edited message. (Fixes #189. Thanks to Phil Sainty for reporting.)
- Editing an already-edited message. (#226. Thanks to Phil Sainty for reporting.)
- Replying to an already-edited message. (#227. Thanks to Phil Sainty for reporting.)
- Rendering redactions of edited messages. (#228. Thanks to Phil Sainty for reporting.)
- Redacting an edited message. (#228. Thanks to Phil Sainty for reporting.)
- Command
ement-room-flush-colors
maintains point position.
v0.12
Additions
- Command
ement-notifications
shows recent notifications, similar to the pane in the Element client. (This new command fetches recent notifications from the server and allows scrolling up to retrieve older ones. Newly received notifications, as configured in theement-notify
options, are displayed in the same buffer. This functionality will be consolidated in the future.) - Face
ement-room-quote
, applied to quoted parts of replies.
Changes
- Commands
ement-room-goto-next
andement-room-goto-prev
work more usefully at the end of a room buffer. (Now pressingn
on the last event moves point to the end of the buffer so it will scroll automatically for new messages, and then pressingp
skips over any read marker to the last event.) - Room buffer bindings:
ement-room-goto-next
andement-room-goto-prev
are bound ton
andp
, respectively.ement-room-goto-fully-read-marker
is bound toM-g M-p
(the mnemonic being "go to previously read").
- The quoted part of a reply now omits the face applied to the rest of the message, helping to distinguish them.
- Commands that read a string from the minibuffer in
ement-room
buffers andement-connect
user ID prompts use separate history list variables. - Use Emacs's Jansson-based JSON-parsing functions when available. (This results in a 3-5x speed improvement for parsing JSON responses, which can be significant for large initial sync responses. Thanks to Ryan Rix for discovering this!)
Fixes
- File event formatter assumed that file size metadata would be present (a malformed, e.g. spam, event might not have it).
- Send correct file size when sending files/images.
- Underscores are no longer interpreted as denoting subscripts when sending messages in Org format. (Thanks to Phil Sainty.)
- Add workaround for
savehist-mode
's serializing of thecommand-history
variable's arguments. (Forement-
commands, that may include large data structures, likeement-session
structs, which should never be serialized or reused, andsavehist
's doing so could cause noticeable delays for users who enabled it). (See #216. Thanks to Phil Sainty and other users who helped to discover this problem.)
v0.11
Additions
- Commands
ement-room-image-show
andement-room-image-scale
(bound toRET
andM-RET
when point is at an image) view and scale images. (Thanks to Steven Allen for these and other image-related improvements.) - Command
ement-room-image-show-mouse
is used to show an image with the mouse.
Changes
- Enable
image-mode
when showing images in a new buffer. (Thanks to Steven Allen.) - Command
ement-room-image-show
is not used for mouse events. - Show useful message in SSO login page.
Fixes
- Allow editing of already-edited events.
- Push rules' actions may be listed in any order. (Fixes compatibility with v1.7 of the spec. Thanks to Steven Allen.)
- Call external browser for SSO login page. (JavaScript is usually required, which EWW doesn't support, and loading the page twice seems to change state on the server that causes the SSO login to fail, so it's best to load the page in the external browser directly).
- Clean up SSO server process after two minutes in case SSO login fails.
- Don't stop syncing if an error is signaled while sending a notification.
- Command
ement-room-list-next-unread
could enter an infinite loop. (Thanks to Visuwesh and@mrtnmrtn:matrix.org
.) - Events in notifications buffer could appear out-of-order. (#191. Thanks to Phil Sainty.)
Internal
- The
ement-read-receipt-idle-timer
could be duplicated when using multiple sessions. (#196. Thanks to Phil Sainty.)
v0.10
Security Fixes
- When uploading a GPG-encrypted file (i.e. one whose filename ends in
.gpg
), if the recipient's private key or the symmetric encryption key were cached by Emacs (or a configured agent, likegpg-agent
), Emacs would automatically decrypt the file while reading its contents and then upload the decrypted contents. (This happened because the functioninsert-file-contents
was used, which does many things automatically, some of which are not even mentioned in its docstring; refer to its entry in the Elisp Info manual for details. The fix is to useinsert-file-contents-literally
instead.) Thanks to@welkinsl:matrix.org
for reporting.
Additions
- Support for Single Sign-On (SSO) authentication. (#24. Thanks to Jeffrey Stoffers for development, and to Phil Sainty, Jakub Kadlčík, and Juanjo Presa for testing.)
- Bind
m
in room buffers toement-room-mark-read
(which moves read markers to point).
Changes
- Activating a space in the room list uses
ement-view-space
(which shows a directory of rooms in the space) instead ofement-view-room
(which shows events in the space, which is generally not useful). - Command
ement-view-room
, when used for a space, shows a footer explaining that the buffer is showing a space rather than a normal room, with a button to callement-view-space
for it (which lists rooms in the space). - Command
ement-describe-room
shows whether a room is a space or a normal room. - Command
ement-view-space
shows the space's name and alias. - Command
ement-room-scroll-up-mark-read
moves the fully read marker to the top of the window (when the marker's position is within the range of known events), rather than only moving it when at the end of the buffer. (This eases the process of gradually reading a long backlog of messages.) - Improve readme export settings.
Fixes
- Extra indentation of some membership events. (Thanks to Steven Allen.)
- Customization group for faces.
- Don't reinitialize
ement-room-list-mode
when room list buffer is refreshed. (#146. Thanks to Ted Reed for reporting.) - Don't fetch old events when scrolling to the bottom of a room buffer (only when scrolling to the top). (Thanks to Steven Allen.)
- Minor improvements to auto-detection of homeserver URIs. (See #24. Thanks to Phil Sainty.)
- Uploading of certain filetypes (e.g. Emacs would decompress some archives before uploading). Thanks to
@welkinsl:matrix.org
for reporting. - Messages edited multiple times sometimes weren't correctly replaced.
v0.9.1
v0.9
Additions
- Option
ement-room-timestamp-header-align
controls how timestamp headers are aligned in room buffers. - Option
ement-room-view-hook
runs functions whenement-room-view
is called. (By default, it refreshes the room list buffer.) - In the room list, middle-clicking a room which has a buffer closes its buffer.
- Basic support for video events. (Thanks to Arto Jantunen.)
Changes
- Using new option
ement-room-timestamp-header-align
, timestamp headers default to right-aligned. (With default settings, this keeps them near message timestamps and makes for a cleaner appearance.)
Fixes
- Recognition of certain MXID or displayname forms in outgoing messages when linkifying (aka “pilling”) them.
- Unreadable room avatar images no longer cause errors. (Fixes #147. Thanks to @jgarte for reporting.)
- Don’t error in
ement-room-list
when no rooms are joined. (Fixes #123. Thanks to @Kabouik and Omar Antolín Camarena for reporting.) - Enable member/room completion in compose buffers. (Fixes #115. Thanks to Thanks to Justus Piater and Caleb Chase for reporting.)