Mercurial > emacs
comparison src/data.c @ 95407:8a703a3c84d7
(Fmake_variable_buffer_local, Fmake_local_variable)
(Fmake_variable_frame_local): Disallow mixing buffer-local and
frame-local settings for the same variable.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Fri, 30 May 2008 02:37:40 +0000 |
| parents | 0835cb21d60e |
| children | 4f530a89d1ee |
comparison
equal
deleted
inserted
replaced
| 95406:ab071b8b8bf4 | 95407:8a703a3c84d7 |
|---|---|
| 1491 error ("Symbol %s may not be buffer-local", SDATA (sym->xname)); | 1491 error ("Symbol %s may not be buffer-local", SDATA (sym->xname)); |
| 1492 | 1492 |
| 1493 if (BUFFER_OBJFWDP (valcontents)) | 1493 if (BUFFER_OBJFWDP (valcontents)) |
| 1494 return variable; | 1494 return variable; |
| 1495 else if (BUFFER_LOCAL_VALUEP (valcontents)) | 1495 else if (BUFFER_LOCAL_VALUEP (valcontents)) |
| 1496 newval = valcontents; | 1496 { |
| 1497 if (XBUFFER_LOCAL_VALUE (valcontents)->check_frame) | |
| 1498 error ("Symbol %s may not be buffer-local", SDATA (sym->xname)); | |
| 1499 newval = valcontents; | |
| 1500 } | |
| 1497 else | 1501 else |
| 1498 { | 1502 { |
| 1499 if (EQ (valcontents, Qunbound)) | 1503 if (EQ (valcontents, Qunbound)) |
| 1500 sym->value = Qnil; | 1504 sym->value = Qnil; |
| 1501 tem = Fcons (Qnil, Fsymbol_value (variable)); | 1505 tem = Fcons (Qnil, Fsymbol_value (variable)); |
| 1543 | 1547 |
| 1544 CHECK_SYMBOL (variable); | 1548 CHECK_SYMBOL (variable); |
| 1545 sym = indirect_variable (XSYMBOL (variable)); | 1549 sym = indirect_variable (XSYMBOL (variable)); |
| 1546 | 1550 |
| 1547 valcontents = sym->value; | 1551 valcontents = sym->value; |
| 1548 if (sym->constant || KBOARD_OBJFWDP (valcontents)) | 1552 if (sym->constant || KBOARD_OBJFWDP (valcontents) |
| 1553 || (BUFFER_LOCAL_VALUEP (valcontents) | |
| 1554 && (XBUFFER_LOCAL_VALUE (valcontents)->check_frame))) | |
| 1549 error ("Symbol %s may not be buffer-local", SDATA (sym->xname)); | 1555 error ("Symbol %s may not be buffer-local", SDATA (sym->xname)); |
| 1550 | 1556 |
| 1551 if ((BUFFER_LOCAL_VALUEP (valcontents) | 1557 if ((BUFFER_LOCAL_VALUEP (valcontents) |
| 1552 && XBUFFER_LOCAL_VALUE (valcontents)->local_if_set) | 1558 && XBUFFER_LOCAL_VALUE (valcontents)->local_if_set) |
| 1553 || BUFFER_OBJFWDP (valcontents)) | 1559 || BUFFER_OBJFWDP (valcontents)) |
| 1707 || BUFFER_OBJFWDP (valcontents)) | 1713 || BUFFER_OBJFWDP (valcontents)) |
| 1708 error ("Symbol %s may not be frame-local", SDATA (sym->xname)); | 1714 error ("Symbol %s may not be frame-local", SDATA (sym->xname)); |
| 1709 | 1715 |
| 1710 if (BUFFER_LOCAL_VALUEP (valcontents)) | 1716 if (BUFFER_LOCAL_VALUEP (valcontents)) |
| 1711 { | 1717 { |
| 1712 XBUFFER_LOCAL_VALUE (valcontents)->check_frame = 1; | 1718 if (!XBUFFER_LOCAL_VALUE (valcontents)->check_frame) |
| 1719 error ("Symbol %s may not be frame-local", SDATA (sym->xname)); | |
| 1713 return variable; | 1720 return variable; |
| 1714 } | 1721 } |
| 1715 | 1722 |
| 1716 if (EQ (valcontents, Qunbound)) | 1723 if (EQ (valcontents, Qunbound)) |
| 1717 sym->value = Qnil; | 1724 sym->value = Qnil; |
