Mercurial > hg > xemacs-beta
annotate src/opaque.h @ 5797:a1808d52a34a
If the position of a window's cached point is deleted, use buffer point instead
src/ChangeLog addition:
2014-06-17 Aidan Kehoe <kehoea@parhasard.net>
* extents.h:
* window.c:
* window.c (unshow_buffer):
* window.c (Fset_window_buffer):
Use extents, rather than markers, for the window buffer point
cache, so that when the text containing that window buffer point
is deleted, the window display code uses the buffer's actual point
instead of the position that the marker had been moved to.
Fixes Michael Heinrich's problem of
http://mid.gmane.org/6zr42uxtf5.fsf@elektra.science-computing.de ,
introduced by Ben's patch of
https://bitbucket.org/xemacs/xemacs/commits/047d37eb70d70f43803 .
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 17 Jun 2014 20:55:45 +0100 |
parents | 308d34e9f07d |
children |
rev | line source |
---|---|
428 | 1 /* Opaque Lisp objects. |
2 Copyright (C) 1993 Sun Microsystems, Inc. | |
3 Copyright (C) 1995, 1996 Ben Wing. | |
4 | |
5 This file is part of XEmacs. | |
6 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
7 XEmacs is free software: you can redistribute it and/or modify it |
428 | 8 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
9 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
10 option) any later version. |
428 | 11 |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5127
diff
changeset
|
18 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
428 | 19 |
20 /* Synched up with: Not in FSF. */ | |
21 | |
22 /* Written by Ben Wing, October 1993. */ | |
23 | |
440 | 24 #ifndef INCLUDED_opaque_h_ |
25 #define INCLUDED_opaque_h_ | |
428 | 26 |
27 typedef struct Lisp_Opaque | |
28 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5120
diff
changeset
|
29 NORMAL_LISP_OBJECT_HEADER header; |
665 | 30 Bytecount size; |
428 | 31 max_align_t data[1]; |
32 } Lisp_Opaque; | |
33 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
3017
diff
changeset
|
34 DECLARE_LISP_OBJECT (opaque, Lisp_Opaque); |
428 | 35 #define XOPAQUE(x) XRECORD (x, opaque, Lisp_Opaque) |
617 | 36 #define wrap_opaque(p) wrap_record (p, opaque) |
428 | 37 #define OPAQUEP(x) RECORDP (x, opaque) |
38 /* #define CHECK_OPAQUE(x) CHECK_RECORD (x, opaque) | |
39 Opaque pointers should never escape to the Lisp level, so | |
40 functions should not be doing this. */ | |
41 | |
440 | 42 /* Alternative DATA arguments to make_opaque() */ |
442 | 43 #define OPAQUE_CLEAR ((const void *) 0) |
44 #define OPAQUE_UNINIT ((const void *) -1) | |
428 | 45 |
46 #define OPAQUE_SIZE(op) ((op)->size) | |
47 #define OPAQUE_DATA(op) ((void *) ((op)->data)) | |
48 #define XOPAQUE_SIZE(op) OPAQUE_SIZE (XOPAQUE (op)) | |
49 #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op)) | |
50 | |
665 | 51 Lisp_Object make_opaque (const void *data, Bytecount size); |
428 | 52 |
53 typedef struct Lisp_Opaque_Ptr | |
54 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5120
diff
changeset
|
55 NORMAL_LISP_OBJECT_HEADER header; |
428 | 56 void *ptr; |
57 } Lisp_Opaque_Ptr; | |
58 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
3017
diff
changeset
|
59 DECLARE_LISP_OBJECT (opaque_ptr, Lisp_Opaque_Ptr); |
428 | 60 #define XOPAQUE_PTR(x) XRECORD (x, opaque_ptr, Lisp_Opaque_Ptr) |
617 | 61 #define wrap_opaque_ptr(p) wrap_record (p, opaque_ptr) |
428 | 62 #define OPAQUE_PTRP(x) RECORDP (x, opaque_ptr) |
63 | |
1650 | 64 EXTERN_C MODULE_API Lisp_Object make_opaque_ptr (void *val); |
65 EXTERN_C MODULE_API void free_opaque_ptr (Lisp_Object ptr); | |
428 | 66 |
67 #define get_opaque_ptr(op) (XOPAQUE_PTR (op)->ptr) | |
68 #define set_opaque_ptr(op, ptr_) (XOPAQUE_PTR (op)->ptr = (ptr_)) | |
69 | |
440 | 70 #endif /* INCLUDED_opaque_h_ */ |