aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.h
diff options
context:
space:
mode:
authorKenichi Handa2012-08-22 18:05:50 +0900
committerKenichi Handa2012-08-22 18:05:50 +0900
commitfabc1281e9cde34ff9a19d843316d2ceca8647ad (patch)
treef38f13cab3ec6c32ab8ab49ea2e60f64969a0d22 /src/buffer.h
parent4ff819d728960bf5e52b72501c606f4bb3fde028 (diff)
parent842e3a93aa3a0826cb4148376e54cd1527d10901 (diff)
downloademacs-fabc1281e9cde34ff9a19d843316d2ceca8647ad.tar.gz
emacs-fabc1281e9cde34ff9a19d843316d2ceca8647ad.zip
merge 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 7a6bddee5ec..6c63c52dc47 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
@@ -953,7 +1050,7 @@ extern Lisp_Object Qfirst_change_hook;
953/* Get text properties of B. */ 1050/* Get text properties of B. */
954 1051
955BUFFER_INLINE INTERVAL 1052BUFFER_INLINE INTERVAL
956buffer_get_intervals (struct buffer *b) 1053buffer_intervals (struct buffer *b)
957{ 1054{
958 eassert (b->text != NULL); 1055 eassert (b->text != NULL);
959 return b->text->intervals; 1056 return b->text->intervals;
@@ -962,26 +1059,12 @@ buffer_get_intervals (struct buffer *b)
962/* Set text properties of B to I. */ 1059/* Set text properties of B to I. */
963 1060
964BUFFER_INLINE void 1061BUFFER_INLINE void
965buffer_set_intervals (struct buffer *b, INTERVAL i) 1062set_buffer_intervals (struct buffer *b, INTERVAL i)
966{ 1063{
967 eassert (b->text != NULL); 1064 eassert (b->text != NULL);
968 b->text->intervals = i; 1065 b->text->intervals = i;
969} 1066}
970 1067
971/* Set an appropriate overlay of B. */
972
973BUFFER_INLINE void
974buffer_set_overlays_before (struct buffer *b, struct Lisp_Overlay *o)
975{
976 b->overlays_before = o;
977}
978
979BUFFER_INLINE void
980buffer_set_overlays_after (struct buffer *b, struct Lisp_Overlay *o)
981{
982 b->overlays_after = o;
983}
984
985/* Non-zero if current buffer has overlays. */ 1068/* Non-zero if current buffer has overlays. */
986 1069
987BUFFER_INLINE int 1070BUFFER_INLINE int
@@ -1120,18 +1203,36 @@ extern int last_per_buffer_idx;
1120#define PER_BUFFER_IDX(OFFSET) \ 1203#define PER_BUFFER_IDX(OFFSET) \
1121 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags)) 1204 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags))
1122 1205
1123/* Return the default value of the per-buffer variable at offset 1206/* Functions to get and set default value of the per-buffer
1124 OFFSET in the buffer structure. */ 1207 variable at offset OFFSET in the buffer structure. */
1208
1209BUFFER_INLINE Lisp_Object
1210per_buffer_default (int offset)
1211{
1212 return *(Lisp_Object *)(offset + (char *) &buffer_defaults);
1213}
1214
1215BUFFER_INLINE void
1216set_per_buffer_default (int offset, Lisp_Object value)
1217{
1218 *(Lisp_Object *)(offset + (char *) &buffer_defaults) = value;
1219}
1125 1220
1126#define PER_BUFFER_DEFAULT(OFFSET) \ 1221/* Functions to get and set buffer-local value of the per-buffer
1127 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_defaults)) 1222 variable at offset OFFSET in the buffer structure. */
1223
1224BUFFER_INLINE Lisp_Object
1225per_buffer_value (struct buffer *b, int offset)
1226{
1227 return *(Lisp_Object *)(offset + (char *) b);
1228}
1128 1229
1129/* Return the buffer-local value of the per-buffer variable at offset 1230BUFFER_INLINE void
1130 OFFSET in the buffer structure. */ 1231set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value)
1232{
1233 *(Lisp_Object *)(offset + (char *) b) = value;
1234}
1131 1235
1132#define PER_BUFFER_VALUE(BUFFER, OFFSET) \
1133 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER)))
1134
1135/* Downcase a character C, or make no change if that cannot be done. */ 1236/* Downcase a character C, or make no change if that cannot be done. */
1136BUFFER_INLINE int 1237BUFFER_INLINE int
1137downcase (int c) 1238downcase (int c)