Mercurial > emacs
comparison src/buffer.c @ 9362:f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
(reset_buffer_local_variables, Fbuffer_local_variables): Access
buffer_local_flags as Lisp_Object, not int.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Thu, 06 Oct 1994 22:30:47 +0000 |
parents | 8cf58b38d244 |
children | 9f797989b817 |
comparison
equal
deleted
inserted
replaced
9361:c11cc966dc6a | 9362:f6dc29e7e986 |
---|---|
356 copy that into the slot. */ | 356 copy that into the slot. */ |
357 | 357 |
358 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags; | 358 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags; |
359 offset < sizeof (struct buffer); | 359 offset < sizeof (struct buffer); |
360 offset += sizeof (Lisp_Object)) /* sizeof EMACS_INT == sizeof Lisp_Object */ | 360 offset += sizeof (Lisp_Object)) /* sizeof EMACS_INT == sizeof Lisp_Object */ |
361 if (*(EMACS_INT *)(offset + (char *) &buffer_local_flags) > 0 | 361 { |
362 || *(EMACS_INT *)(offset + (char *) &buffer_local_flags) == -2) | 362 int flag = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags)); |
363 *(Lisp_Object *)(offset + (char *)b) = | 363 if (flag > 0 || flag == -2) |
364 *(Lisp_Object *)(offset + (char *)&buffer_defaults); | 364 *(Lisp_Object *)(offset + (char *)b) = |
365 *(Lisp_Object *)(offset + (char *)&buffer_defaults); | |
366 } | |
365 } | 367 } |
366 | 368 |
367 /* We split this away from generate-new-buffer, because rename-buffer | 369 /* We split this away from generate-new-buffer, because rename-buffer |
368 and set-visited-file-name ought to be able to use this to really | 370 and set-visited-file-name ought to be able to use this to really |
369 rename the buffer properly. */ | 371 rename the buffer properly. */ |
485 | 487 |
486 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols; | 488 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols; |
487 offset < sizeof (struct buffer); | 489 offset < sizeof (struct buffer); |
488 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */ | 490 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */ |
489 { | 491 { |
490 mask = *(EMACS_INT *)(offset + (char *) &buffer_local_flags); | 492 mask = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags)); |
491 if (mask == -1 || (buf->local_var_flags & mask)) | 493 if (mask == -1 || (buf->local_var_flags & mask)) |
492 if (SYMBOLP (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols))) | 494 if (SYMBOLP (*(Lisp_Object *)(offset |
493 result = Fcons (Fcons (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols), | 495 + (char *)&buffer_local_symbols))) |
496 result = Fcons (Fcons (*((Lisp_Object *) | |
497 (offset + (char *)&buffer_local_symbols)), | |
494 *(Lisp_Object *)(offset + (char *)buf)), | 498 *(Lisp_Object *)(offset + (char *)buf)), |
495 result); | 499 result); |
496 } | 500 } |
497 } | 501 } |
498 | 502 |
2484 /* Nothing can work if this isn't true */ | 2488 /* Nothing can work if this isn't true */ |
2485 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); | 2489 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); |
2486 | 2490 |
2487 /* 0 means not a lisp var, -1 means always local, else mask */ | 2491 /* 0 means not a lisp var, -1 means always local, else mask */ |
2488 bzero (&buffer_local_flags, sizeof buffer_local_flags); | 2492 bzero (&buffer_local_flags, sizeof buffer_local_flags); |
2489 XSETFASTINT (buffer_local_flags.filename, -1); | 2493 XSETINT (buffer_local_flags.filename, -1); |
2490 XSETFASTINT (buffer_local_flags.directory, -1); | 2494 XSETINT (buffer_local_flags.directory, -1); |
2491 XSETFASTINT (buffer_local_flags.backed_up, -1); | 2495 XSETINT (buffer_local_flags.backed_up, -1); |
2492 XSETFASTINT (buffer_local_flags.save_length, -1); | 2496 XSETINT (buffer_local_flags.save_length, -1); |
2493 XSETFASTINT (buffer_local_flags.auto_save_file_name, -1); | 2497 XSETINT (buffer_local_flags.auto_save_file_name, -1); |
2494 XSETFASTINT (buffer_local_flags.read_only, -1); | 2498 XSETINT (buffer_local_flags.read_only, -1); |
2495 XSETFASTINT (buffer_local_flags.major_mode, -1); | 2499 XSETINT (buffer_local_flags.major_mode, -1); |
2496 XSETFASTINT (buffer_local_flags.mode_name, -1); | 2500 XSETINT (buffer_local_flags.mode_name, -1); |
2497 XSETFASTINT (buffer_local_flags.undo_list, -1); | 2501 XSETINT (buffer_local_flags.undo_list, -1); |
2498 XSETFASTINT (buffer_local_flags.mark_active, -1); | 2502 XSETINT (buffer_local_flags.mark_active, -1); |
2499 | 2503 |
2500 XSETFASTINT (buffer_local_flags.mode_line_format, 1); | 2504 XSETFASTINT (buffer_local_flags.mode_line_format, 1); |
2501 XSETFASTINT (buffer_local_flags.abbrev_mode, 2); | 2505 XSETFASTINT (buffer_local_flags.abbrev_mode, 2); |
2502 XSETFASTINT (buffer_local_flags.overwrite_mode, 4); | 2506 XSETFASTINT (buffer_local_flags.overwrite_mode, 4); |
2503 XSETFASTINT (buffer_local_flags.case_fold_search, 8); | 2507 XSETFASTINT (buffer_local_flags.case_fold_search, 8); |