aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.h
diff options
context:
space:
mode:
authorJoakim Verona2012-09-03 17:30:17 +0200
committerJoakim Verona2012-09-03 17:30:17 +0200
commit4a37733c693d59a9b83a3fb2d0c7f9461d149f60 (patch)
treea33402e09342f748baebf0e4f5a1e40538e620f4 /src/buffer.h
parent5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (diff)
parentdcde497f27945c3ca4ce8c21f655ef6f627acdd2 (diff)
downloademacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.tar.gz
emacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.zip
upstream
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h84
1 files changed, 64 insertions, 20 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 510a8e55682..3acf1423816 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -471,7 +471,7 @@ struct buffer_text
471 /* Usually 0. Temporarily set to 1 in decode_coding_gap to 471 /* Usually 0. Temporarily set to 1 in decode_coding_gap to
472 prevent Fgarbage_collect from shrinking the gap and losing 472 prevent Fgarbage_collect from shrinking the gap and losing
473 not-yet-decoded bytes. */ 473 not-yet-decoded bytes. */
474 int inhibit_shrinking; 474 bool inhibit_shrinking;
475 }; 475 };
476 476
477/* Most code should use this macro to access Lisp fields in struct buffer. */ 477/* Most code should use this macro to access Lisp fields in struct buffer. */
@@ -1006,23 +1006,46 @@ extern struct buffer buffer_local_symbols;
1006 1006
1007extern void delete_all_overlays (struct buffer *); 1007extern void delete_all_overlays (struct buffer *);
1008extern void reset_buffer (struct buffer *); 1008extern void reset_buffer (struct buffer *);
1009extern int compact_buffer (struct buffer *); 1009extern void compact_buffer (struct buffer *);
1010extern void evaporate_overlays (ptrdiff_t); 1010extern void evaporate_overlays (ptrdiff_t);
1011extern ptrdiff_t overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr, 1011extern ptrdiff_t overlays_at (EMACS_INT, bool, Lisp_Object **,
1012 ptrdiff_t *len_ptr, ptrdiff_t *next_ptr, 1012 ptrdiff_t *, ptrdiff_t *, ptrdiff_t *, bool);
1013 ptrdiff_t *prev_ptr, int change_req);
1014extern ptrdiff_t sort_overlays (Lisp_Object *, ptrdiff_t, struct window *); 1013extern ptrdiff_t sort_overlays (Lisp_Object *, ptrdiff_t, struct window *);
1015extern void recenter_overlay_lists (struct buffer *, ptrdiff_t); 1014extern void recenter_overlay_lists (struct buffer *, ptrdiff_t);
1016extern ptrdiff_t overlay_strings (ptrdiff_t, struct window *, unsigned char **); 1015extern ptrdiff_t overlay_strings (ptrdiff_t, struct window *, unsigned char **);
1017extern void validate_region (Lisp_Object *, Lisp_Object *); 1016extern void validate_region (Lisp_Object *, Lisp_Object *);
1018extern void set_buffer_internal (struct buffer *);
1019extern void set_buffer_internal_1 (struct buffer *); 1017extern void set_buffer_internal_1 (struct buffer *);
1020extern void set_buffer_temp (struct buffer *); 1018extern void set_buffer_temp (struct buffer *);
1021extern Lisp_Object buffer_local_value_1 (Lisp_Object, Lisp_Object); 1019extern Lisp_Object buffer_local_value_1 (Lisp_Object, Lisp_Object);
1022extern void record_buffer (Lisp_Object); 1020extern void record_buffer (Lisp_Object);
1023extern _Noreturn void buffer_slot_type_mismatch (Lisp_Object, int); 1021extern _Noreturn void buffer_slot_type_mismatch (Lisp_Object, int);
1024extern void fix_overlays_before (struct buffer *, ptrdiff_t, ptrdiff_t); 1022extern void fix_overlays_before (struct buffer *, ptrdiff_t, ptrdiff_t);
1025extern void mmap_set_vars (int); 1023extern void mmap_set_vars (bool);
1024
1025/* Set the current buffer to B.
1026
1027 We previously set windows_or_buffers_changed here to invalidate
1028 global unchanged information in beg_unchanged and end_unchanged.
1029 This is no longer necessary because we now compute unchanged
1030 information on a buffer-basis. Every action affecting other
1031 windows than the selected one requires a select_window at some
1032 time, and that increments windows_or_buffers_changed. */
1033
1034BUFFER_INLINE void
1035set_buffer_internal (struct buffer *b)
1036{
1037 if (current_buffer != b)
1038 set_buffer_internal_1 (b);
1039}
1040
1041/* Arrange to go back to the original buffer after the next
1042 call to unbind_to if the original buffer is still alive. */
1043
1044BUFFER_INLINE void
1045record_unwind_current_buffer (void)
1046{
1047 record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ());
1048}
1026 1049
1027/* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements. 1050/* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements.
1028 If NEXTP is non-NULL, return next overlay there. 1051 If NEXTP is non-NULL, return next overlay there.
@@ -1067,7 +1090,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i)
1067 1090
1068/* Non-zero if current buffer has overlays. */ 1091/* Non-zero if current buffer has overlays. */
1069 1092
1070BUFFER_INLINE int 1093BUFFER_INLINE bool
1071buffer_has_overlays (void) 1094buffer_has_overlays (void)
1072{ 1095{
1073 return current_buffer->overlays_before || current_buffer->overlays_after; 1096 return current_buffer->overlays_before || current_buffer->overlays_after;
@@ -1203,18 +1226,36 @@ extern int last_per_buffer_idx;
1203#define PER_BUFFER_IDX(OFFSET) \ 1226#define PER_BUFFER_IDX(OFFSET) \
1204 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags)) 1227 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags))
1205 1228
1206/* Return the default value of the per-buffer variable at offset 1229/* Functions to get and set default value of the per-buffer
1207 OFFSET in the buffer structure. */ 1230 variable at offset OFFSET in the buffer structure. */
1231
1232BUFFER_INLINE Lisp_Object
1233per_buffer_default (int offset)
1234{
1235 return *(Lisp_Object *)(offset + (char *) &buffer_defaults);
1236}
1237
1238BUFFER_INLINE void
1239set_per_buffer_default (int offset, Lisp_Object value)
1240{
1241 *(Lisp_Object *)(offset + (char *) &buffer_defaults) = value;
1242}
1243
1244/* Functions to get and set buffer-local value of the per-buffer
1245 variable at offset OFFSET in the buffer structure. */
1208 1246
1209#define PER_BUFFER_DEFAULT(OFFSET) \ 1247BUFFER_INLINE Lisp_Object
1210 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_defaults)) 1248per_buffer_value (struct buffer *b, int offset)
1249{
1250 return *(Lisp_Object *)(offset + (char *) b);
1251}
1211 1252
1212/* Return the buffer-local value of the per-buffer variable at offset 1253BUFFER_INLINE void
1213 OFFSET in the buffer structure. */ 1254set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value)
1255{
1256 *(Lisp_Object *)(offset + (char *) b) = value;
1257}
1214 1258
1215#define PER_BUFFER_VALUE(BUFFER, OFFSET) \
1216 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER)))
1217
1218/* Downcase a character C, or make no change if that cannot be done. */ 1259/* Downcase a character C, or make no change if that cannot be done. */
1219BUFFER_INLINE int 1260BUFFER_INLINE int
1220downcase (int c) 1261downcase (int c)
@@ -1225,7 +1266,7 @@ downcase (int c)
1225} 1266}
1226 1267
1227/* 1 if C is upper case. */ 1268/* 1 if C is upper case. */
1228BUFFER_INLINE int uppercasep (int c) { return downcase (c) != c; } 1269BUFFER_INLINE bool uppercasep (int c) { return downcase (c) != c; }
1229 1270
1230/* Upcase a character C known to be not upper case. */ 1271/* Upcase a character C known to be not upper case. */
1231BUFFER_INLINE int 1272BUFFER_INLINE int
@@ -1237,8 +1278,11 @@ upcase1 (int c)
1237} 1278}
1238 1279
1239/* 1 if C is lower case. */ 1280/* 1 if C is lower case. */
1240BUFFER_INLINE int lowercasep (int c) 1281BUFFER_INLINE bool
1241{ return !uppercasep (c) && upcase1 (c) != c; } 1282lowercasep (int c)
1283{
1284 return !uppercasep (c) && upcase1 (c) != c;
1285}
1242 1286
1243/* Upcase a character C, or make no change if that cannot be done. */ 1287/* Upcase a character C, or make no change if that cannot be done. */
1244BUFFER_INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); } 1288BUFFER_INLINE int upcase (int c) { return uppercasep (c) ? c : upcase1 (c); }