aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.h
diff options
context:
space:
mode:
authorTom Tromey2012-08-20 07:34:41 -0600
committerTom Tromey2012-08-20 07:34:41 -0600
commit49bc1a9dfc6e81a370bf12157c3c573743ee200a (patch)
tree24df8b040aff367adc11a2c676334ec238651e1d /src/buffer.h
parentb94de893429bbfbb27572c8c3118fcc876957adb (diff)
parenta05731a0cc2553af0469bd9b7d6ac10cd2e6a817 (diff)
downloademacs-49bc1a9dfc6e81a370bf12157c3c573743ee200a.tar.gz
emacs-49bc1a9dfc6e81a370bf12157c3c573743ee200a.zip
Merge from trunk
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h153
1 files changed, 127 insertions, 26 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 1c9f5d972a9..de7ca7eb2e7 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -477,7 +477,6 @@ struct buffer_text
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. */
478 478
479#define BVAR(buf, field) ((buf)->INTERNAL_FIELD (field)) 479#define BVAR(buf, field) ((buf)->INTERNAL_FIELD (field))
480#define BSET(buf, field, value) ((buf)->INTERNAL_FIELD (field) = (value))
481 480
482/* This is the structure that the buffer Lisp object points to. */ 481/* This is the structure that the buffer Lisp object points to. */
483 482
@@ -862,6 +861,104 @@ struct buffer
862 Lisp_Object INTERNAL_FIELD (undo_list); 861 Lisp_Object INTERNAL_FIELD (undo_list);
863}; 862};
864 863
864/* Most code should use these functions to set Lisp fields in struct
865 buffer. */
866BUFFER_INLINE void
867bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val)
868{
869 b->INTERNAL_FIELD (bidi_paragraph_direction) = val;
870}
871BUFFER_INLINE void
872bset_case_canon_table (struct buffer *b, Lisp_Object val)
873{
874 b->INTERNAL_FIELD (case_canon_table) = val;
875}
876BUFFER_INLINE void
877bset_case_eqv_table (struct buffer *b, Lisp_Object val)
878{
879 b->INTERNAL_FIELD (case_eqv_table) = val;
880}
881BUFFER_INLINE void
882bset_directory (struct buffer *b, Lisp_Object val)
883{
884 b->INTERNAL_FIELD (directory) = val;
885}
886BUFFER_INLINE void
887bset_display_count (struct buffer *b, Lisp_Object val)
888{
889 b->INTERNAL_FIELD (display_count) = val;
890}
891BUFFER_INLINE void
892bset_display_time (struct buffer *b, Lisp_Object val)
893{
894 b->INTERNAL_FIELD (display_time) = val;
895}
896BUFFER_INLINE void
897bset_downcase_table (struct buffer *b, Lisp_Object val)
898{
899 b->INTERNAL_FIELD (downcase_table) = val;
900}
901BUFFER_INLINE void
902bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val)
903{
904 b->INTERNAL_FIELD (enable_multibyte_characters) = val;
905}
906BUFFER_INLINE void
907bset_filename (struct buffer *b, Lisp_Object val)
908{
909 b->INTERNAL_FIELD (filename) = val;
910}
911BUFFER_INLINE void
912bset_keymap (struct buffer *b, Lisp_Object val)
913{
914 b->INTERNAL_FIELD (keymap) = val;
915}
916BUFFER_INLINE void
917bset_last_selected_window (struct buffer *b, Lisp_Object val)
918{
919 b->INTERNAL_FIELD (last_selected_window) = val;
920}
921BUFFER_INLINE void
922bset_local_var_alist (struct buffer *b, Lisp_Object val)
923{
924 b->INTERNAL_FIELD (local_var_alist) = val;
925}
926BUFFER_INLINE void
927bset_mark_active (struct buffer *b, Lisp_Object val)
928{
929 b->INTERNAL_FIELD (mark_active) = val;
930}
931BUFFER_INLINE void
932bset_point_before_scroll (struct buffer *b, Lisp_Object val)
933{
934 b->INTERNAL_FIELD (point_before_scroll) = val;
935}
936BUFFER_INLINE void
937bset_read_only (struct buffer *b, Lisp_Object val)
938{
939 b->INTERNAL_FIELD (read_only) = val;
940}
941BUFFER_INLINE void
942bset_truncate_lines (struct buffer *b, Lisp_Object val)
943{
944 b->INTERNAL_FIELD (truncate_lines) = val;
945}
946BUFFER_INLINE void
947bset_undo_list (struct buffer *b, Lisp_Object val)
948{
949 b->INTERNAL_FIELD (undo_list) = val;
950}
951BUFFER_INLINE void
952bset_upcase_table (struct buffer *b, Lisp_Object val)
953{
954 b->INTERNAL_FIELD (upcase_table) = val;
955}
956BUFFER_INLINE void
957bset_width_table (struct buffer *b, Lisp_Object val)
958{
959 b->INTERNAL_FIELD (width_table) = val;
960}
961
865 962
866/* Chain of all buffers, including killed ones. */ 963/* Chain of all buffers, including killed ones. */
867 964
@@ -949,7 +1046,7 @@ extern Lisp_Object Qfirst_change_hook;
949/* Get text properties of B. */ 1046/* Get text properties of B. */
950 1047
951BUFFER_INLINE INTERVAL 1048BUFFER_INLINE INTERVAL
952buffer_get_intervals (struct buffer *b) 1049buffer_intervals (struct buffer *b)
953{ 1050{
954 eassert (b->text != NULL); 1051 eassert (b->text != NULL);
955 return b->text->intervals; 1052 return b->text->intervals;
@@ -958,26 +1055,12 @@ buffer_get_intervals (struct buffer *b)
958/* Set text properties of B to I. */ 1055/* Set text properties of B to I. */
959 1056
960BUFFER_INLINE void 1057BUFFER_INLINE void
961buffer_set_intervals (struct buffer *b, INTERVAL i) 1058set_buffer_intervals (struct buffer *b, INTERVAL i)
962{ 1059{
963 eassert (b->text != NULL); 1060 eassert (b->text != NULL);
964 b->text->intervals = i; 1061 b->text->intervals = i;
965} 1062}
966 1063
967/* Set an appropriate overlay of B. */
968
969BUFFER_INLINE void
970buffer_set_overlays_before (struct buffer *b, struct Lisp_Overlay *o)
971{
972 b->overlays_before = o;
973}
974
975BUFFER_INLINE void
976buffer_set_overlays_after (struct buffer *b, struct Lisp_Overlay *o)
977{
978 b->overlays_after = o;
979}
980
981/* Non-zero if current buffer has overlays. */ 1064/* Non-zero if current buffer has overlays. */
982 1065
983BUFFER_INLINE int 1066BUFFER_INLINE int
@@ -1116,18 +1199,36 @@ extern int last_per_buffer_idx;
1116#define PER_BUFFER_IDX(OFFSET) \ 1199#define PER_BUFFER_IDX(OFFSET) \
1117 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags)) 1200 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags))
1118 1201
1119/* Return the default value of the per-buffer variable at offset 1202/* Functions to get and set default value of the per-buffer
1120 OFFSET in the buffer structure. */ 1203 variable at offset OFFSET in the buffer structure. */
1204
1205BUFFER_INLINE Lisp_Object
1206per_buffer_default (int offset)
1207{
1208 return *(Lisp_Object *)(offset + (char *) &buffer_defaults);
1209}
1210
1211BUFFER_INLINE void
1212set_per_buffer_default (int offset, Lisp_Object value)
1213{
1214 *(Lisp_Object *)(offset + (char *) &buffer_defaults) = value;
1215}
1121 1216
1122#define PER_BUFFER_DEFAULT(OFFSET) \ 1217/* Functions to get and set buffer-local value of the per-buffer
1123 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_defaults)) 1218 variable at offset OFFSET in the buffer structure. */
1219
1220BUFFER_INLINE Lisp_Object
1221per_buffer_value (struct buffer *b, int offset)
1222{
1223 return *(Lisp_Object *)(offset + (char *) b);
1224}
1124 1225
1125/* Return the buffer-local value of the per-buffer variable at offset 1226BUFFER_INLINE void
1126 OFFSET in the buffer structure. */ 1227set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value)
1228{
1229 *(Lisp_Object *)(offset + (char *) b) = value;
1230}
1127 1231
1128#define PER_BUFFER_VALUE(BUFFER, OFFSET) \
1129 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER)))
1130
1131/* Downcase a character C, or make no change if that cannot be done. */ 1232/* Downcase a character C, or make no change if that cannot be done. */
1132BUFFER_INLINE int 1233BUFFER_INLINE int
1133downcase (int c) 1234downcase (int c)