emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Weird behaviour in current Emacs master


From: Eli Zaretskii
Subject: Re: Weird behaviour in current Emacs master
Date: Fri, 18 Apr 2014 22:10:33 +0300

> From: Lele Gaifax <address@hidden>
> Date: Fri, 18 Apr 2014 20:55:29 +0200
> 
>     commit 00cbdba426ab08964ee8eae14a890945df33b595
>     Author: Eli Zaretskii <address@hidden>
>     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.
> address@hidden  |                 -- Fortunato Depero, 1929.
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]