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); |
