gnu.jemacs.swing

Class BufferContent

Implemented Interfaces:
CharSequence, javax.swing.text.AbstractDocument.Content, CharSeq, java.util.List, Consumable, Sequence

public class BufferContent
extends CharBuffer
implements javax.swing.text.AbstractDocument.Content

A Content class that supports Emacs-style Markers. The standard GapContent is close, but unfortunately it only supports inserting *before* marks, which is not the Emacs default. This provides a superset of the Position functionality (except for undo).

Field Summary

Fields inherited from class gnu.lists.StableVector

FREE_POSITION, free, positions

Fields inherited from class gnu.lists.GapVector

base, gapEnd, gapStart

Fields inherited from interface gnu.lists.Sequence

ATTRIBUTE_VALUE, BOOLEAN_VALUE, CDATA_VALUE, CHAR_VALUE, COMMENT_VALUE, DOCUMENT_VALUE, DOUBLE_VALUE, EOF_VALUE, FLOAT_VALUE, GROUP_VALUE, INT_S16_VALUE, INT_S32_VALUE, INT_S64_VALUE, INT_S8_VALUE, INT_U16_VALUE, INT_U32_VALUE, INT_U64_VALUE, INT_U8_VALUE, OBJECT_VALUE, PRIM_VALUE, PROCESSING_INSTRUCTION_VALUE, TEXT_BYTE_VALUE, eofValue

Constructor Summary

BufferContent()
BufferContent(int initialSize)

Method Summary

javax.swing.text.Position
createPosition(int offset)
void
dump()
protected int
getChars(int where, int len)
void
getChars(int where, int len, Segment txt)
String
getString(int where, int len)
static int
indexOf(char[] buffer, int start, int limit, char ch)
UndoableEdit
insertString(int where, String str)
UndoableEdit
insertString(int where, String str, boolean beforeMarkers)
static int
lastIndexOf(char[] buffer, int start, int limit, char ch)
Search for the last occurrence of a character in buffer[limit..start].
UndoableEdit
remove(int where, int nitems)
long
scan(char target, int start, int end, int count, boolean allowQuit)
Search in BUF for COUNT instances of the character TARGET between START and END.

Methods inherited from class gnu.lists.CharBuffer

charAt, consume, delete, fill, fill, getArray, getChars, insert, length, setCharAt, subSequence, toString, writeTo, writeTo

Methods inherited from class gnu.lists.StableVector

addPos, adjustPositions, allocPositionIndex, chainFreelist, consumePosRange, copyPos, createPos, endPos, fillPosRange, gapReserve, hasNext, isAfterPos, nextIndex, nextPos, releasePos, removePosRange, shiftGap, startPos, unchainFreelist

Methods inherited from class gnu.lists.GapVector

add, addPos, consumePosRange, createPos, fill, fillPosRange, gapReserve, gapReserve, get, getNextKind, hasNext, isAfterPos, nextIndex, removePosRange, set, shiftGap, size

Methods inherited from class gnu.lists.AbstractSequence

add, add, addAll, addAll, addPos, append, baseUriOfPos, clear, compare, compare, compare, consume, consumeNext, consumePosRange, contains, containsAll, copyPos, createPos, createRelativePos, elements, endPos, equals, equals, fill, fill, fillPosRange, firstAttributePos, firstChildPos, fromEndIndex, get, get, getAttribute, getAttributeLength, getContainingSequenceSize, getEffectiveIndex, getIndexDifference, getIterator, getIterator, getIteratorAtPos, getLowBound, getNextKind, getNextTypeName, getNextTypeObject, getPosNext, getPosPrevious, getSize, gotoAttributesStart, gotoChildrenStart, gotoParent, hasNext, hasPrevious, hashCode, indexOf, isAfterPos, isEmpty, iterator, lastIndexOf, listIterator, listIterator, nextIndex, nextIndex, nextMatching, nextPos, parentPos, previousPos, rank, releasePos, remove, remove, removeAll, removePos, removePosRange, retainAll, set, set, setPosNext, setPosPrevious, size, stableCompare, startPos, subList, subSequence, subSequencePos, toArray, toArray, toString, toString, unsupported

Constructor Details

BufferContent

public BufferContent()

BufferContent

public BufferContent(int initialSize)

Method Details

createPosition

public javax.swing.text.Position createPosition(int offset)
            throws BadLocationException

dump

public void dump()

getChars

protected int getChars(int where,
                       int len)
            throws BadLocationException

getChars

public void getChars(int where,
                     int len,
                     Segment txt)
            throws BadLocationException

getString

public String getString(int where,
                        int len)
            throws BadLocationException

indexOf

public static int indexOf(char[] buffer,
                          int start,
                          int limit,
                          char ch)

insertString

public UndoableEdit insertString(int where,
                                 String str)
            throws BadLocationException

insertString

public UndoableEdit insertString(int where,
                                 String str,
                                 boolean beforeMarkers)
            throws BadLocationException

lastIndexOf

public static int lastIndexOf(char[] buffer,
                              int start,
                              int limit,
                              char ch)
Search for the last occurrence of a character in buffer[limit..start].

remove

public UndoableEdit remove(int where,
                           int nitems)
            throws BadLocationException

scan

public final long scan(char target,
                       int start,
                       int end,
                       int count,
                       boolean allowQuit)
Search in BUF for COUNT instances of the character TARGET between START and END. If COUNT is positive, search forwards; END must be >= START. If COUNT is negative, search backwards for the -COUNTth instance; END must be <= START. If COUNT is zero, do anything you please; run rogue, for all I care. If we find COUNT instances, SHORTAGE is zero, and return the position after the COUNTth match. Note that for reverse motion this is not the same as the usual convention for Emacs motion commands. If we don't find COUNT instances before reaching END, set SHORTAGE to the number of TARGETs left unfound, and return (shortage<<32|END).
Returns:
(SHORTAGE<<32|POS)