This is dochHjBey.info, produced by makeinfo version 6.8 from
ement.texi.

INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* Ement: (ement).       Matrix client for Emacs.
END-INFO-DIR-ENTRY


File: dochHjBey.info,  Node: Top,  Next: Installation,  Up: (dir)

Ement.el
********

https://elpa.gnu.org/packages/ement.svg
(https://elpa.gnu.org/packages/ement.html)

   Ement.el is a Matrix (http://www.matrix.org/) client for GNU Emacs
(https://www.gnu.org/software/emacs/).  It aims to be simple, fast,
featureful, and reliable, while integrating naturally with Emacs.

   Feel free to join us in the chat room:
https://img.shields.io/matrix/ement.el:matrix.org.svg?label=%23ement.el:matrix.org
(https://matrix.to/#/#ement.el:matrix.org)

* Menu:

* Installation::
* Usage::
* Changelog::
* Development::
* License::

— The Detailed Node Listing —

Installation

* GNU ELPA::
* GNU Guix::
* Debian, Ubuntu: Debian Ubuntu.
* Nix::
* Other distributions::
* Git master::
* Manual::


Usage

* Bindings::
* Tips::
* Encrypted room support through Pantalaimon::


Changelog

* 0.17: 017.
* 0.16: 016.
* 0.15.1: 0151.
* 0.15: 015.
* 0.14: 014.
* 0.13: 013.
* 0.12: 012.
* 0.11: 011.
* 0.10: 010.
* 0.9.3: 093.
* 0.9.2: 092.
* 0.9.1: 091.
* 0.9: 09.
* 0.8.3: 083.
* 0.8.2: 082.
* 0.8.1: 081.
* 0.8: 08.
* 0.7: 07.
* 0.6: 06.
* 0.5.2: 052.
* 0.5.1: 051.
* 0.5: 05.
* 0.4.1: 041.
* 0.4: 04.
* 0.3.1: 031.
* 0.3: 03.
* 0.2.1: 021.
* 0.2: 02.
* 0.1.4: 014 (1).
* 0.1.3: 013 (1).
* 0.1.2: 012 (1).
* 0.1.1: 011 (1).
* 0.1: 01.


Development

* Copyright Assignment::
* Matrix spec in Org format::
* Rationale::




File: dochHjBey.info,  Node: Installation,  Next: Usage,  Prev: Top,  Up: Top

1 Installation
**************

* Menu:

* GNU ELPA::
* GNU Guix::
* Debian, Ubuntu: Debian Ubuntu.
* Nix::
* Other distributions::
* Git master::
* Manual::


File: dochHjBey.info,  Node: GNU ELPA,  Next: GNU Guix,  Up: Installation

GNU ELPA
========

Ement.el is published in GNU ELPA (http://elpa.gnu.org/) as ement
(https://elpa.gnu.org/packages/ement.html), so it may be installed in
Emacs with the command ‘M-x package-install RET ement RET’.  This is the
recommended way to install Ement.el, as it will install the current
stable release.

   The latest development build may be installed from ELPA-devel
(https://elpa.gnu.org/devel/ement.html) or from Git (see below).


File: dochHjBey.info,  Node: GNU Guix,  Next: Debian Ubuntu,  Prev: GNU ELPA,  Up: Installation

GNU Guix
========

Ement.el is available in GNU Guix (https://guix.gnu.org/) as emacs-ement
(https://packages.guix.gnu.org/packages/emacs-ement/).


File: dochHjBey.info,  Node: Debian Ubuntu,  Next: Nix,  Prev: GNU Guix,  Up: Installation

Debian, Ubuntu
==============

Ement.el is available in Debian as elpa-ement
(https://packages.debian.org/elpa-ement) and in Ubuntu as elpa-ement
(https://packages.ubuntu.com/search?suite=default&section=all&arch=any&keywords=elpa-ement&searchon=names).


File: dochHjBey.info,  Node: Nix,  Next: Other distributions,  Prev: Debian Ubuntu,  Up: Installation

Nix
===

Ement.el is available in NixOS (https://nixos.org/) as
emacsPackages.ement
(https://search.nixos.org/packages?channel=23.05&show=emacsPackages.ement&from=0&size=50&sort=relevance&type=packages&query=ement).


File: dochHjBey.info,  Node: Other distributions,  Next: Git master,  Prev: Nix,  Up: Installation

Other distributions
===================

Ement.el is also available in some other distributions.  See Repology
(https://repology.org/project/emacs:ement/related) for details.


File: dochHjBey.info,  Node: Git master,  Next: Manual,  Prev: Other distributions,  Up: Installation

Git master
==========

The ‘master’ branch of the Git repository is intended to be usable at
all times; only minor bugs are expected to be found in it before a new
stable release is made.

   To install, it is recommended to use quelpa-use-package
(https://github.com/quelpa/quelpa-use-package), like this (using this
helpful command
(https://github.com/alphapapa/unpackaged.el#upgrade-a-quelpa-use-package-forms-package)
for upgrading versions):

     ;; Install and load `quelpa-use-package'.
     (package-install 'quelpa-use-package)
     (require 'quelpa-use-package)

     ;; Install Ement.
     (use-package ement
       :quelpa (ement :fetcher github :repo "alphapapa/ement.el"))

   One might also use systems like Elpaca
(https://github.com/progfolio/elpaca) or Straight
(https://github.com/radian-software/straight.el) (which is also used by
DOOM (https://github.com/doomemacs/doomemacs)), but the author cannot
offer support for them.


File: dochHjBey.info,  Node: Manual,  Prev: Git master,  Up: Installation

Manual
======

Ement.el is intended to be installed with Emacs’s package system, which
will ensure that the required autoloads are generated, etc.  If you
choose to install it manually, you’re on your own.


File: dochHjBey.info,  Node: Usage,  Next: Changelog,  Prev: Installation,  Up: Top

2 Usage
*******

   • • • 
  1. Call command ‘ement-connect’ to connect.  Multiple sessions are
     supported: call the command again with a ‘C-u’ universal prefix to
     connect to another account.
  2. Wait for initial sync to complete (which can take a few
     moments–initial sync JSON responses can be large).
  3. Use these commands (room-related commands may be called with
     universal prefix to prompt for the room):
        • ‘ement-list-rooms’ to view the list of joined rooms.
        • ‘ement-view-room’ to view a room’s buffer, selected with
          completion.
        • ‘ement-create-room’ to create a new room.
        • ‘ement-create-space’ to create a space.
        • ‘ement-invite-user’ to invite a user to a room.
        • ‘ement-join-room’ to join a room.
        • ‘ement-leave-room’ to leave a room.
        • ‘ement-forget-room’ to forget a room.
        • ‘ement-tag-room’ to toggle a tag on a room (including
          favorite/low-priority status).
        • ‘ement-list-members’ to list members in a room.
        • ‘ement-send-direct-message’ to send a direct message to a user
          (in an existing direct room, or creating a new one
          automatically).
        • ‘ement-room-edit-message’ to edit a message at point.
        • ‘ement-room-send-file’ to send a file.
        • ‘ement-room-send-image’ to send an image.
        • ‘ement-room-set-topic’ to set a room’s topic.
        • ‘ement-room-occur’ to search in a room’s known events.
        • ‘ement-room-override-name’ to override a room’s display name.
        • ‘ement-ignore-user’ to ignore a user (or with interactive
          prefix, un-ignore).
        • ‘ement-room-set-message-format’ to set a room’s message format
          buffer-locally.
        • ‘ement-room-toggle-space’ to toggle a room’s membership in a
          space (a way to group rooms in Matrix).
        • ‘ement-directory’ to view a room directory.
        • ‘ement-directory-search’ to search a room directory.
  4. Use these special buffers to see events from multiple rooms (you
     can also reply to messages from these buffers!):
        • See all new events that mention you in the ‘*Ement Mentions*’
          buffer.
        • See all new events in rooms that have open buffers in the
          ‘*Ement Notifications*’ buffer.

* Menu:

* Bindings::
* Tips::
* Encrypted room support through Pantalaimon::


File: dochHjBey.info,  Node: Bindings,  Next: Tips,  Up: Usage

Bindings
========

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’

* Menu:

* Room buffers::
* Room list buffer::
* Directory buffers::
* Mentions/notifications buffers::


File: dochHjBey.info,  Node: Room buffers,  Next: Room list buffer,  Up: Bindings

Room buffers
------------

Note that if global minor mode ‘ement-room-self-insert-mode’ is enabled
(by default it is disabled), typing any of the common printable ascii
characters (such as letters) in a room buffer will start a new message,
and most of the following bindings are instead accessed via a prefix
key.  See the minor mode docstring for details.  (The ‘?’ binding is an
exception; by default it opens the command menu regardless of this minor
mode.)

   • Show command menu: ‘?’

   *Movement*

   • Next event: ‘n’
   • Previous event: ‘p’
   • End of buffer: ‘N’
   • Scroll up and mark read: ‘SPC’
   • Scroll down: ‘S-SPC’
   • Jump to fully-read marker: ‘M-g M-p’
   • Move read markers to point: ‘m’
   • Load older messages: at top of buffer, scroll contents up (i.e.
     ‘S-SPC’, ‘M-v’ or ‘mwheel-scroll’)

   *Switching*

   • 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’

   *Messages*

   • Write message: ‘RET’
   • Compose message in buffer: ‘M-RET’ (while writing in minibuffer:
     ‘C-c '‍’).  Customize the option ‘ement-room-compose-method’ to
     make ‘RET’ and the other message bindings use a compose buffer by
     default.  Use command ‘ement-room-compose-org’ to activate Org mode
     in the compose buffer.
   • Write reply to event at point: ‘S-<return>’
   • 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).  (Type an ‘@’ prefix for a member
     mention, a ‘#’ prefix for a room alias, or a ‘!’ prefix for a room
     ID.)

   *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’
   • List members: ‘r m’
   • Set topic: ‘r t’
   • Set message format: ‘r f’
   • Set notification rules: ‘r n’
   • Override display name: ‘r N’
   • Tag/untag room: ‘r T’

   *Room membership*

   • Create room: ‘R c’
   • Join room: ‘R j’
   • Leave room: ‘R l’
   • Forget room: ‘R F’
   • Toggle room’s spaces: ‘R s’

   *Other*

   • Sync new messages (not necessary if auto sync is enabled; with
     prefix to force new sync): ‘g’


File: dochHjBey.info,  Node: Room list buffer,  Next: Directory buffers,  Prev: Room buffers,  Up: Bindings

Room list buffer
----------------

   • Show buffer of room at point: ‘RET’
   • Show buffer of next unread room: ‘SPC’
   • Move between room names: ‘TAB’ / ‘<backtab>’

   • Kill room’s buffer: ‘k’
   • Toggle room’s membership in a space: ‘s’


File: dochHjBey.info,  Node: Directory buffers,  Next: Mentions/notifications buffers,  Prev: Room list buffer,  Up: Bindings

Directory buffers
-----------------

   • View/join a room: ‘RET’ / ‘mouse-1’
   • Load next batch of rooms: ‘+’


File: dochHjBey.info,  Node: Mentions/notifications buffers,  Prev: Directory buffers,  Up: Bindings

Mentions/notifications buffers
------------------------------

   • Move between events: ‘TAB’ / ‘<backtab>’
   • Go to event at point in its room buffer: ‘RET’
   • Write reply to event at point (shows the event in its room while
     writing): ‘S-<return>’


File: dochHjBey.info,  Node: Tips,  Next: Encrypted room support through Pantalaimon,  Prev: Bindings,  Up: Usage

Tips
====

   • Desktop notifications are enabled by default for events that
     mention the local user.  They can also be shown for all events in
     rooms with open buffers.
   • Send messages in Org mode format by customizing the option
     ‘ement-room-send-message-filter’ (which enables Org format by
     default), or by calling ‘ement-room-compose-org’ in a compose
     buffer (which enables it for a single message).  Then Org-formatted
     messages are automatically converted and sent as HTML-formatted
     messages (with the Org syntax as the plain-text fallback).  You can
     send syntax such as:
        • Bold, italic, underline, strikethrough
        • Links
        • Tables
        • Source blocks (including results with ‘:exports both’)
        • Footnotes (okay, that might be pushing it, but you can!)
        • And, generally, anything that Org can export to HTML
        • Note that the default ‘org-export-preserve-breaks’ value
          causes singular line breaks to be exported as spaces.  To
          preserve the line breaks, indentation, and blank lines in a
          region, but otherwise use normal formatting, you can use the
          ‘verse’ block type.  Refer to ‘(info "(org) Paragraphs")’ and
          ‘(info "(org) Structure Templates")’ for details.
   • Starting in the room list buffer, by pressing ‘SPC’ repeatedly, you
     can cycle through and read all rooms with unread buffers.  (If a
     room doesn’t have a buffer, it will not be included.)
   • Room buffers and the room-list buffer can be bookmarked in Emacs,
     i.e.  using ‘C-x r m’.  This is especially useful with Burly
     (https://github.com/alphapapa/burly.el): you can arrange an Emacs
     frame with several room buffers displayed at once, use
     ‘burly-bookmark-windows’ to bookmark the layout, and then you can
     restore that layout and all of the room buffers by opening the
     bookmark, rather than having to manually arrange them every time
     you start Emacs or change the window configuration.
   • Images and other files can be uploaded to rooms using
     drag-and-drop.
   • Mention members by typing a ‘@’ followed by their displayname or
     Matrix ID.  (Members’ names and rooms’ aliases/IDs may be completed
     with ‘completion-at-point’ commands.)
   • Customize ‘ement-room-use-variable-pitch’ to render messages using
     proportional fonts.
   • You can customize settings in the ‘ement’ group.
        • *Note:* ‘setq’ should not be used for certain options, because
          it will not call the associated setter function.  Users who
          have an aversion to the customization system may experience
          problems.

* Menu:

* Displaying symbols and emojis::


File: dochHjBey.info,  Node: Displaying symbols and emojis,  Up: Tips

Displaying symbols and emojis
-----------------------------

Emacs may not display certain symbols and emojis well by default.  Based
on this question and answer
(https://emacs.stackexchange.com/questions/62049/override-the-default-font-for-emoji-characters),
you may find that the simplest way to fix this is to install an
appropriate font, like Noto Emoji
(https://www.google.com/get/noto/#emoji-zsye), and then use this Elisp
code:

     (setf use-default-font-for-symbols nil)
     (set-fontset-font t 'unicode "Noto Emoji" nil 'append)


File: dochHjBey.info,  Node: Encrypted room support through Pantalaimon,  Prev: Tips,  Up: Usage

Encrypted room support through Pantalaimon
==========================================

Ement.el doesn’t support encrypted rooms natively, but it can be used
transparently with the E2EE-aware reverse proxy daemon Pantalaimon
(https://github.com/matrix-org/pantalaimon/).  After configuring it
according to its documentation, call ‘ement-connect’ with the
appropriate hostname and port, like:

     (ement-connect :uri-prefix "http://localhost:8009")


File: dochHjBey.info,  Node: Changelog,  Next: Development,  Prev: Usage,  Up: Top

3 Changelog
***********

* Menu:

* 0.17: 017.
* 0.16: 016.
* 0.15.1: 0151.
* 0.15: 015.
* 0.14: 014.
* 0.13: 013.
* 0.12: 012.
* 0.11: 011.
* 0.10: 010.
* 0.9.3: 093.
* 0.9.2: 092.
* 0.9.1: 091.
* 0.9: 09.
* 0.8.3: 083.
* 0.8.2: 082.
* 0.8.1: 081.
* 0.8: 08.
* 0.7: 07.
* 0.6: 06.
* 0.5.2: 052.
* 0.5.1: 051.
* 0.5: 05.
* 0.4.1: 041.
* 0.4: 04.
* 0.3.1: 031.
* 0.3: 03.
* 0.2.1: 021.
* 0.2: 02.
* 0.1.4: 014 (1).
* 0.1.3: 013 (1).
* 0.1.2: 012 (1).
* 0.1.1: 011 (1).
* 0.1: 01.


File: dochHjBey.info,  Node: 017,  Next: 016,  Up: Changelog

0.17
====

*Additions*

   • Command ‘ement-room-download-file’, which downloads the file in the
     event at point (for image, audio, video, and file messages).  (#323
     (https://github.com/alphapapa/ement.el/pull/323).  Thanks to Arto
     Jantunen (https://github.com/viiru-).)
   • Customization groups for faces.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • Option ‘ement-room-hide-redacted-message-content’, which hides the
     content of redacted messages by default.  It may be disabled to
     keep redacted content visible with a strikethrough face, which may
     be useful for room moderators, but users should keep in mind that
     doing so will leave unpleasant content visible in the current
     session, even after being redacted by moderators.
   • Option ‘ement-room-list-avatar-generation’: if disabled, SVG-based
     room avatars are not generated.  This option automatically tests
     whether SVG support is available in Emacs, and should allow use
     with builds of Emacs that lack ‘librsvg’ support.

   *Changes*

   • Disable underline for faces ‘ement-room-list-direct’ and
     ‘ement-room-list-name’ (in case a face they inherit from enables
     it, e.g.  when themed).

   *Fixes*

   • Call ‘eww-browse-url’ instead of ‘browse-url’ in
     ‘ement-room-browse-mxc’ (because the latter is not useful for
     authenticated media if the user has configured it to use a
     different browser).  (#323
     (https://github.com/alphapapa/ement.el/pull/323).  Thanks to Arto
     Jantunen (https://github.com/viiru-).)
   • Workaround change in ‘magit-section’ that broke fontification in
     room-list and directory buffers.  (See #331
     (https://github.com/alphapapa/ement.el/issues/331).)
   • Handle non-symbol commands in ‘command-history’.  (#330
     (https://github.com/alphapapa/ement.el/issues/330).  Thanks to Alex
     Bennée (https://github.com/stsquad) for reporting.)


File: dochHjBey.info,  Node: 016,  Next: 0151,  Prev: 017,  Up: Changelog

0.16
====

*Compatibility*

   • Use authenticated media requests (part of Matrix 1.11; see MSC3916
     (https://github.com/matrix-org/matrix-spec-proposals/pull/3916) and
     matrix.org’s sunsetting unauthenticated media
     (https://matrix.org/blog/2024/06/26/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
     (https://github.com/alphapapa/ement.el/issues/247).  Thanks to Arto
     Jantunen (https://github.com/viiru-) for reporting and Sergio
     Durigan Junior (https://github.com/sergiodj) 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
     (https://github.com/alphapapa/ement.el/issues/230), #277
     (https://github.com/alphapapa/ement.el/issues/277).  Thanks to Phil
     Sainty (https://github.com/phil-s) for suggesting, and to dionisos
     (https://github.com/dionisos2) for reporting.)
   • Set ‘filter-buffer-substring-function’ in room buffers to prevent
     undesired text properties from being included in copied text.
     (#278 (https://github.com/alphapapa/ement.el/pull/278).  Thanks to
     Phil Sainty (https://github.com/phil-s).)
   • Command ‘ement-disconnect’ no longer shows an error message.  (#208
     (https://github.com/alphapapa/ement.el/issues/208).)
   • Retrieval of earlier events in a just-joined room.  (#148
     (https://github.com/alphapapa/ement.el/issues/148).  Thanks to
     Richard Brežák (https://github.com/MagicRB) for reporting, and to
     Phil Sainty (https://github.com/phil-s) for testing.)
   • Cache computed displaynames in rooms (avoiding unnecessary
     reiteration and recalculation).  (#298
     (https://github.com/alphapapa/ement.el/issues/298).  Thanks to
     Rutherther (https://github.com/Rutherther) for reporting and
     testing, and to Phil Sainty (https://github.com/phil-s).)
   • Customization group for options ‘ement-room-mode-hook’ and
     ‘ement-room-self-insert-mode’.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • Inheritance for some faces.  (#303
     (https://github.com/alphapapa/ement.el/pull/303).  Thanks to Jonas
     Bernoulli (https://github.com/tarsius).)


File: dochHjBey.info,  Node: 0151,  Next: 015,  Prev: 016,  Up: Changelog

0.15.1
======

*Fixes*
   • Handle unnamed rooms in ‘ement-directory’ list.  (See #248
     (https://github.com/alphapapa/ement.el/issues/248).  Thanks to
     Hunter Jozwiak (https://github.com/hjozwiak) and Bharath Palavalli
     (https://github.com/bmp) for reporting.)
   • Don’t use ‘cl-type’ ‘pcase’ form in Emacs versions before 28.
     (#279 (https://github.com/alphapapa/ement.el/issues/279).  Thanks
     to Adam Bark (https://github.com/AdamBark) for reporting.)


File: dochHjBey.info,  Node: 015,  Next: 014,  Prev: 0151,  Up: Changelog

0.15
====

*Additions*

Configurable emoji picker for sending reactions. (#199 (https://github.com/alphapapa/ement.el/issues/199), #201 (https://github.com/alphapapa/ement.el/pull/201). Thanks to Omar Antolín Camarena (https://github.com/oantolin).)
        • 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 (https://github.com/alphapapa/ement.el/issues/140). Thanks to Phil Sainty (https://github.com/phil-s).)
     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 *note compose buffer enhancements: Compose buffer
     enhancements.

Global minor mode ‘ement-room-self-insert-mode’ enables "just typing" to start a message. (Thanks to Phil Sainty (https://github.com/phil-s).)
     See *note ement-room-self-insert-mode: ement-room-self-insert-mode.

Options affecting how images are displayed in room buffers.
     See *note image display: Image display.

   *Changes*

   • Improve prompt used when viewing a room that is not joined.  (#241
     (https://github.com/alphapapa/ement.el/issues/241).  Thanks to Phil
     Sainty (https://github.com/phil-s).)
   • 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
     (https://github.com/phil-s).)
   • 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
     (https://github.com/phil-s).)
   • Aborted messages are now added to ‘ement-room-message-history’
     rather than the kill-ring.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • Prefix bindings in ‘ement-room-mode-map’ now have named labels in
     ‘which-key’ and similar.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • 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
     (https://github.com/alphapapa/ement.el/issues/174).  Thanks to Phil
     Sainty (https://github.com/phil-s).)

   *Fixes*

   • Edits to previous edit events are correctly sent to the server as
     edits to the original message event.  (#230
     (https://github.com/alphapapa/ement.el/issues/230).  Thanks to Phil
     Sainty (https://github.com/phil-s).)
   • Completion at point works more reliably in compose buffers.
     (Thanks to Phil Sainty (https://github.com/phil-s).)
   • Toggling images to fill the window body no longer triggers
     unintended scrolling.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • Recognition of mentions after a newline.  (#267
     (https://github.com/alphapapa/ement.el/issues/267).  Thanks to Phil
     Sainty (https://github.com/phil-s).)
   • Newlines in ‘ement-room-message-format-spec’ are considered when
     calculating the wrap-prefix.  (Thanks to Phil Sainty
     (https://github.com/phil-s).)
   • Weight of face ‘ement-room-list-direct’ (now correctly bold in room
     list heading).

* Menu:

* Compose buffer enhancements::
* ement-room-self-insert-mode::
* Image display::


File: dochHjBey.info,  Node: Compose buffer enhancements,  Next: ement-room-self-insert-mode,  Up: 015

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’.)


File: dochHjBey.info,  Node: ement-room-self-insert-mode,  Next: Image display,  Prev: Compose buffer enhancements,  Up: 015

‘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’.)


File: dochHjBey.info,  Node: Image display,  Prev: ement-room-self-insert-mode,  Up: 015

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


File: dochHjBey.info,  Node: 014,  Next: 013,  Prev: 015,  Up: Changelog

0.14
====

*Additions*

   • Audio events are rendered as a link to the audio file.  (Thanks to
     Arto Jantunen (https://github.com/viiru-).)
   • 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 (https://github.com/alphapapa/ement.el/issues/113).
     Thanks to Eric S.  Fraga (https://github.com/ericsfraga) for
     suggesting.)

   *Fixes*

   • Insertion of sender headers (when using "Elemental" message
     format).  (Refactoring contributed by Steven Allen
     (https://github.com/Stebalien).)
   • Some room event data was being unintentionally serialized to disk
     when caching the room list visibility state.  (#256
     (https://github.com/alphapapa/ement.el/issues/256))
   • Notifications buffer restores properly when bookmarked.
   • Command ‘ement-room-send-reaction’ checks for an event at point.
     (Thanks to Phil Sainty (https://github.com/phil-s).)


File: dochHjBey.info,  Node: 013,  Next: 012,  Prev: 014,  Up: Changelog

0.13
====

*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
     (https://github.com/alphapapa/ement.el/issues/223).  Thanks to
     Nicholas Vollmer (https://github.com/progfolio).)

   *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
     (https://github.com/alphapapa/ement.el/issues/189).  Thanks to Phil
     Sainty (https://github.com/phil-s) for reporting.)
   • Editing an already-edited message.  (#226
     (https://github.com/alphapapa/ement.el/issues/226).  Thanks to Phil
     Sainty (https://github.com/phil-s) for reporting.)
   • Replying to an already-edited message.  (#227
     (https://github.com/alphapapa/ement.el/issues/227).  Thanks to Phil
     Sainty (https://github.com/phil-s) for reporting.)
   • Rendering redactions of edited messages.  (#228
     (https://github.com/alphapapa/ement.el/issues/228).  Thanks to Phil
     Sainty (https://github.com/phil-s) for reporting.)
   • Redacting an edited message.  (#228
     (https://github.com/alphapapa/ement.el/issues/228).  Thanks to Phil
     Sainty (https://github.com/phil-s) for reporting.)
   • Command ‘ement-room-flush-colors’ maintains point position.


File: dochHjBey.info,  Node: 012,  Next: 011,  Prev: 013,  Up: Changelog

0.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 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 (https://github.com/rrix/) 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
     (https://github.com/phil-s).)
   • 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
     (https://github.com/alphapapa/ement.el/issues/216).  Thanks to Phil
     Sainty (https://github.com/phil-s) and other users who helped to
     discover this problem.)


File: dochHjBey.info,  Node: 011,  Next: 010,  Prev: 012,  Up: Changelog

0.11
====

*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
     (https://github.com/Stebalien) 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 (https://github.com/Stebalien).)
   • 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
     (https://spec.matrix.org/v1.7/client-server-api/#actions).  Thanks
     to Steven Allen (https://github.com/Stebalien).)
   • 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 (https://github.com/vizs) and
     ‘@mrtnmrtn:matrix.org’.)
   • Events in notifications buffer could appear out-of-order.  (#191
     (https://github.com/alphapapa/ement.el/issues/191).  Thanks to Phil
     Sainty (https://github.com/phil-s).)

   *Internal*
   • The ‘ement-read-receipt-idle-timer’ could be duplicated when using
     multiple sessions.  (#196
     (https://github.com/alphapapa/ement.el/issues/196).  Thanks to Phil
     Sainty (https://github.com/phil-s).)


File: dochHjBey.info,  Node: 010,  Next: 093,  Prev: 011,  Up: Changelog

0.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, 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*
   • Support for Single Sign-On (SSO) authentication.  (#24
     (https://github.com/alphapapa/ement.el/issues/24).  Thanks to
     Jeffrey Stoffers (https://github.com/Necronian) for development,
     and to Phil Sainty (https://github.com/phil-s), Jakub Kadlčík
     (https://github.com/FrostyX), and Juanjo Presa
     (https://github.com/oneingan) for testing.)
   • Bind ‘m’ in room buffers to ‘ement-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 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 (https://github.com/Stebalien).)
   • Customization group for faces.
   • Don’t reinitialize ‘ement-room-list-mode’ when room list buffer is
     refreshed.  (#146
     (https://github.com/alphapapa/ement.el/issues/146).  Thanks to Ted
     Reed (https://github.com/treed) 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
     (https://github.com/Stebalien).)
   • Minor improvements to auto-detection of homeserver URIs.  (See #24
     (https://github.com/alphapapa/ement.el/issues/24#issuecomment-1569518713).
     Thanks to Phil Sainty (https://github.com/phil-s).)
   • 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.


File: dochHjBey.info,  Node: 093,  Next: 092,  Prev: 010,  Up: Changelog

0.9.3
=====

*Fixes*
   • Another attempt at restoring position in room list when refreshing.
   • Command ‘ement-room-list-next-unread’.


File: dochHjBey.info,  Node: 092,  Next: 091,  Prev: 093,  Up: Changelog

0.9.2
=====

*Fixes*
   • Restore position in room list when refreshing.
   • Completion in minibuffer.


File: dochHjBey.info,  Node: 091,  Next: 09,  Prev: 092,  Up: Changelog

0.9.1
=====

*Fixes*
   • Error in ‘ement-room-list’ command upon initial sync.


File: dochHjBey.info,  Node: 09,  Next: 083,  Prev: 091,  Up: Changelog

0.9
===

*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
     (https://github.com/viiru-).)

   *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
     (https://github.com/alphapapa/ement.el/issues/147).  Thanks to
     @jgarte (https://github.com/jgarte) for reporting.)
   • Don’t error in ‘ement-room-list’ when no rooms are joined.  (Fixes
     #123 (https://github.com/alphapapa/ement.el/issues/123).  Thanks to
     @Kabouik (https://github.com/Kabouik) and Omar Antolín Camarena
     (https://github.com/oantolin) for reporting.)
   • Enable member/room completion in compose buffers.  (Fixes #115
     (https://github.com/alphapapa/ement.el/issues/115).  Thanks to
     Thanks to Justus Piater (https://github.com/piater) and Caleb Chase
     (https://github.com/chasecaleb) for reporting.)


File: dochHjBey.info,  Node: 083,  Next: 082,  Prev: 09,  Up: Changelog

0.8.3
=====

*Fixes*

   • Avoid use of ‘pcase’’s ‘(map :KEYWORD)’ form.  (This can cause a
     broken installation on older versions of Emacs that have an older
     version of the ‘map’ library loaded, such as Emacs 27.2 included in
     Debian 11.  Since there’s no way to force Emacs to actually load
     the version of ‘map’ required by this package before installing it
     (which would naturally happen upon restarting Emacs), we can only
     avoid using such forms while these versions of Emacs are widely
     used.)


File: dochHjBey.info,  Node: 082,  Next: 081,  Prev: 083,  Up: Changelog

0.8.2
=====

*Fixes*

   • Deduplicate grouped membership events.


File: dochHjBey.info,  Node: 081,  Next: 08,  Prev: 082,  Up: Changelog

0.8.1
=====

Added missing changelog entry (of course).


File: dochHjBey.info,  Node: 08,  Next: 07,  Prev: 081,  Up: Changelog

0.8
===

*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
     (https://github.com/alphapapa/ement.el/issues/134).  Thanks to Arto
     Jantunen (https://github.com/viiru-) 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
     (https://github.com/alphapapa/ement.el/issues/131).  Thanks to Jeff
     Bowman (https://github.com/jeffbowman) 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’.


File: dochHjBey.info,  Node: 07,  Next: 06,  Prev: 08,  Up: Changelog

0.7
===

*Additions*

   • Command ‘ement-room-override-name’ sets a local override for a
     room’s display name.  (Especially helpful for 1:1 rooms and bridged
     rooms.  See MSC3015
     (https://github.com/matrix-org/matrix-spec-proposals/pull/3015#issuecomment-1451017296).)

   *Changes*

   • Improve display of room tombstones (displayed at top and bottom of
     buffer, and new room ID is linked to join).
   • Use descriptive prompts in ‘ement-leave-room’ and
     ‘ement-forget-room’ commands.

   *Fixes*

   • Command ‘ement-view-space’ when called from a room buffer.  (Thanks
     to Richard Brežák (https://github.com/MagicRB) for reporting.)
   • Don’t call ‘display-buffer’ when reverting room list buffer.
     (Fixes #121 (https://github.com/alphapapa/ement.el/issues/121).
     Thanks to mekeor (https://github.com/mekeor) for reporting.)
   • Retry sync for network timeouts.  (Accidentally broken in v0.6.)

   *Internal*

   • Function ‘ement-put-account-data’ accepts ‘:room’ argument to put
     on a room’s account data.


File: dochHjBey.info,  Node: 06,  Next: 052,  Prev: 07,  Up: Changelog

0.6
===

*Additions*
   • Command ‘ement-view-space’ to view a space’s rooms in a directory
     buffer.

   *Changes*
   • Improve ‘ement-describe-room’ command (formatting, bindings).

   *Fixes*
   • Retry sync for HTTP 502 "Bad Gateway" errors.
   • Formatting of unban events.
   • Update password authentication according to newer Matrix spec.
     (Fixes compatibility with Conduit servers.  #66
     (https://github.com/alphapapa/ement.el/issues/66).  Thanks to
     Travis Peacock (https://github.com/tpeacock19), Arto Jantunen
     (https://github.com/viiru-), and Stephen D
     (https://github.com/scd31).)
   • Image scaling issues.  (Thanks to Visuwesh
     (https://github.com/vizs).)


File: dochHjBey.info,  Node: 052,  Next: 051,  Prev: 06,  Up: Changelog

0.5.2
=====

*Fixes*
   • Apply ‘ement-initial-sync-timeout’ properly (important for when the
     homeserver is slow to respond).


File: dochHjBey.info,  Node: 051,  Next: 05,  Prev: 052,  Up: Changelog

0.5.1
=====

*Fixes*
   • Autoload ‘ement-directory’ commands.
   • Faces in ‘ement-directory’ listings.


File: dochHjBey.info,  Node: 05,  Next: 041,  Prev: 051,  Up: Changelog

0.5
===

*Additions*
   • Present "joined-and-left" and "rejoined-and-left" membership event
     pairs as such.
   • Process and show rooms’ canonical alias events.

   *Changes*
   • The taxy.el (https://github.com/alphapapa/taxy.el)-based room list,
     with programmable, smart grouping, is now the default
     ‘ement-room-list’.  (The old, ‘tabulated-list-mode’-based room list
     is available as ‘ement-tabulated-room-list’.)
   • When selecting a room to view with completion, don’t offer spaces.
   • When selecting a room with completion, empty aliases and topics are
     omitted instead of being displayed as nil.

   *Fixes*
   • Use of send-message filter when replying.
   • Replies may be written in compose buffers.


File: dochHjBey.info,  Node: 041,  Next: 04,  Prev: 05,  Up: Changelog

0.4.1
=====

*Fixes*
   • Don’t show "curl process interrupted" message when updating a read
     marker’s position again.


File: dochHjBey.info,  Node: 04,  Next: 031,  Prev: 041,  Up: Changelog

0.4
===

*Additions*
   • Option ‘ement-room-unread-only-counts-notifications’, now enabled
     by default, causes rooms’ unread status to be determined only by
     their notification counts (which are set by the server and depend
     on rooms’ notification settings).
   • Command ‘ement-room-set-notification-state’ sets a room’s
     notification state (imitating Element’s user-friendly presets).
   • Room buffers’ Transient menus show the room’s notification state
     (imitating Element’s user-friendly presets).
   • Command ‘ement-set-display-name’ sets the user’s global
     displayname.
   • Command ‘ement-room-set-display-name’ sets the user’s displayname
     in a room (which is also now displayed in the room’s Transient
     menu).
   • Column ‘Notifications’ in the ‘ement-taxy-room-list’ buffer shows
     rooms’ notification state.
   • Option ‘ement-interrupted-sync-hook’ allows customization of how
     sync interruptions are handled.  (Now, by default, a warning is
     displayed instead of merely a message.)

   *Changes*
   • When a room’s read receipt is updated, the room’s buffer is also
     marked as unmodified.  (In concert with the new option, this makes
     rooms’ unread status more intuitive.)

   *Fixes*
   • Binding of command ‘ement-forget-room’ in room buffers.
   • Highlighting of ‘@room’ mentions.


File: dochHjBey.info,  Node: 031,  Next: 03,  Prev: 04,  Up: Changelog

0.3.1
=====

*Fixes*
   • Room unread status (when the last event in a room is sent by the
     local user, the room is considered read).


File: dochHjBey.info,  Node: 03,  Next: 021,  Prev: 031,  Up: Changelog

0.3
===

*Additions*
   • Command ‘ement-directory’ shows a server’s room directory.
   • Command ‘ement-directory-search’ searches a server’s room
     directory.
   • Command ‘ement-directory-next’ fetches the next batch of rooms in a
     directory.
   • Command ‘ement-leave-room’ accepts a ‘FORCE-P’ argument
     (interactively, with prefix) to leave a room without prompting.
   • Command ‘ement-forget-room’ accepts a ‘FORCE-P’ argument
     (interactively, with prefix) to also leave the room, and to forget
     it without prompting.
   • Option ‘ement-notify-mark-frame-urgent-predicates’ marks the frame
     as urgent when (by default) a message mentions the local user or
     "@room" and the message’s room has an open buffer.

   *Changes*
   • Minor improvements to date/time headers.

   *Fixes*
   • Command ‘ement-describe-room’ for rooms without topics.
   • Improve insertion of old messages around existing timestamp
     headers.
   • Reduce D-Bus notification system check timeout to 2 seconds (from
     the default of 25).
   • Compatibility with Emacs 27.


File: dochHjBey.info,  Node: 021,  Next: 02,  Prev: 03,  Up: Changelog

0.2.1
=====

*Fixes*
   • Info manual export filename.


File: dochHjBey.info,  Node: 02,  Next: 014 (1),  Prev: 021,  Up: Changelog

0.2
===

*Changes*
   • Read receipts are re-enabled.  (They’re now implemented with a
     global idle timer rather than ‘window-scroll-functions’, which
     sometimes caused a strange race condition that could cause Emacs to
     become unresponsive or crash.)
   • When determining whether a room is considered unread, non-message
     events like membership changes, reactions, etc.  are ignored.  This
     fixes a bug that caused certain rooms that had no message events
     (like some bridged rooms) to appear as unread when they shouldn’t
     have.  But it’s unclear whether this is always preferable (e.g.
     one might want a member leaving a room to cause it to be marked
     unread), so this is classified as a change rather than simply a
     fix, and more improvements may be made to this in the future.
     (Fixes #97 (https://github.com/alphapapa/ement.el/issues/97).
     Thanks to Julien Roy (https://github.com/MrRoy) for reporting and
     testing.)
   • The ‘ement-taxy-room-list’ view no longer automatically refreshes
     the list if the region is active in the buffer.  (This allows the
     user to operate on multiple rooms without the contents of the
     buffer changing before completing the process.)

   *Fixes*
   • Links to only rooms (as opposed to links to events in rooms) may be
     activated to join them.
   • Read receipts mark the last completely visible event (rather than
     one that’s only partially displayed).
   • Prevent error when a room avatar image fails to load.


File: dochHjBey.info,  Node: 014 (1),  Next: 013 (1),  Prev: 02,  Up: Changelog

0.1.4
=====

*Fixed*
   • Info manual directory headers.


File: dochHjBey.info,  Node: 013 (1),  Next: 012 (1),  Prev: 014 (1),  Up: Changelog

0.1.3
=====

*Fixed*

   • Temporarily disable sending of read receipts due to an unusual bug
     that could cause Emacs to become unresponsive.  (The feature will
     be re-enabled in a future release.)


File: dochHjBey.info,  Node: 012 (1),  Next: 011 (1),  Prev: 013 (1),  Up: Changelog

0.1.2
=====

*Fixed*
   • Function ‘ement-room-sync’ correctly updates room-list buffers.
     (Thanks to Visuwesh (https://github.com/vizs).)
   • Only send D-Bus notifications when supported.  (Fixes #83
     (https://github.com/alphapapa/ement.el/issues/83).  Thanks to
     Tassilo Horn (https://github.com/tsdh).)


File: dochHjBey.info,  Node: 011 (1),  Next: 01,  Prev: 012 (1),  Up: Changelog

0.1.1
=====

*Fixed*
   • Function ‘ement-room-scroll-up-mark-read’ selects the correct room
     window.
   • Option ‘ement-room-list-avatars’ defaults to what function
     ‘display-images-p’ returns.


File: dochHjBey.info,  Node: 01,  Prev: 011 (1),  Up: Changelog

0.1
===

After almost two years of development, the first tagged release.
Submitted to GNU ELPA.


File: dochHjBey.info,  Node: Development,  Next: License,  Prev: Changelog,  Up: Top

4 Development
*************

Bug reports, feature requests, suggestions — _oh my_!

* Menu:

* Copyright Assignment::
* Matrix spec in Org format::
* Rationale::


File: dochHjBey.info,  Node: Copyright Assignment,  Next: Matrix spec in Org format,  Up: Development

Copyright Assignment
====================

Ement.el is published in GNU ELPA and is considered part of GNU Emacs.
Therefore, cumulative contributions of more than 15 lines of code
require that the author assign copyright of such contributions to the
FSF.  Authors who are interested in doing so may contact assign@gnu.org
<assign@gnu.org> to request the appropriate form.


File: dochHjBey.info,  Node: Matrix spec in Org format,  Next: Rationale,  Prev: Copyright Assignment,  Up: Development

Matrix spec in Org format
=========================

An Org-formatted version of the Matrix spec is available in the
meta/spec (https://github.com/alphapapa/ement.el/tree/meta/spec) branch.


File: dochHjBey.info,  Node: Rationale,  Prev: Matrix spec in Org format,  Up: Development

Rationale
=========

_This section is preserved for posterity.  As it says, Ement.el has long
since surpassed ‘matrix-client’, which should no longer be used._

   Why write a new Emacs Matrix client when there is already
matrix-client.el (https://github.com/alphapapa/matrix-client.el), by the
same author, no less?  A few reasons:

   • ‘matrix-client’ uses an older version of the Matrix spec, r0.3.0,
     with a few elements of r0.4.0 grafted in.  Bringing it up to date
     with the current version of the spec, r0.6.1, would be more work
     than to begin with the current version.  Ement.el targets r0.6.1
     from the beginning.
   • ‘matrix-client’ does not use Matrix’s lazy-loading feature (which
     was added to the specification later), so initial sync requests can
     take a long time for the server to process and can be large
     (sometimes tens of megabytes of JSON for the client to process!).
     Ement.el uses lazy-loading, which significantly improves
     performance.
   • ‘matrix-client’ automatically makes buffers for every room a user
     has joined, even if the user doesn’t currently want to watch a
     room.  Ement.el opens room buffers on-demand, improving performance
     by not having to insert events into buffers for rooms the user
     isn’t watching.
   • ‘matrix-client’ was developed without the intention of publishing
     it to, e.g.  MELPA or ELPA.  It has several dependencies, and its
     code does not always install or compile cleanly due to
     macro-expansion issues (apparently depending on the user’s Emacs
     config).  Ement.el is designed to have minimal dependencies outside
     of Emacs (currently only one, ‘plz’, which could be imported into
     the project), and every file is linted and compiles cleanly using
     makem.sh (https://github.com/alphapapa/makem.sh).
   • ‘matrix-client’ uses EIEIO, probably unnecessarily, since few, if
     any, of the benefits of EIEIO are realized in it.  Ement.el uses
     structs instead.
   • ‘matrix-client’ uses bespoke code for inserting messages into
     buffers, which works pretty well, but has a few minor bugs which
     are difficult to track down.  Ement.el uses Emacs’s built-in (and
     perhaps little-known) ‘ewoc’ library, which makes it much simpler
     and more reliable to insert and update messages in buffers, and
     enables the development of advanced UI features more easily.
   • ‘matrix-client’ was, to a certain extent, designed to imitate other
     messaging apps.  The result is, at least when used with the
     ‘matrix-client-frame’ command, fairly pleasing to use, but isn’t
     especially "Emacsy."  Ement.el is intended to better fit into
     Emacs’s paradigms.
   • ‘matrix-client’’s long name makes for long symbol names, which
     makes for tedious, verbose code.  ‘ement’ is easy to type and makes
     for concise, readable code.
   • The author has learned much since writing ‘matrix-client’ and hopes
     to write simpler, more readable, more maintainable code in
     Ement.el.  It’s hoped that this will enable others to contribute
     more easily.

   Note that, while ‘matrix-client’ remains usable, and probably will
for some time to come, Ement.el has now surpassed it in every way.  The
only reason to choose ‘matrix-client’ instead is if one is using an
older version of Emacs that isn’t supported by Ement.el.


File: dochHjBey.info,  Node: License,  Prev: Development,  Up: Top

5 License
*********

GPLv3



Tag Table:
Node: Top188
Node: Installation1602
Node: GNU ELPA1841
Node: GNU Guix2366
Node: Debian Ubuntu2613
Node: Nix2962
Node: Other distributions3284
Node: Git master3562
Node: Manual4619
Node: Usage4907
Node: Bindings7567
Node: Room buffers8031
Node: Room list buffer11033
Node: Directory buffers11429
Node: Mentions/notifications buffers11688
Node: Tips12074
Node: Displaying symbols and emojis15021
Node: Encrypted room support through Pantalaimon15636
Node: Changelog16192
Node: 01716758
Node: 01618826
Node: 015121602
Node: 01522173
Node: Compose buffer enhancements26336
Node: ement-room-self-insert-mode29722
Node: Image display30603
Node: 01431259
Node: 01332659
Node: 01234259
Node: 01137017
Node: 01039116
Node: 09342504
Node: 09242727
Node: 09142912
Node: 0943074
Node: 08344742
Node: 08245370
Node: 08145515
Node: 0845647
Node: 0747273
Node: 0648449
Node: 05249246
Node: 05149459
Node: 0549652
Node: 04150494
Node: 0450698
Node: 03152210
Node: 0352425
Node: 02153649
Node: 0253781
Node: 014 (1)55414
Node: 013 (1)55557
Node: 012 (1)55854
Node: 011 (1)56270
Node: 0156573
Node: Development56738
Node: Copyright Assignment56991
Node: Matrix spec in Org format57469
Node: Rationale57783
Node: License61367

End Tag Table


Local Variables:
coding: utf-8
End:
