ement.el

A Matrix client for GNU Emacs

GPL-3.0 License

Stars
464

Bot releases are visible (Hide)

ement.el - Latest Release

Published by alphapapa 6 months ago

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 press C-g to choose a different one with a key bound in ement-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 in which-key and similar. (Thanks to Phil Sainty.)
  • Option: ement-room-use-variable-pitch (previously named ement-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 the ement-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 when ement-room-compose-buffer-window-auto-height is enabled.
  • Option ement-room-compose-buffer-window-auto-height-max specifies the maximum window height when ement-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 chosen ement-room-compose-method. (Bound to RET in room buffers.)
  • Command ement-room-dispatch-new-message-alt starts writing a new message using the alternative method. (Bound to M-RET in room buffers.)
  • Command ement-room-dispatch-edit-message edits a message using your chosen ement-room-compose-method. (Bound to <insert> in room buffers.)
  • Command ement-room-dispatch-reply-to-message replies to a message using your chosen ement-room-compose-method. (Bound to S-<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 to C-x C-s in compose buffers.)
  • Command ement-room-compose-abort kills the compose buffer and delete its window. (Bound to C-c C-k in compose buffers.)
  • Command ement-room-compose-abort-no-history does the same without adding to ement-room-message-history. (Equivalent to C-u C-c C-k.)
  • Command ement-room-compose-history-prev-message cycles backwards through ement-room-message-history. (Bound to M-p in compose buffers.)
  • Command ement-room-compose-history-next-message cycles forwards through ement-room-message-history. (Bound to M-n in compose buffers.)
  • Command ement-room-compose-history-isearch-backward initiates an isearch through ement-room-message-history. (Bound to M-r in compose buffers; continue searching with C-r or C-s.)
  • Command ement-room-compose-history-isearch-backward-regexp initiates a regexp isearch through ement-room-message-history. (Bound to C-M-r in compose buffers; continue searching with C-r or C-s.)

ement-room-self-insert-mode

  • Option ement-room-self-insert-commands determines which commands will start a new message when ement-room-self-insert-mode is enabled (defaulting to self-insert-command and yank).
  • Option ement-room-self-insert-chars determines which typed characters will start a new message when ement-room-self-insert-mode is enabled (regardless of whether they are bound to self-insert-command).
  • Option ement-room-mode-map-prefix-key defines a prefix key for accessing the full ement-room-mode-map when ement-room-self-insert-mode is enabled. (By default this key is DEL.)

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).
ement.el -

Published by alphapapa 9 months ago

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.)
ement.el -

Published by alphapapa about 1 year ago

Additions

  • Group joined direct rooms in directory buffers.
  • Command end-of-buffer is bound to N 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.
ement.el -

Published by alphapapa about 1 year ago

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 the ement-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 and ement-room-goto-prev work more usefully at the end of a room buffer. (Now pressing n on the last event moves point to the end of the buffer so it will scroll automatically for new messages, and then pressing p skips over any read marker to the last event.)
  • Room buffer bindings:
    • ement-room-goto-next and ement-room-goto-prev are bound to n and p, respectively.
    • ement-room-goto-fully-read-marker is bound to M-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 and ement-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 the command-history variable's arguments. (For ement- commands, that may include large data structures, like ement-session structs, which should never be serialized or reused, and savehist'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.)
ement.el -

Published by alphapapa about 1 year ago

Additions

  • Commands ement-room-image-show and ement-room-image-scale (bound to RET and M-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.)
ement.el - v0.10

Published by alphapapa over 1 year ago

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, like gpg-agent), Emacs would automatically decrypt the file while reading its contents and then upload the decrypted contents. (This happened because the function insert-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 use insert-file-contents-literally instead.) Thanks to @welkinsl:matrix.org for reporting.

Additions

Changes

  • Activating a space in the room list uses ement-view-space (which shows a directory of rooms in the space) instead of ement-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 call ement-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.
ement.el -

Published by alphapapa over 1 year ago

Fixes

  • Error in ement-room-list command upon initial sync.
ement.el - v0.9

Published by alphapapa over 1 year ago

Additions

  • Option ement-room-timestamp-header-align controls how timestamp headers are aligned in room buffers.
  • Option ement-room-view-hook runs functions when ement-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

ement.el -

Published by alphapapa over 1 year ago

Additions

  • Command ement-create-space creates a new space.
  • Command ement-room-toggle-space toggles a room's membership in a space (a way to group rooms in Matrix).
  • Visibility of sections in the room list is saved across sessions.
  • Command ement-room-list-kill-buffer kills a room's buffer from the room list.
  • Set device_id and initial_device_display_name upon login (e.g. Ement.el: username@hostname). (#134. Thanks to Arto Jantunen for reporting.)

Changes

  • Room-related commands may be called interactively with a universal prefix to prompt for the room/session (allowing to send events or change settings in rooms other than the current one).
  • Command ement-room-list reuses an existing window showing the room list when possible. (#131. Thanks to Jeff Bowman for suggesting.)
  • Command ement-tag-room toggles tags (rather than adding by default and removing when called with a prefix).
  • Default room grouping now groups "spaced" rooms separately.

Fixes

  • Message format filter works properly when writing replies.
  • Improve insertion of sender name headers when using the "Elemental" message format.
  • Prompts in commands ement-leave-room and ement-forget-room.
ement.el -

Published by alphapapa over 1 year ago

ement.el -

Published by alphapapa over 1 year ago

ement.el -

Published by alphapapa about 2 years ago

ement.el -

Published by alphapapa about 2 years ago

ement.el -

Published by alphapapa about 2 years ago

ement.el -

Published by alphapapa about 2 years ago

ement.el -

Published by alphapapa about 2 years ago

ement.el -

Published by alphapapa about 2 years ago