unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Weird behaviour in current Emacs master
@ 2014-04-18 18:55 Lele Gaifax
  2014-04-18 19:10 ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: Lele Gaifax @ 2014-04-18 18:55 UTC (permalink / raw)
  To: emacs-devel

Hi all,

today I spent a few hours investigating a very strange behaviour I got
with current Emacs trunk, that I will try to explain.

Some context: at work I have an Ubuntu desktop, where I use the
https://launchpad.net/~ubuntu-elisp/+archive/ppa Emacs package, rebuilt
every day from the master repository. This morning I did update the
system because I planned to upgrade it in the evening to the just
released 14.04 version, so I got latest Emacs and used it.

In the afternoon, editing a very simple HTML snippet, the strange thing
happened. I was able to replicate it with the following very simple code
in the buffer, where "^" is the "point":

  <table>
    ^
  </table>

When I insert "<tr>", the last char (that is, ">"), triggers the strange
thing: in my case it immediately jumps to the eye because I have
hl-line-mode active, so the remaining part of the buffer is highlighted,
that is, from the end of the second line to the end of the third line,
including the "</table>" text: effectively, a C-a brings the cursor on
the first column of the second line, a C-e brings it to the end of the
third line!

I first tried to recompile Emacs by myself, with the very same
results. Then I discovered that it must be something in the minor modes
that my configuration activates, because "emacs -Q" does not exhibit the
problem. Gosh... :-(

Back at home, I was pleased to find that my installation there was
working without problems and thankfully I compiled it just a five days
ago, so I restarted the investigation. I pulled and recompiled latest
version and effectively the problem appeared. While writing this post I
then tried to bisect the problem and eventually identified it with the
following changeset:

    commit 00cbdba426ab08964ee8eae14a890945df33b595
    Author: Eli Zaretskii <eliz@gnu.org>
    Date:   Mon Apr 14 18:32:27 2014 +0300

        Fix bidirectional redisplay when deletion creates a paragraph start.

         src/insdel.c (invalidate_buffer_caches): When deleting or replacing
         text, invalidate the bidi_paragraph_cache upto and including the
         preceding newline.

The buffer is in html-mode major mode, and this is the list of activated
minor modes:

    Enabled minor modes: Auto-Composition Auto-Compression
    Auto-Encryption Auto-Fill Auto-Insert Column-Number Electric-Indent
    Electric-Pair File-Name-Shadow Flyspell Font-Lock
    Global-Auto-Complete Global-Font-Lock Hl-Line Jabber-Activity
    Line-Number Mouse-Wheel Shell-Dirtrack Show-Paren Subword
    Transient-Mark Whitespace Whitespace-Cleanup Winner Yas Yas-Global

Apparently, neither html-mode nor hl-line-mode are involved, because the
problem happens also in fundamental-mode with the latter minor disabled.

Is there anything I can do to help you understand what's going wrong? I
could try "bisecting" the activation of all those minor modes... but
maybe you have some better hint on how to proceed.

Thank you in advance for any advice,
ciao, lele.
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele@metapensiero.it  |                 -- Fortunato Depero, 1929.




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Weird behaviour in current Emacs master
  2014-04-18 18:55 Weird behaviour in current Emacs master Lele Gaifax
@ 2014-04-18 19:10 ` Eli Zaretskii
  2014-04-18 21:10   ` Lele Gaifax
  0 siblings, 1 reply; 3+ messages in thread
From: Eli Zaretskii @ 2014-04-18 19:10 UTC (permalink / raw)
  To: Lele Gaifax; +Cc: emacs-devel

> From: Lele Gaifax <lele@metapensiero.it>
> Date: Fri, 18 Apr 2014 20:55:29 +0200
> 
>     commit 00cbdba426ab08964ee8eae14a890945df33b595
>     Author: Eli Zaretskii <eliz@gnu.org>
>     Date:   Mon Apr 14 18:32:27 2014 +0300
> 
>         Fix bidirectional redisplay when deletion creates a paragraph start.
> 
>          src/insdel.c (invalidate_buffer_caches): When deleting or replacing
>          text, invalidate the bidi_paragraph_cache upto and including the
>          preceding newline.

That commit was fixed by a later one, see the patch at the end of this
message.  But that fix was not yet merged to the trunk.  So either
apply the patch below by hand, or switch to the emacs-24 branch, or
wait for the fix to be merged to the trunk.

=== modified file 'src/insdel.c'
--- src/insdel.c	2014-04-14 15:32:27 +0000
+++ src/insdel.c	2014-04-17 07:24:40 +0000
@@ -1857,14 +1857,9 @@ invalidate_buffer_caches (struct buffer 
      need to consider the caches of their base buffer.  */
   if (buf->base_buffer)
     buf = buf->base_buffer;
-  if (buf->newline_cache)
-    invalidate_region_cache (buf,
-                             buf->newline_cache,
-                             start - BUF_BEG (buf), BUF_Z (buf) - end);
-  if (buf->width_run_cache)
-    invalidate_region_cache (buf,
-                             buf->width_run_cache,
-                             start - BUF_BEG (buf), BUF_Z (buf) - end);
+  /* The bidi_paragraph_cache must be invalidated first, because doing
+     so might need to use the newline_cache (via find_newline_no_quit,
+     see below).  */
   if (buf->bidi_paragraph_cache)
     {
       if (start != end
@@ -1888,13 +1883,20 @@ invalidate_buffer_caches (struct buffer 
 					       &start_byte);
 	      set_buffer_internal (old);
 	    }
-	  if (line_beg > BUF_BEG (buf))
-	    start = line_beg - 1;
+	  start = line_beg - (line_beg > BUF_BEG (buf));
 	}
       invalidate_region_cache (buf,
 			       buf->bidi_paragraph_cache,
 			       start - BUF_BEG (buf), BUF_Z (buf) - end);
     }
+  if (buf->newline_cache)
+    invalidate_region_cache (buf,
+                             buf->newline_cache,
+                             start - BUF_BEG (buf), BUF_Z (buf) - end);
+  if (buf->width_run_cache)
+    invalidate_region_cache (buf,
+                             buf->width_run_cache,
+                             start - BUF_BEG (buf), BUF_Z (buf) - end);
 }
 
 /* These macros work with an argument named `preserve_ptr'



> 
> The buffer is in html-mode major mode, and this is the list of activated
> minor modes:
> 
>     Enabled minor modes: Auto-Composition Auto-Compression
>     Auto-Encryption Auto-Fill Auto-Insert Column-Number Electric-Indent
>     Electric-Pair File-Name-Shadow Flyspell Font-Lock
>     Global-Auto-Complete Global-Font-Lock Hl-Line Jabber-Activity
>     Line-Number Mouse-Wheel Shell-Dirtrack Show-Paren Subword
>     Transient-Mark Whitespace Whitespace-Cleanup Winner Yas Yas-Global
> 
> Apparently, neither html-mode nor hl-line-mode are involved, because the
> problem happens also in fundamental-mode with the latter minor disabled.
> 
> Is there anything I can do to help you understand what's going wrong? I
> could try "bisecting" the activation of all those minor modes... but
> maybe you have some better hint on how to proceed.
> 
> Thank you in advance for any advice,
> ciao, lele.
> -- 
> nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
> real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
> lele@metapensiero.it  |                 -- Fortunato Depero, 1929.
> 
> 
> 




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Weird behaviour in current Emacs master
  2014-04-18 19:10 ` Eli Zaretskii
@ 2014-04-18 21:10   ` Lele Gaifax
  0 siblings, 0 replies; 3+ messages in thread
From: Lele Gaifax @ 2014-04-18 21:10 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> That commit was fixed by a later one, see the patch at the end of this
> message.  But that fix was not yet merged to the trunk.  So either
> apply the patch below by hand, or switch to the emacs-24 branch, or
> wait for the fix to be merged to the trunk.

Thank you Eli, lesson learned :) I wrongly assumed the Ubuntu
emacs-snapshot was tracking the pre-test branch...

ciao, lele.
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele@metapensiero.it  |                 -- Fortunato Depero, 1929.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-04-18 21:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-18 18:55 Weird behaviour in current Emacs master Lele Gaifax
2014-04-18 19:10 ` Eli Zaretskii
2014-04-18 21:10   ` Lele Gaifax

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).