summaryrefslogtreecommitdiff
path: root/src/buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 87b7cee4413..5eeb3ce26e7 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -416,6 +416,26 @@ extern void enlarge_buffer_text (struct buffer *, ptrdiff_t);
#define BUF_FETCH_BYTE(buf, n) \
*(BUF_BYTE_ADDRESS ((buf), (n)))
+
+
+/* Macros for setting and accessing hard-narrow markers */
+
+/* Position of beginning of hard-narrowed range of buffer. */
+#define BEGH (BUF_BEGH (current_buffer))
+#define BUF_BEGH(buf) \
+ ((NILP (BVAR (buf, begh_marker))) ? BUF_BEG (buf) \
+ : marker_position (BVAR (buf, begh_marker)))
+#define SET_BUF_BEGH(buf, charpos) \
+ (bset_begh_marker (buf, build_marker(buf, charpos, buf_charpos_to_bytepos(buf, charpos))))
+
+/* Position of end of hard-narrowed range of buffer. */
+#define ZH (BUF_ZH(current_buffer))
+#define BUF_ZH(buf) \
+ ((NILP (BVAR (buf, zh_marker))) ? BUF_Z (buf) \
+ : marker_position (BVAR (buf, zh_marker)))
+#define SET_BUF_ZH(buf, charpos) \
+ (bset_zh_marker (buf, build_marker(buf, charpos, buf_charpos_to_bytepos(buf, charpos))))
+
/* Define the actual buffer data structures. */
@@ -666,6 +686,12 @@ struct buffer
ZV for this buffer when the buffer is not current. */
Lisp_Object zv_marker_;
+ /* Lower hard limit of the buffer.*/
+ Lisp_Object begh_marker_;
+
+ /* Upper hard limit of the buffer.*/
+ Lisp_Object zh_marker_;
+
/* This holds the point value before the last scroll operation.
Explicitly setting point sets this to nil. */
Lisp_Object point_before_scroll_;
@@ -984,6 +1010,16 @@ bset_width_table (struct buffer *b, Lisp_Object val)
{
b->width_table_ = val;
}
+INLINE void
+bset_begh_marker (struct buffer *b, Lisp_Object val)
+{
+ b->begh_marker_ = val;
+}
+INLINE void
+bset_zh_marker (struct buffer *b, Lisp_Object val)
+{
+ b->zh_marker_ = val;
+}
/* Number of Lisp_Objects at the beginning of struct buffer.
If you add, remove, or reorder Lisp_Objects within buffer