In order to implement the tab and duplicate function, we
need to break a line down into its parts. The
ibp-line-object pseudo-object has this function.
The constructor has this calling sequence:
A line type symbol, as returned by
Position of the start of the line, as an emacs buffer position.
Position of the end of the line.
If the line has a tail, this is the position of the
start of the tail. If the line has no tail (e.g.,
a lost-band record), this value is
Here is the constructor.
;; - - - - - c l a s s i b p - l i n e - o b j e c t (defun ibp-line-object (kind beg end tail) "Constructor for a line object, representing the parts of a line. [ if (kind is a line type symbol as returned by ibp-classify-line) and (beg is the position of the start of the line) and (end is the position of the end of the line) and (tail is the position of the start of the tail part, or nil if this is not a tail-type line) -> return a ibp-line-object representing those values ] " (vector kind beg end tail))
There are four accessor functions that retrieve the attributes of this object.
(defun ibp-line-kind (ibp-line-object) (elt ibp-line-object 0)) (defun ibp-line-beg (ibp-line-object) (elt ibp-line-object 1)) (defun ibp-line-end (ibp-line-object) (elt ibp-line-object 2)) (defun ibp-line-tail (ibp-line-object) (elt ibp-line-object 3))