emacs-devel
[Top][All Lists]
Advanced

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

Re: frame-local variables weirdness


From: Richard Stallman
Subject: Re: frame-local variables weirdness
Date: Mon, 11 Dec 2006 09:59:29 -0500

I think this should fix your problem.  Does it work in general?

*** data.c      12 Nov 2006 00:16:50 -0500      1.268
--- data.c      10 Dec 2006 23:05:35 -0500      
***************
*** 1207,1215 ****
          || buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer)
          || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame
              && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame))
          || (BUFFER_LOCAL_VALUEP (valcontents)
!             && EQ (XCAR (current_alist_element),
!                    current_alist_element)))
        {
          /* The currently loaded binding is not necessarily valid.
             We need to unload it, and choose a new binding.  */
--- 1207,1216 ----
          || buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer)
          || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame
              && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame))
+         /* After make-variable-buffer-local, if we haven't got a
+            buffer-local binding in place, we need to make one.  */
          || (BUFFER_LOCAL_VALUEP (valcontents)
!             && ! XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer))
        {
          /* The currently loaded binding is not necessarily valid.
             We need to unload it, and choose a new binding.  */
***************
*** 1264,1270 ****
          XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr,
                   tem1);
  
!         /* Set `buffer' and `frame' slots for thebinding now loaded.  */
          XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, buf);
          XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame;
        }
--- 1265,1271 ----
          XSETCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr,
                   tem1);
  
!         /* Set `buffer' and `frame' slots for the binding now loaded.  */
          XSETBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer, buf);
          XBUFFER_LOCAL_VALUE (valcontents)->frame = selected_frame;
        }




reply via email to

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