]> code.delx.au - gnu-emacs/blobdiff - src/intervals.h
(Fwhile): If mocklisp, test for nonzeroness.
[gnu-emacs] / src / intervals.h
index 472dbc570410b86d7d5528bbb061507481fd194f..74854add752b79aa2fa3d331e786766ff9ec923d 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions and global variables for intervals.
-   Copyright (C) 1990, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1993 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -18,7 +18,9 @@ along with GNU Emacs; see the file COPYING.  If not, write to
 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #ifdef USE_TEXT_PROPERTIES
+#ifndef NORMAL_FACE
 #include "dispextern.h"
+#endif
 
 #define NULL_INTERVAL 0
 #define INTERVAL_DEFAULT NULL_INTERVAL
@@ -135,11 +137,16 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* Is this interval visible?  Replace later with cache access */
 #define INTERVAL_VISIBLE_P(i) \
-  (! NULL_INTERVAL_P (i) && ! NILP (Fmemq (Qinvisible, (i)->plist)))
+  (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible)))
 
 /* Is this interval writable?  Replace later with cache access */
-#define INTERVAL_WRITABLE_P(i) \
-  (! NULL_INTERVAL_P (i) && NILP (Fmemq (Qread_only, (i)->plist)))
+#define INTERVAL_WRITABLE_P(i)                                 \
+  (! NULL_INTERVAL_P (i)                                       \
+   && (NILP (textget ((i)->plist, Qread_only))                 \
+       || ((CONSP (Vinhibit_read_only)                         \
+           ? !NILP (Fmemq (textget ((i)->plist, Qread_only),   \
+                           Vinhibit_read_only))                \
+           : !NILP (Vinhibit_read_only)))))                    \
 
 /* Macros to tell whether insertions before or after this interval
    should stick to it. */
@@ -160,16 +167,20 @@ extern void copy_properties ();
 extern int intervals_equal ();
 extern void traverse_intervals ();
 extern INTERVAL split_interval_right (), split_interval_left ();
-extern INTERVAL find_interval (), next_interval (), previous_interval ();
+extern INLINE INTERVAL find_interval ();
+extern INTERVAL next_interval (), previous_interval ();
 extern INTERVAL merge_interval_left (), merge_interval_right ();
 extern void delete_interval ();
 extern INLINE void offset_intervals ();
 extern void graft_intervals_into_buffer ();
 extern void set_point ();
-extern INLINE void temp_set_point (position, buffer)
+extern INLINE void temp_set_point ();
 extern void verify_interval_modification ();
 extern INTERVAL balance_intervals ();
-extern void copy_intervals_to_string ();
+extern INLINE void copy_intervals_to_string ();
+extern INTERVAL copy_intervals ();
+extern Lisp_Object textget ();
+extern Lisp_Object get_local_map ();
 
 /* Declared in textprop.c */
 
@@ -178,7 +189,9 @@ extern Lisp_Object Qmouse_left;
 extern Lisp_Object Qmouse_entered;
 extern Lisp_Object Qpoint_left;
 extern Lisp_Object Qpoint_entered;
-extern Lisp_Object Qmodification;
+extern Lisp_Object Qmodification_hooks;
+extern Lisp_Object Qcategory;
+extern Lisp_Object Qlocal_map;
 
 /* Visual properties text (including strings) may have. */
 extern Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
@@ -188,6 +201,8 @@ extern Lisp_Object Ftext_properties_at ();
 extern Lisp_Object Fnext_property_change (), Fprevious_property_change ();
 extern Lisp_Object Fadd_text_properties (), Fset_text_properties ();
 extern Lisp_Object Fremove_text_properties (), Ferase_text_properties ();
+extern Lisp_Object Ftext_property_any (), Ftext_property_all ();
+extern Lisp_Object copy_text_properties ();
 
 extern void syms_of_textprop ();
 
@@ -202,6 +217,7 @@ extern void syms_of_textprop ();
 #define insert_interval_copy(source,position,end,sink,at)
 #define graft_intervals_into_buffer(tree,position,bufferptr)
 #define offset_intervals(buffer,position,length)
+#define copy_intervals(tree,start,length)
 
 #define syms_of_textprop()