Skip to Content.
Sympa Menu

emacspeak - Re: [Emacspeak] speech pausing at end of line

Subject: Emacspeak discussion list

List archive

Re: [Emacspeak] speech pausing at end of line


Chronological Thread 
  • From: Tim Cross <theophilusx AT gmail.com>
  • To: "Andrew Leland" (via emacspeak Mailing List) <emacspeak AT emacspeak.net>
  • Cc: Andrew Leland <aleland.tech.list AT fastmail.com>
  • Subject: Re: [Emacspeak] speech pausing at end of line
  • Date: Mon, 28 Jul 2025 08:21:02 +1000


As is common when working with emacs and emacspeak, the simple question
doesn't have a simple answer. However, a bit of background might help
narrow down possible solutions.

How line wraping is handled in emacs and emacspeak has gone through a
few changes over the years and new options have been introduced which
are great, but increase the complexity. One important thing to keep in
mind is that emacs tends to consider various settings as bbeen either
local to a specific buffer or type of buffer (i.e. mode) or global,
affedting all buffers regardless of mode. It is not uncommon to find
some setting you really like to then find there are numerous modes where
yo don't want it and you then need to expand your configuration using
hooks and other mechanisms to enable the behaviour only in the modes you
want.

Originally, emacs only had two approaches for line wrapping. Either you
broke the line at a word boundry and did a 'hard' wrap i.e. added a
newline, or you used line truncation where the part of the line which
would not appear on screen was truncated and you had to scroll the
buffer across to see the truncated bit. In the former case, when the
buffer was visiting a file, doing a save file would save the hard line
wrapping, changing the format of the file. The truncate lines had no
impact on underlying file format.

When these were the only options, things were easy for emacspeak as it
mainly deals with lines. Even when you aqsked it to speak a paragraph,
it just speaks multiple lines.

Then emacs introduced visual line mode. This changed things quite a
bit. Unlike word wrap mode, visual line mode does not alter the
underlying file. It only operates on the display of teh file. The
newlines whidch are added to make a long line 'wrap' over multiple lines
are soft newlines in that they are not added to the actaul file
contents, they are only used by the display engine to render the line.

This new visual line mode wsas init8ially a problem for emacspeak
bbecause it tends to operate on the actaul buffer content, not on how it
is rendered. When it was first introduced, visual line mode would result
in lines getting spoken multiple times by emacspeak because when you
moved dowsn a visual line, you were actaully moving along the same
line. Emacspeak didn't understand this and would just speak the whole
line again.

Initially, the emacspeak recommendation was just not to use visual line
mode. After all, visual only line wrapping was of little benefit to
blind and many vision impaired users. Later, Raman added support for
visual line mode and a toggle to enable or disable this support.

Although I don't know for certain, I also suspect some modes, especially
modes dealing with rendering of HTML, may have their own specific
approach to rendering content. This is possibly going to be a little
more challenging from an emacspeak perspective due to HTML essentially
being designed to ignore hard line wraps in the file and only use
display based wrapping in the rendering.

So my advice would be to look at the buffers which are not speaking
lines in the wsay you would prefer and try to determine which line wrap
mode is in effect i.e. word wrap, truncate and visual line. I would also
look at the setting for EWW and shr (the underling elisp package that
processes the HTML) and experiment with the available options to find
the combination which works for you. If it turns out this is something
specific to just EWW, once you have worked out what the settings are,
assuming you only want them in EWW buffers, then look at how you can
enable those settings within different hooks available with EWW.

However, before doing any of that, there is a much more important step
to take. I suspect the real source of the probglems you are running into
with EWW is that your not yet using the emacspeak built in facilities to
make it easier to navigate and read web content. This is actually a very
sophisticated aspect of emacspeak and if you are reading web pages just
using normal line movement or perhaps paragraph movement options, you
missing out on some real powser. Emacspeak comes with a whole additional
set of key bindings to assist in navigating web content. For example,
you can navigate by HTML element, such as headings or browse content in
tables or get a summary of links etc. It also comes with a lot of
support for filtering and adjusting the wsay content is rendered, via
xslt transformation filters, which can change the layout of a page which
wsas originally optimised for visual rendering to one which is optimised
for audible rendering. There is wsay too much to unpack in an email, but
check the emacspeak documentation, look at the comments in the
emacspeak-eww.el file and experiment. I suspect that what you will find
is that there are alternative wsays of navigating web content whnich
will be far more efficient and effective than just linera line/paragraph
movement.

"Andrew Leland" (via emacspeak Mailing List) <emacspeak AT emacspeak.net> writes:

> Dear Emacspeak list,
> I've been getting deeper into Emacsspeak 60.0, Emacs 29.4 on MacOS 15.5
> with SwiftMac. Truly delightful.
>
> One quirk that I've been struggling to solve:
>
> When I'm reading in certain context -- for instance, in notmuch-show Voice
> Wrap when
> reading messages in notmuch, emacspeak reads fluidly, ignoring the visual
> line wrap and
> treating each paragraph as a single spoken line. This is the preferred
> behavior.
>
> But in many other contexts -- reading webpages in the eww browser, for
> instance, or RSS
> posts in elfeed, emacspeak will pause at the end of each visual line. This
> behavior
> doesn't change if I toggle auto-fill-mode on or off in the buffer. Same with
> visual-line-mode...
>
> Any ideas on how to solve this reading problem?
>
> Thanks for your help. Like Arkadiusz, I've become a very rapid and
> enthusiastic convert to
> Emacs and Emacspeak, delighted to be a part of this user group.
>
> warmly,
> Andrew
> andrewleland.org
>
> Emacspeak discussion list -- emacspeak AT emacspeak.net
> To unsubscribe send email to:
> emacspeak-request AT emacspeak.net with a subject of: unsubscribe



Archive powered by MHonArc 2.6.19+.

Top of Page