Next / Previous / Contents / Shipman's homepage

5.16. ibp-line-object: Represents one line

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:

(ibp-line-object kind beg end tail)

A line type symbol, as returned by ibp-classify-line.


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 nil.

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))