diff options
| author | Kenichi Handa | 2012-08-22 18:05:50 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2012-08-22 18:05:50 +0900 |
| commit | fabc1281e9cde34ff9a19d843316d2ceca8647ad (patch) | |
| tree | f38f13cab3ec6c32ab8ab49ea2e60f64969a0d22 /src/buffer.h | |
| parent | 4ff819d728960bf5e52b72501c606f4bb3fde028 (diff) | |
| parent | 842e3a93aa3a0826cb4148376e54cd1527d10901 (diff) | |
| download | emacs-fabc1281e9cde34ff9a19d843316d2ceca8647ad.tar.gz emacs-fabc1281e9cde34ff9a19d843316d2ceca8647ad.zip | |
merge trunk
Diffstat (limited to 'src/buffer.h')
| -rw-r--r-- | src/buffer.h | 153 |
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. */ | ||
| 866 | BUFFER_INLINE void | ||
| 867 | bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val) | ||
| 868 | { | ||
| 869 | b->INTERNAL_FIELD (bidi_paragraph_direction) = val; | ||
| 870 | } | ||
| 871 | BUFFER_INLINE void | ||
| 872 | bset_case_canon_table (struct buffer *b, Lisp_Object val) | ||
| 873 | { | ||
| 874 | b->INTERNAL_FIELD (case_canon_table) = val; | ||
| 875 | } | ||
| 876 | BUFFER_INLINE void | ||
| 877 | bset_case_eqv_table (struct buffer *b, Lisp_Object val) | ||
| 878 | { | ||
| 879 | b->INTERNAL_FIELD (case_eqv_table) = val; | ||
| 880 | } | ||
| 881 | BUFFER_INLINE void | ||
| 882 | bset_directory (struct buffer *b, Lisp_Object val) | ||
| 883 | { | ||
| 884 | b->INTERNAL_FIELD (directory) = val; | ||
| 885 | } | ||
| 886 | BUFFER_INLINE void | ||
| 887 | bset_display_count (struct buffer *b, Lisp_Object val) | ||
| 888 | { | ||
| 889 | b->INTERNAL_FIELD (display_count) = val; | ||
| 890 | } | ||
| 891 | BUFFER_INLINE void | ||
| 892 | bset_display_time (struct buffer *b, Lisp_Object val) | ||
| 893 | { | ||
| 894 | b->INTERNAL_FIELD (display_time) = val; | ||
| 895 | } | ||
| 896 | BUFFER_INLINE void | ||
| 897 | bset_downcase_table (struct buffer *b, Lisp_Object val) | ||
| 898 | { | ||
| 899 | b->INTERNAL_FIELD (downcase_table) = val; | ||
| 900 | } | ||
| 901 | BUFFER_INLINE void | ||
| 902 | bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val) | ||
| 903 | { | ||
| 904 | b->INTERNAL_FIELD (enable_multibyte_characters) = val; | ||
| 905 | } | ||
| 906 | BUFFER_INLINE void | ||
| 907 | bset_filename (struct buffer *b, Lisp_Object val) | ||
| 908 | { | ||
| 909 | b->INTERNAL_FIELD (filename) = val; | ||
| 910 | } | ||
| 911 | BUFFER_INLINE void | ||
| 912 | bset_keymap (struct buffer *b, Lisp_Object val) | ||
| 913 | { | ||
| 914 | b->INTERNAL_FIELD (keymap) = val; | ||
| 915 | } | ||
| 916 | BUFFER_INLINE void | ||
| 917 | bset_last_selected_window (struct buffer *b, Lisp_Object val) | ||
| 918 | { | ||
| 919 | b->INTERNAL_FIELD (last_selected_window) = val; | ||
| 920 | } | ||
| 921 | BUFFER_INLINE void | ||
| 922 | bset_local_var_alist (struct buffer *b, Lisp_Object val) | ||
| 923 | { | ||
| 924 | b->INTERNAL_FIELD (local_var_alist) = val; | ||
| 925 | } | ||
| 926 | BUFFER_INLINE void | ||
| 927 | bset_mark_active (struct buffer *b, Lisp_Object val) | ||
| 928 | { | ||
| 929 | b->INTERNAL_FIELD (mark_active) = val; | ||
| 930 | } | ||
| 931 | BUFFER_INLINE void | ||
| 932 | bset_point_before_scroll (struct buffer *b, Lisp_Object val) | ||
| 933 | { | ||
| 934 | b->INTERNAL_FIELD (point_before_scroll) = val; | ||
| 935 | } | ||
| 936 | BUFFER_INLINE void | ||
| 937 | bset_read_only (struct buffer *b, Lisp_Object val) | ||
| 938 | { | ||
| 939 | b->INTERNAL_FIELD (read_only) = val; | ||
| 940 | } | ||
| 941 | BUFFER_INLINE void | ||
| 942 | bset_truncate_lines (struct buffer *b, Lisp_Object val) | ||
| 943 | { | ||
| 944 | b->INTERNAL_FIELD (truncate_lines) = val; | ||
| 945 | } | ||
| 946 | BUFFER_INLINE void | ||
| 947 | bset_undo_list (struct buffer *b, Lisp_Object val) | ||
| 948 | { | ||
| 949 | b->INTERNAL_FIELD (undo_list) = val; | ||
| 950 | } | ||
| 951 | BUFFER_INLINE void | ||
| 952 | bset_upcase_table (struct buffer *b, Lisp_Object val) | ||
| 953 | { | ||
| 954 | b->INTERNAL_FIELD (upcase_table) = val; | ||
| 955 | } | ||
| 956 | BUFFER_INLINE void | ||
| 957 | bset_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 | ||
| 955 | BUFFER_INLINE INTERVAL | 1052 | BUFFER_INLINE INTERVAL |
| 956 | buffer_get_intervals (struct buffer *b) | 1053 | buffer_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 | ||
| 964 | BUFFER_INLINE void | 1061 | BUFFER_INLINE void |
| 965 | buffer_set_intervals (struct buffer *b, INTERVAL i) | 1062 | set_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 | |||
| 973 | BUFFER_INLINE void | ||
| 974 | buffer_set_overlays_before (struct buffer *b, struct Lisp_Overlay *o) | ||
| 975 | { | ||
| 976 | b->overlays_before = o; | ||
| 977 | } | ||
| 978 | |||
| 979 | BUFFER_INLINE void | ||
| 980 | buffer_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 | ||
| 987 | BUFFER_INLINE int | 1070 | BUFFER_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 | |||
| 1209 | BUFFER_INLINE Lisp_Object | ||
| 1210 | per_buffer_default (int offset) | ||
| 1211 | { | ||
| 1212 | return *(Lisp_Object *)(offset + (char *) &buffer_defaults); | ||
| 1213 | } | ||
| 1214 | |||
| 1215 | BUFFER_INLINE void | ||
| 1216 | set_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 | |||
| 1224 | BUFFER_INLINE Lisp_Object | ||
| 1225 | per_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 | 1230 | BUFFER_INLINE void |
| 1130 | OFFSET in the buffer structure. */ | 1231 | set_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. */ |
| 1136 | BUFFER_INLINE int | 1237 | BUFFER_INLINE int |
| 1137 | downcase (int c) | 1238 | downcase (int c) |