| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
An annotation is a pixmap or string that is not part of a buffer's text but is displayed next to a particular location in a buffer. Annotations can be displayed intermixed with text, in any whitespace at the beginning or end of a line, or in a special area at the left or right side of the frame called a margin, whose size is controllable. Annotations are implemented using extents (see section 47. Extents); but you can work with annotations without knowing how extents work.
| 51.1 Annotation Basics | Introduction to annotations. | |
| 51.2 Annotation Primitives | Creating and deleting annotations. | |
| 51.3 Annotation Properties | Retrieving and changing the characteristics of an annotation. | |
| 51.5 Margin Primitives | Controlling the size of the margins. | |
| 51.4 Locating Annotations | Looking for annotations in a buffer. | |
| 51.6 Annotation Hooks | Hooks called at certain times during an annotation's lifetime. |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Marginal annotations are notes associated with a particular location in a buffer. They may be displayed in a margin created on the left-hand or right-hand side of the frame, in any whitespace at the beginning or end of a line, or inside of the text itself. Every annotation may have an associated action to be performed when the annotation is selected. The term annotation is used to refer to an individual note. The term margin is generically used to refer to the whitespace before the first character on a line or after the last character on a line.
Each annotation has the following characteristics:
nil, this field must contain a function capable of being
the first argument to funcall. This function is normally
evaluated with a single argument, the value of the data field,
each time the annotation is selected. However, if the with-event
parameter to make-annotation is non-nil, the function
is called with two arguments. The first argument is the same as
before, and the second argument is the event (a button-up event,
usually) that activated the annotation.
The margin is divided into outside and inside. The outside margin is space on the left or right side of the frame which normal text cannot be displayed in. The inside margin is that space between the leftmost or rightmost point at which text can be displayed and where the first or last character actually is.
There are four different layout types which affect the exact location an annotation appears.
outside-margin
inside-margin
use-left-overflow or
use-right-overflow (depending on which side the annotation
appears in) is non-nil.
whitespace
use-left-overflow or
use-right-overflow (depending on which side the annotation
appears in) is non-nil.
text
The current layout policy is that all whitespace annotations are
displayed first. Next, all inside-margin annotations are
displayed using any remaining space. Finally as many
outside-margin annotations are displayed as possible. The
text annotations will always display as they create their own
space to display in.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
nil, point is used. If
layout is nil, whitespace is used. If buffer
is nil, the current buffer is used.
If with-event is non-nil, then when an annotation is
activated, the triggering event is passed as the second arg to the
annotation function. If d-glyph is non-nil then it is used
as the glyph that will be displayed when button1 is down. If
rightp is non-nil then the glyph will be displayed on the
right side of the buffer instead of the left.
The newly created annotation is returned.
t if annotation is an annotation,
nil otherwise.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
nil, set the
layout policy of annotation to layout. If side is
left or right, change the side of the buffer at which the
annotation is displayed to the given side. The new value of
annotation-glyph is returned.
left or
right.
t if there is enough available space to
display annotation, nil otherwise.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
nil point is used. If
buffer is nil the current buffer is used.
nil, the current buffer is used.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The margin widths are controllable on a buffer-local, window-local, frame-local, device-local, or device-type-local basis through the use of specifiers. See section 48. Specifiers.
set-specifier to change its value.
set-specifier to change its value.
nil, use the left outside margin as extra whitespace when
displaying whitespace and inside-margin annotations.
Defaults to nil. This is a specifier variable; use
set-specifier to change its value.
nil, use the right outside margin as extra whitespace when
displaying whitespace and inside-margin annotations.
Defaults to nil. This is a specifier variable; use
set-specifier to change its value.
nil, the selected window is
assumed.
nil, the selected window is
assumed.
The margin colors are controlled by the faces left-margin and
right-margin. These can be set using the X resources
Emacs.left-margin.background and
Emacs.left-margin.foreground; likewise for the right margin.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following three hooks are provided for use with the marginal annotations:
before-delete-annotation-hook
after-delete-annotation-hook
make-annotation-hook
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |