[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/buffer.c
From: |
Richard M . Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/src/buffer.c |
Date: |
Thu, 17 Mar 2005 18:37:39 -0500 |
Index: emacs/src/buffer.c
diff -c emacs/src/buffer.c:1.475 emacs/src/buffer.c:1.476
*** emacs/src/buffer.c:1.475 Fri Feb 25 15:21:30 2005
--- emacs/src/buffer.c Thu Mar 17 23:37:39 2005
***************
*** 182,187 ****
--- 182,188 ----
static void free_buffer_text P_ ((struct buffer *b));
static struct Lisp_Overlay * copy_overlays P_ ((struct buffer *, struct
Lisp_Overlay *));
static void modify_overlay P_ ((struct buffer *, EMACS_INT, EMACS_INT));
+ static Lisp_Object buffer_lisp_local_variables P_ ((struct buffer *));
/* For debugging; temporary. See set_buffer_internal. */
***************
*** 515,530 ****
to->overlays_before = copy_overlays (to, from->overlays_before);
to->overlays_after = copy_overlays (to, from->overlays_after);
! /* Copy the alist of local variables,
! and all the alist elements too. */
! to->local_var_alist
! = Fcopy_sequence (from->local_var_alist);
! for (tem = to->local_var_alist; CONSP (tem);
! tem = XCDR (tem))
! XSETCAR (tem, Fcons (XCAR (XCAR (tem)), XCDR (XCAR (tem))));
}
-
DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer,
2, 3,
"bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
--- 516,526 ----
to->overlays_before = copy_overlays (to, from->overlays_before);
to->overlays_after = copy_overlays (to, from->overlays_after);
! /* Get (a copy of) the alist of Lisp-level local variables of FROM
! and install that in TO. */
! to->local_var_alist = buffer_lisp_local_variables (from);
}
DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer,
2, 3,
"bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
***************
*** 934,939 ****
--- 930,972 ----
return result;
}
+ /* Return an alist of the Lisp-level buffer-local bindings of
+ buffer BUF. That is, do't include the variables maintained
+ in special slots in the buffer object. */
+
+ static Lisp_Object
+ buffer_lisp_local_variables (buf)
+ struct buffer *buf;
+ {
+ Lisp_Object result = Qnil;
+ register Lisp_Object tail;
+ for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail))
+ {
+ Lisp_Object val, elt;
+
+ elt = XCAR (tail);
+
+ /* Reference each variable in the alist in buf.
+ If inquiring about the current buffer, this gets the current values,
+ so store them into the alist so the alist is up to date.
+ If inquiring about some other buffer, this swaps out any values
+ for that buffer, making the alist up to date automatically. */
+ val = find_symbol_value (XCAR (elt));
+ /* Use the current buffer value only if buf is the current buffer. */
+ if (buf != current_buffer)
+ val = XCDR (elt);
+
+ /* If symbol is unbound, put just the symbol in the list. */
+ if (EQ (val, Qunbound))
+ result = Fcons (XCAR (elt), result);
+ /* Otherwise, put (symbol . value) in the list. */
+ else
+ result = Fcons (Fcons (XCAR (elt), val), result);
+ }
+
+ return result;
+ }
+
DEFUN ("buffer-local-variables", Fbuffer_local_variables,
Sbuffer_local_variables, 0, 1, 0,
doc: /* Return an alist of variables that are buffer-local in BUFFER.
***************
*** 955,988 ****
buf = XBUFFER (buffer);
}
! result = Qnil;
!
! {
! register Lisp_Object tail;
! for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail))
! {
! Lisp_Object val, elt;
!
! elt = XCAR (tail);
!
! /* Reference each variable in the alist in buf.
! If inquiring about the current buffer, this gets the current values,
! so store them into the alist so the alist is up to date.
! If inquiring about some other buffer, this swaps out any values
! for that buffer, making the alist up to date automatically. */
! val = find_symbol_value (XCAR (elt));
! /* Use the current buffer value only if buf is the current buffer. */
! if (buf != current_buffer)
! val = XCDR (elt);
!
! /* If symbol is unbound, put just the symbol in the list. */
! if (EQ (val, Qunbound))
! result = Fcons (XCAR (elt), result);
! /* Otherwise, put (symbol . value) in the list. */
! else
! result = Fcons (Fcons (XCAR (elt), val), result);
! }
! }
/* Add on all the variables stored in special slots. */
{
--- 988,994 ----
buf = XBUFFER (buffer);
}
! result = buffer_lisp_local_variables (buf);
/* Add on all the variables stored in special slots. */
{
***************
*** 1004,1010 ****
return result;
}
-
DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p,
0, 1, 0,
--- 1010,1015 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/buffer.c,
Richard M . Stallman <=