Subject: bug#21368: 25.0.50; Core navigation commands fail in a multi-line intangible text with fringe

From: Vitalie Spinu <[email-masked]>
Date: Sat, 29 Aug 2015 00:02:22 +0200

>> On Fri, Aug 28 2015 22:45, Eli Zaretskii wrote:

> The first two do work, you just need to invoke backward-char twice to
> see the cursor move.  

This is not happening with `M-x (backward-char 1)`. It does indeed work when
backward-char is invoked interactively with C-b.

This is a relatively recent change in behavior (past 2-3 months or so).

> Is there some important real-life use case that needs this to work?
> Otherwise, I'm inclined to leave this alone.  After all, it's not a
> catastrophe: the next call to previous-line will go to the line you
> want.

I have encountered this issue in 3 different projects. One is the implementation
of visual breakpoints in ESS which look like this:

   https://ess-tracebug.googlecode.com/svn/trunk/img/breakpoint_types.PNG

For years I used to have a defadvice workaround along the following lines:

     ...
     (when (and (eq major-mode 'ess-mode)
                (get-text-property (point) 'intangible))
      (backward-char 1))
     add-do-it 
     ...

With the new emacs dev the backward-char stopped working. That's why I am
finally reporting this bug.

Another real life use case is the yet unfinished image-display package where I
attempted to build a grid of images with intangible segments and simply rely on
emacs motion commands for navigation between cells. This didn't work properly
because the vertical motion was jumping columns.

Another example is a spredsheet application for data manipulation where I have
read-only cells which I want to navigate with standard emacs motion
commands. Same design as above and the same problem.

   Vitalie