Mercurial > emacs
view etc/images/index.xpm @ 107984:bef5d1738c0b
Make variable forwarding explicit rather the using special values.
Basically, this makes the structure of buffer-local values and object
forwarding explicit in the type of Lisp_Symbols rather than use
special Lisp_Objects for that. This tends to lead to slightly more
verbose code, but is more C-like, simpler, and makes it easier to make
sure we handled all cases, among other things by letting the compiler
help us check it.
* lisp.h (enum Lisp_Misc_Type, union Lisp_Misc):
Removing forwarding objects.
(enum Lisp_Fwd_Type, enum symbol_redirect, union Lisp_Fwd): New types.
(struct Lisp_Symbol): Make the various forms of variable-forwarding
explicit rather than hiding them inside Lisp_Object "values".
(XFWDTYPE): New macro.
(XINTFWD, XBOOLFWD, XOBJFWD, XKBOARD_OBJFWD): Redefine.
(XBUFFER_LOCAL_VALUE): Remove.
(SYMBOL_VAL, SYMBOL_ALIAS, SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL)
(SET_SYMBOL_ALIAS, SET_SYMBOL_BLV, SET_SYMBOL_FWD): New macros.
(SYMBOL_VALUE, SET_SYMBOL_VALUE): Remove.
(struct Lisp_Intfwd, struct Lisp_Boolfwd, struct Lisp_Objfwd)
(struct Lisp_Buffer_Objfwd, struct Lisp_Kboard_Objfwd):
Remove the Lisp_Misc_* header.
(struct Lisp_Buffer_Local_Value): Redefine.
(BLV_FOUND, SET_BLV_FOUND, BLV_VALUE, SET_BLV_VALUE): New macros.
(struct Lisp_Misc_Any): Add filler to get the right size.
(struct Lisp_Free): Use struct Lisp_Misc_Any rather than struct
Lisp_Intfwd.
(DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT)
(DEFVAR_KBOARD): Allocate a forwarding object.
* data.c (do_blv_forwarding, store_blv_forwarding): New macros.
(let_shadows_global_binding_p): New function.
(union Lisp_Val_Fwd): New type.
(make_blv): New function.
(swap_in_symval_forwarding, indirect_variable, do_symval_forwarding)
(store_symval_forwarding, swap_in_global_binding, Fboundp)
(swap_in_symval_forwarding, find_symbol_value, Fset)
(let_shadows_buffer_binding_p, set_internal, default_value)
(Fset_default, Fmake_variable_buffer_local, Fmake_local_variable)
(Fkill_local_variable, Fmake_variable_frame_local)
(Flocal_variable_p, Flocal_variable_if_set_p)
(Fvariable_binding_locus):
* xdisp.c (select_frame_for_redisplay):
* lread.c (Fintern, Funintern, init_obarray, defvar_int)
(defvar_bool, defvar_lisp_nopro, defvar_lisp, defvar_kboard):
* frame.c (store_frame_param):
* eval.c (Fdefvaralias, Fuser_variable_p, specbind, unbind_to):
* bytecode.c (Fbyte_code) <varref, varset>: Adapt to the new symbol
value structure.
* buffer.c (PER_BUFFER_SYMBOL): Move from buffer.h.
(clone_per_buffer_values): Only adjust markers into the current buffer.
(reset_buffer_local_variables): PER_BUFFER_IDX is never -2.
(Fbuffer_local_value, set_buffer_internal_1)
(swap_out_buffer_local_variables):
Adapt to the new symbol value structure.
(DEFVAR_PER_BUFFER): Allocate a Lisp_Buffer_Objfwd object.
(defvar_per_buffer): Take a new arg for the fwd object.
(buffer_lisp_local_variables): Return a proper alist (different fix
for bug#4138).
* alloc.c (Fmake_symbol): Use SET_SYMBOL_VAL.
(Fgarbage_collect): Don't handle buffer_defaults specially.
(mark_object): Handle new symbol value structure rather than the old
special Lisp_Misc_* objects.
(gc_sweep) <symbols>: Free also the buffer-local-value objects.
* term.c (set_tty_color_mode):
* bidi.c (bidi_initialize): Don't access the ->value field directly.
* buffer.h (PER_BUFFER_VAR_OFFSET): Don't bother with
a buffer_local_flags.
* print.c (print_object): Get rid of impossible forwarding objects.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 19 Apr 2010 21:50:52 -0400 |
parents | 28718fa5d988 |
children |
line wrap: on
line source
/* XPM */ static char * index_xpm[] = { "24 24 174 2", " c None", ". c #000000", "+ c #FDFDFD", "@ c #F5F5F5", "# c #F6F6F6", "$ c #D0D0D0", "% c #C1C1C1", "& c #C3C3C3", "* c #C6C6C6", "= c #C8C8C8", "- c #8D8D8D", "; c #CACACA", "> c #919191", ", c #EFEFEF", "' c #878787", ") c #8A8A8A", "! c #5C5C5C", "~ c #F8F8F8", "{ c #EAEAEA", "] c #CCCCCC", "^ c #CECECE", "/ c #979797", "( c #CDCDCD", "_ c #A1A1A1", ": c #090600", "< c #A3A3A3", "[ c #C5C5C5", "} c #C4C4C4", "| c #D1D1D1", "1 c #D2D2D1", "2 c #D2D2D2", "3 c #9A9A9A", "4 c #E8E8E8", "5 c #949494", "6 c #939393", "7 c #574F4F", "8 c #FDFDFC", "9 c #777777", "0 c #7E7E7E", "a c #9D9D9D", "b c #6B6B6B", "c c #F1F1F1", "d c #ECECEC", "e c #CFCFCF", "f c #575050", "g c #FDFAF8", "h c #A5A5A5", "i c #B9B9B9", "j c #EEEEEE", "k c #EDEDED", "l c #D5D5D5", "m c #BABABA", "n c #6D6767", "o c #F9F1EA", "p c #9E9E9E", "q c #B5B5B5", "r c #D9D9D9", "s c #D7D7D7", "t c #BCBCBC", "u c #625C5B", "v c #F9EEE4", "w c #4F4D4A", "x c #646464", "y c #747474", "z c #D6D6D5", "A c #DFDFDF", "B c #A0A0A0", "C c #615C5B", "D c #F9F0E4", "E c #746C67", "F c #FEFDFC", "G c #FFFEFD", "H c #131210", "I c #636363", "J c #7C7C7C", "K c #F3F2F2", "L c #98948F", "M c #F9EFE3", "N c #A09489", "O c #FEFDFD", "P c #766D68", "Q c #736961", "R c #A3A3A2", "S c #A6A6A6", "T c #DBDBDB", "U c #C7C7C7", "V c #E8E5E2", "W c #97938E", "X c #F6E9D8", "Y c #84817A", "Z c #FBF3EA", "` c #908C86", " . c #F1EDE7", ".. c #7B7975", "+. c #878786", "@. c #070000", "#. c #FAFAFA", "$. c #DDDDDD", "%. c #E2DFDC", "&. c #A8A199", "*. c #F0E0CE", "=. c #C8BFB4", "-. c #D5CCBF", ";. c #DFD7CD", ">. c #DAD3C9", ",. c #DDCFC4", "'. c #928C84", "). c #A8A8A8", "!. c #959595", "~. c #040000", "{. c #D9D5D2", "]. c #D9CABB", "^. c #D7C8B8", "/. c #DECFBF", "(. c #D8C9B9", "_. c #E3D3C2", ":. c #C9BBAC", "<. c #D9CEC2", "[. c #7F766D", "}. c #909090", "|. c #D3D3D3", "1. c #060100", "2. c #C0BDBA", "3. c #8C8782", "4. c #C2B5A7", "5. c #BFB4A6", "6. c #B8AB9D", "7. c #BAAD9E", "8. c #BEB0A2", "9. c #948A7F", "0. c #716860", "a. c #E2E2E2", "b. c #A9A9A8", "c. c #332C2B", "d. c #5D5954", "e. c #79736C", "f. c #958C80", "g. c #8D8379", "h. c #988D82", "i. c #706760", "j. c #787878", "k. c #E4E4E4", "l. c #C2C2C2", "m. c #201A1A", "n. c #57514F", "o. c #625C59", "p. c #625A53", "q. c #6B625A", "r. c #585251", "s. c #696764", "t. c #080000", "u. c #989898", "v. c #B0B0B0", "w. c #AFAFAF", "x. c #999999", "y. c #9D9897", "z. c #050000", "A. c #0C0303", "B. c #080100", "C. c #030000", "D. c #282523", "E. c #5A5A5A", "F. c #868686", "G. c #ECE4E2", "H. c #DED7D5", "I. c #D8D1D0", "J. c #E0DBD7", "K. c #E9E6E3", "L. c #FCFBFA", "M. c #030500", "N. c #0B0505", "O. c #14100F", "P. c #090806", "Q. c #000100", " ", " . . . . . . . . . . . . . . . . . . . . ", " . + @ @ @ @ @ @ @ # # # # # # # # # $ . ", " . @ % % % & & & & * * * * * = = = = - . ", " . # & & & * * * * = = = = = ; ; ; ; > . ", " . , ' ' ' ) ) ) ) - - - - - > > > > ! . ", " . ~ { { { { { { { { { { { { { { { { ; . ", " . # ; ; ; ] ] ] ] ] ^ ^ ^ ^ $ $ $ $ / . ", " . # ] ] ] ( ^ ^ ^ _ : < [ } | 1 | 2 3 . ", " . 4 5 5 5 / / / 6 7 8 . 9 0 - a a a b . ", " . ~ c d d d d d e f g . h i $ j j k * . ", " . ~ 2 2 2 2 l l m n o . > p q r r r < . ", " . ~ l l l l s s t u v w . x . y p z < . ", " . A B B B B < 9 . C D E F . G H . I J . ", " . ~ @ , , , j . K L M N O P F Q R . S . ", " . ~ T T T T U . V W X Y Z ` ...+.@.< . ", " . #.$.$.$.$.& . %.&.*.=.-.;.>.,.'.@.p . ", " . { ).).).).!.~.{.].^./.(._.:.<.[.@.}.. ", " . #.@ c c c |.1.2.3.4.5.6.7.8.9.0.@.] . ", " . #.a.a.a.a.l b.c.d.e.f.g.9.h.i.. j.q . ", " . #.a.a.a.a.k.l.j.m.n.o.p.q.r.s.t.u.q . ", " . a.v.v.v.v.v.w.x.y.z.A.t.B.C.D.E.F.m . ", " . . . . . . . . . ~.G.H.I.J.K.L.M.. . . ", " ~.N.z.O.C.P.. Q. "};