2003-05-17  Per Bothner  <per@bothner.com>

	* EWindow.java (setFrame):  New method.
	(unlink):  If unlinking last windows, set frame's firstWindow to null.
	(delete):  Don't call unlink here.
	(deleteNoValidate):  Call it here instead.
	* EFrame.java (delete):  Fix loop over windows.

2003-01-09  Per Bothner  <per@bothner.com>

	* Buffer.java (insert):  Remove xpos parameters.
	* Marker.java:  Update for gnu.lists changes.

2002-11-15  Per Bothner  <per@bothner.com>

	* EKeyMap.java: Print-name of Symbol may require getName, not toString.

2002-03-24  Per Bothner  <per@bothner.com>

	* BufferWriter.java:  Factor out Swing dependencies.
	* EToolkit.java (getFace, setUnderlone, setBold, setForeground,
	setBackground):  New abstract methods. 
	* InputStreamHandler.java:  Remove unneeded import.
	* Buffer.java (openReader):  New abstract method.
	(currentColumn):  Use openReader method.
	* Marker.java (moveToColumn):  Likewise.

	* BufferContent.java:  Moved to gnu.buffer.swing.
	* BufferReader.java:  Moved to gnu.buffer.swing.
	* MarkerReader.java:  Moved to gnu.buffer.swing.

	* ProcessMode.java (<clinit>):  Don't use setDefaultBinding.
	Define enterAction for "\r" and "return".  

	+ ReplBuffer.java:  Removed - use ReplMode instead.
	* ReplMode.java:  New class - extends ProcessMode.
	* emacs.scm:  Remove ReplBuffer stuff to use ReplMode instead.
	* Makefile.am: Update accordingly.

	* emacs.scm (window-pixel-height, window-pixel-widt):  Fix.

	* BufferWriter.java (write1):  Handle '\t', and ignore (for now) '\r'.

2002-03-19  Per Bothner  <per@bothner.com>

	Move some Swing-specific code into gnu.jemacs.swing.
	* Buffer.java:  Make abstract.  Move Swing code to SwingBuffer.
	Make some methods abstract.
	* BufferKeymap.java:  Removed class - partly replaced by EKeymap.
	* EKeymap.java: New class, extends RangeTable.
	Move some keymap searching and command handling here, for now.
	* Window.java:  Removed class, replaced by EWindow.
	* EWindow.java:  New abstract class.
	* EToolkit.java:  New abstract class.
	* Frame.java:  Renamed to EFrame.java.
	* EFrame.java:  Move Swing-specific code to SwingBuffer.
	* InsertAction.java:  Removed, replaced by SelfInsertCommand.
	* SelfInsertCommand.java:  New class, extends Procedure0or1.
	* Command.java: Remove non-static fields and methods.
	* Marker.java:  No longer implements javax.swing.text.swing.Position.
	Move Swing-specific code out to other classes.
	* MarkerReader.java:  Add kludgy cast to SwingBuffer.
	* Modeline.java:  Update Window -> EWindow.
	* ProcessMode.java:  Remove Swing-specific code.
	(class ProcessDefaultAction):  Removed class.
	(class ProcessInsertCommand):  New class, extends Procedure0.
	* ReplBuffer.java:  Kludge update.
	* TelnetMode.java:  Remove unneeded import.
	* TooLongAction.java:  Kludge update.
	* BufferWriter.java:  Kludge update.
	* FinalAction.java:  Remove class.
	* Makefile.am:  Update appropriately.
	* emacs.scm:  Various updates.

2001-11-26  Per Bothner  <per@bothner.com>

	* BufferContent.java (dump):  Minor improvement in positions printing.

	* ReplBuffer.java (<init>): The processMarker is no longer isAfter().
	(enter):  Move processMark before sending data to QueueReader.

	* BufferKeymap.java (ignorable):  Make more consistent.
	(asKeyStroke):  Handle some more key names.

2001-11-24  Per Bothner  <per@bothner.com>

	* emacs.scm:  Use invoke instead of primitive-virtual-method.
	Add parameter type declarations.

2001-10-19  Per Bothner  <per@bothner.com>

	* BufferLocalConstraint.java (get):  Now takes defaultValue argument.

	* Command.java (perform):  Catch Throwable.

2001-10-05  Per Bothner  <per@bothner.com>

	* Buffer.java:  Update for CharSequence -> CharSeq renaming.
	* ProcessMode.java:  Likewise.

2001-06-19  Per Bothner  <per@bothner.com>

	* Makefile.am (PACKAGE_CFNAME):  Rename to PACKAGE_FNAME.

	* BufferKeymap.java:  Handle symbol implemented using Binding.
	* Marker.java (insert):  Remove bogus debug print.

	* emacs.scm (pop-to-buffer, display-window, split-window,
	move-to-column):  Add more parameter type declaration.

2001-06-17  Per Bothner  <per@bothner.com>

	* Buffer.java (makeBufferLocal):  Moved here from Symbol.
	* Command.java:  Handle Symbol moved and removal of Binding2.

2001-06-03  Per Bothner  <per@bothner.com>

	* ReplBuffer.java (<init>): Use new OutPort contructors, and
	specify pretty-printing.

2001-04-09  Per Bothner  <per@bothner.com>

	* Makefile.am (CLEANFILES):  Remove redundant definition.

2001-03-08  Per Bothner  <per@bothner.com>

	* Buffer.java, BufferContent.java, BufferKeymap.java,
	BufferReader.java, Command.java, Marker.java, MarkerReader.java,
	Menu.java,ProcessMode.java, Window.java,emacs.scm}:
	Update gnu.kawa.util->gnu.lists, AbstractString->CharSequence,
	marker-kind to isAfter boolean, array->getArray(), length->size.
	* Marker.java (isPoint):  New method
	Inherit from gnu.lists.SeqPosition.
	* IgnoreAction.java:  New class, extends javax.swing.text.TextAction.
	* Makefile.am:  Update acordingly.
	* BufferContent.java (getChars):  Shift gap to minimize copying.

2000-11-21  Per Bothner  <per@bothner.com>

	* Makefile.am, Makefile.in (EXTRA_DIST):  Include $(EXTRA_JAVA).

2000-10-15  Per Bothner  <per@bothner.com>

	* emacs.scm:  Tweaking of return types, default handling.

2000-06-26  Per Bothner  <per@bothner.com>

	* BufferKeymap.java (toString(KeyStroke)):  New static method.

2000-06-19  Per Bothner  <per@bothner.com>

	* package.html:  Point to www.JEmacs.net.

	* BufferKeymap.java (ignorable):  Don't ignore '\n' or '\t'.

	* Command.java (processInteractionString):  Accept 'F'.

	* ReplBuffer.java (<init>):  Use redStyle for inputStyle.
	* Buffer.java (<init>):  Default inputStyle to defaultStyle.

2000-06-18  Per Bothner  <per@bothner.com>

	* Buffer.java (markMarker):  New field.
	(checkMark, getMarkMarker):  New methods.
	* Window.java:  Now also implements ChangeListener.
	(activateRegion):  New method.
	(select(Caret)):  New method.

	* Buffer.java (charHeight, charWidth):  Moved to Window.
	* Window.java (charHeight, charWidth):  New fields, moved from Buffer.
	(getCharSize):  New method.
	(getHeightInLines, getWidthInColumns):  Update accordingly.

	* BufferKeymap.java (lookupKey):  Changes to handle escape and meta.
	(defineKey):  Likewise.
	(metaKey, metaKeymap):  New static fields.
	(CTRL_MASK, SHIFT_MASK, ALT_MASK, META_MASK):  New constants.
	(asNonAction, asAction):  Update accordingly.
	(ignorable, asKeyStroke, definePrefix, stripMeta):  New methods.
	(getDefaultAction):  Always return null.
	* InsertAction.java (actionPerformed):  Don't clear
	buffer.keymap.pendingLength unless we actually insert something.

	* Marker.java (isBeginningOfLine, isEndOfLine):  New predicates.
	(set):  Oops.  Need to set buffer.
	
	* BufferLocalConstraint.java:  New class, extends Constraint.
	* Command.java (key):  New field (needed for prefix keys).
	(resolveSymbol):  New method.
	(perform):  Check for "intercative" methods.
	(processInteractionString, toString):  New methods.
	(getCommand):  Call resolveSymbol.
	* PrefixAction.java:  Removed - now subsumed by Coommand.
	* Makefile.am:  Update accordingly.

	* ReplBuffer.java (scheme):  Removed method.
	(make):  New static methods that specify Interpreter or language name.

	* emacs.scm (set-keymap-name):  Takes optional name.
	(set-keymap-name):  New method - for now does nothing.
	(global-map): Change to new Keymap - not DEFAULT_KEYMAP.
	Also comment out calls to define-key - use keydefs.el instead.
	(esc-map):  New variable.
	(forward-char, backward-char, next-line, previous-line):  Comment out.
	Instead use persions in simple.el.
	(move-line):  Rename to line-move.
	(copy-merker):  More correct implementation.
	(decode-buffer):  New procedure.

2000-05-22  Per Bothner  <per@bothner.com>

	* Buffer.java:  Now extends DefaultStyledDocument.
	(document):  Removed field.
	(getContent):  Removed method, replaced by following method.
	(getStringContent):  New method.
	(remove):  Removed, since now inherited.
	various:  Replated 'document' by 'this' (usually implicit).
	* BufferWriter.java:  Likewise.
	* Marker.java:  Likewise.
	* ProcessMode.java:  Likewise.
	* ReplBuffer.java:  Likewise.
	* Window.java:  Likewise.

	* Buffer.java (<clinit>):  Default style depends on java.version.

2000-04-23  Per Bothner  <per@bothner.com>

	* Marker.java (Marker(Marker)):  Fix it.
	* emacs.scm (force-mode-line-update):  Define as explicit function,
	so elisp can find it in the function name space.
	(point-at-bol):  Fix off-by-one error.
	(save-excursion):  Remove  (now handled by elisp SaveExcursion class).

2000-04-17  Per Bothner  <per@bothner.com>

	* BufferContent.java:  No extends gnu.kawa.util.CharBuffer.
	Much of the logic was moved to CharBuffer.
	(class GpaPosition):  Now extends gnu.kawa.util.Position.
	New constructors.
	* Marker.java:  Some re-writing because BufferContent re-written.
	* Buffer.java:  Likewise.
	* Window.java:  Likewise.

	* Mode.java (getBuffer):  New method.
	* ProcessMode.java (writeToInferior, getProcessMark):  New methods.
	* emacs.scm (process?, process-send-string, process-buffer,
	process-mark, get-buffer-process):  New procedures.

2000-04-14  Per Bothner  <per@bothner.com>

	* BufferWriter.java:  Handle escape sequences.
	(resetAttributes, updateStyle, getColor, handleSetCharacterRendition,
	handleOperatingSystemCommand, handleCSICommand, handleEscapeBracket,
	deleteChars, moveColumns, write1):  New methods.
	(write):  Re-write to handle escapes state.
	* InputStreamHandler.java:  New class, extends Thread.

	* BufferKeymap.java (asNonAction):  New method.
	(lookupKey):  Use asNonAction.
	(asAction):  New method.
	(defineKey):  Use asAction.
	(lookupKey):  Only accept default action if getKeyChar() non-zero.
	
	* Marker.java (<init>):  New constructor.
	(forwardChar, backwardChar, currentColumn, moveToColumn, forwardLine):
	New methods, based on code in Buffer.java.
	* Buffer.java (modes):  New field.
	(forwardChar, backwardChar, moveToColumn):  Call BufferMarker method.
	(forwardLine):  New method.
	* emacs.scm (set-keymap-parent, set-keymap-parents, keymap-parent,
	keymap-parents, set-keymap-default-binding, keymap-default-binding,
	marker?):  New procedures.
	(point-at-bol, forward-line):  Re-write to use Buffers's forwardLine.

	* Mode.java:  New class.
	* ProcessMode.java:  New class - extends Mode.
	* TelnetMode.java:  New class - extends ProcessMode.
	* InfProcessMode.java:  New class - extends ProcessMode.
	* Makefile.am (java_WITH_SWING):  Update with new classes.
	* emacs.scm (shell, telnet):  New procedures.

	* emacs.scm (<marker>, <process>, <buffer>, <window>, <frame>,
	<keymap>):  Define as type aliases using define-alias.
	Use these aliases in rest of file.

2000-03-21  Per Bothner  <per@bothner.com>

	* Buffer.java (charHeight, charWidth):  New fields.
	(<init>):  Set charHeight, charWidth.
	* Window.java (getHeightInLines, getWidthInColumns):  New method.
	* emacs.scm (window-height, window-width, window-pixel-height,
	window-pixel-width, window-text-area-pixel-height,
	window-text-area-pixel-width):  New procedures.
	
	* Buffer.java (insert):  Rename to insertString.
	(insert):  New method generalizes old insert.
	(insertAll):  New method.
	* emacs.scm (redraw-modeline, force-mode-line-update):  New.
	(insert):  Genealize to inserting character and varargs.

2000-03-17  Per Bothner  <per@bothner.com>

	* Buffer.java (encoding):  New field.
	(defaultStyle):  New static field.  Use Lucida Sans Typewriter.
	(findFile, save, inserFile):  Set and/or use encoding.
	(<init>):  Set "18n" property to true, for correct bidi handling.
	* Marker.java (insert):  If null style, use Buffer.defaultStyle.

2000-02-27  Per Bothner  <per@bothner.com>

	Various tweaks for better javadoc processing.
	* overview.html:  Renamed to package.html.

	* Window.java (setSelected):  DOn't crash if null frame.

2000-02-26  Per Bothner  <per@bothner.com>

	* ProcAction.java:  Removed, replaced by/renamed to Command.java.
	* Command.java:  New class.
	(command):  New field, replaces proc field.
	(perform):  New static method.
	* Makefile.am, Makefile.in:  Update accordingly.
	* BufferKeymap.java:  Likewise.

	* Buffer.java (display):  New method.
	* Menu.java:  No longer implements ActionListener.
	(menuEntried):  Removed Hashtable field.
	(setMenu):  Use enumerator.  Don't create extra initial separator.
	Add a JComponent as is.
	Create a MenuItem (new class) instead of JMenuItem.
	(actionPerformed):  Moved to MenuItem.
	(class MenuItem):  New non-public class, extends JMenuItem.
	* emacs.scm (find-file-other-window, find-file-other-frame,
	pop-to-buffer, display-window, switch-to-buffer-other-window,
	switch-to-buffer-other-frame):  New procedures.
	(default-menubar):  Do't use literal, so we can use
	function references, rather than function names.


2000-02-26  Simon Josefsson <jas@pdc.kth.se>

	* Menu.java:  New file.
	* Makefile.am, Makefile.in (java_WITH_SWING):  Added Menu.java.
	* Frame.java (menuBar):  New field.
	(setMenuBar):  New method.
	(<init>):  Do setJMenuBar.
	* emacs.scm (current-menybar, default-menubar):  New variables.
	(set-menubar-dirty-flag, set-menubar):  New variables.
	(make-frame):  Call set-menubar.

2000-02-25  Per Bothner  <per@bothner.com>

	* BufferContent.java (class GapUndoableEdit):  Replace field
	startIndex field by an on offset (startOffset).  (This creates
	fewer unneeded positin indexes).

	* BufferKeymap.java (defaultInsertAction):  New static field.
	* InsertAction.java (actionPerformed):  Don't insert backspace.

	* BufferKeymap.java (asKeyStroke):  Handle modifier keys.
	* emacs.scm (emacs-help):  New command, bound ot (control h).
	Add some type declarations.

	* Emacs.java:  Removed.
	* Signal.java (checkQuit):  New method.
	* Makefile.am:  Emacs.java no longer used;  Signal.java is now
	always compiled (even without Swing);  re-orginanize so it all
	works whether or not --with-swing is configured.

	* Marker.java (deleteChar):  Signal if count is out of range.
	Call setDot to (partially) work around what appears to be a Swing bug.

	* Window.java (setBuffer):  Only update position if window is selected.
	(setSelected):  Make the buffer current *before* updatings its point.

2000-02-19  Per Bothner  <per@bothner.com>

	* Buffer.java (point):  Removed - use pointMarker.getOffset() instead.
	(<init>):  Initialize pointMarker here, to a regular marker.
	(getDot):  Just call pointMarker.getOffset.
	(setDot):  Just call pointMarker.set.
	(forwardChar, backwardChar):  Don't use/set curPosition or point.
	* Window.java (setDot):  New method.
	(setSelected, unselect):  Update buffer's curPosition and pointMarker.
	* Marker.java (getOffset):  Call buffer.curPosition.getDot directly.
	(set):  Call buffer.curPosition.setDot directly.
	
	* Buffer.java (remove, removeRegion, removeAll):  New edit methods.

	* Buffer.java (positionToOffset):  New convenience function.

	* BufferReader.java:  New class, extends InPort.
	* MarkerReader.java:  New class, extends InPort.
	* Buffer.java (tabWidth):  New field.
	(charWidth, countColumns, currentColumn, moveToColumn,
	lineStartOffset):  New methods.

	* BufferContent.java (freePositionIndex):  Fix math error.
	(array, gapStart, gapEnd):  Make default protection.
	(scan):  Fix off-by-one error.

	* BufferKeymap.java (asKeyStroke):  Handle named keys.

	* Makefile.am:  New Swing configuration scheme uses @SWING_SELECTED@.
	(java_SWING):  Renamed to java_WITH_SWING. Add new classes.
	(scmclasses.stamp):  New rules to compile emacs.scm.

	* Signal.java (toString):  New method.

	* emacs.scm (goto-line, next-line, previous-line, move-line, insert,
	erase-buffer, delete-region, delete-char, delete-backward-char,
	current-column, move-to-column):  New procedures.

2000-02-11  Per Bothner  <per@bothner.com>

	* BufferContent.java (gapContent):  Fix some small but critical bugs.

	* emacs.scm (lookup-key):  Update as Sequence was to gnu.kawa.util.

2000-02-01  Per Bothner  <per@bothner.com>

	* ReplBuffer.java:  Now need to import gnu.expr.Interpreter.

2000-01-24  Per Bothner  <per@bothner.com>

	* ReplBuffer.java:  Fix kawa.lang.QueueReader ->gnu.text.QueueReader.

2000-01-23  Per Bothner  <per@bothner.com>

	* Makefile.am (EXTRA_DIST):  Added, with emacs.scm overview.html.

1999-12-06  Per Bothner  <per@bothner.com>

	* BufferContent.java (scan):  Add missing int->long cast.
	* emacs.java (point-at-eol):  Use buffer,getDot directly.

	* Buffer.java (getContent, minDot, maxDot, deleteChar, scan):  New.
	* BufferContent.java:  No longer extends GapContent;  now just
	implements AbstractDocument.Content.
	(BEFORE_MARK_KIND, EMACS_MARK_KIND, AFTER_MARK_KIND):  New "enums".
	(array, gapStart, gapEnd):  New fields for buffer-gap implementation.
	(<init>):  New constructors.
	(allocatePositionIndex):  Fix off-by-one-errors.
	Also, we need to adjust indexes array if a new position was inserted.
	(shiftGap, length, charAt, getChars, getString, gapReserve,
	createPosition, dump):  New methods.
	(indexOf, lastIndexOf):  New static helper methods.
	(scan):  New method, converted from XEmacs.
	(GapPosition):  New class.
	(GapUndoableEdit):  New class.
	* Emacs.java (checkQuit):  New method.
	* Marker.java:  Now implements java.swing.text.Position.
	(getDot):  Renamed to getOffset, for compatibility with Position.
	(EMACS_MARK_KIND):  New "enum".  Use it various places.
	(deleteChar):  New method.
	* BufferWriter.java, ReplBuffer.java:  Update getDot -> getOffset.
	* emacs.scm:  Use new <buffer> type specifier.
	(point-min, point-max, buffer-end, buffer-size, point-at-bol,
 	point-at-eol, beginning-of-line, end-of-line, forward-line,
	delete-char):  New procedures.

1999-11-18  Per Bothner  <per@bothner.com>

	* emacs.scm:  In various places, fix <gnu.jemacs.text.Marker>
 	to <gnu.jemacs.buffer.Marker>.
	Partly convert to using newer invoke, make etc functions, instead of
	old primitive-virtual-method etc macros.

1999-09-13  Per Bothner  <per@bothner.com>

	* Buffer.java (current):  New static field.
	(getCurrent, setCurrent):  New static methods.

	* Buffer.java (redStyle, blueStyle):  New styles.
	(redrawModeline):  Make it a little fancier.
	* Modeline.java (<init>):  Take explicit Buffer argument.
	Set background to light gray.
	
	* Buffer.java (insertFile):  Don't set point at end; leave it as was.
	
	* BufferKeymap.java (defaultKeymap):  New static field.
	(globalKeymap):  Make this a new Keymap.

	* Window.java (next, previous):  Remove fields.  Instead use
	awt Component hierarchy.
	(getNextWindow, getOtherWindow, getContainedWindow, getFirstWindow,
 	getLastWindow, getNextWindowInFrame):  New methods.
	(deleteNoValidate, deleteOtherWindows):  New methods.
	(split):  Moved in code from Frame.addWindow.
	* Frame.java (getFirstWindow, getLastWindow, getSelectedFrame,
	getSelectedWindow, otherWindow):  New methods.
	(first):  Remove field.
	(addWindow):  Remove.
	(delete, isLive):  New methods.
	
	* Window.java (selected):  Remove static field.
	(getSelected):  New method - gets window selected in selected Frame.
	(setSelected):  Also make buffer current.
	(warp):  Remove one overloaded method.

	* emacs.scm (read-dialog):  New, creates popup window.
	(read-from-minibuffer):  Redefine as read-dialog.
	(*current-buffer*):  Removed variable.
	(new-window, other-window, delete-frame, frame-selected-window,
	frame-live?, selected-frame):  New procedures.

1999-09-05  Per Bothner  <per@bothner.com>

	Following item from the To-do section of overview.html are now done:
	* Implemented commands to read and save files.
	* We ask for file and buffer names using a dialog pop-up window.
	* Split windows correctly, so that the windows that are not split
	keep their sizes, the windows being split gets split as specified,
	and the frame does not change size.  Now also handles horizonal splits.
	* Fairly good support for  buffer-local keymaps and Emacs-style keymap
	search order.  A new class BufferKeymap manages the active keymaps of
	a buffer.  Multi-key key-sequences are handled.  Pending prefix keys
	are remembered on a per-buffer basis (whereas Emacs does it globally).

	* Frame.java (addWindow):  Support horizontal splitting.
	(ask, toString):  New methods.
	* Window.java:  Now inherits from JTextPane.
	(wrap, getPanel, getWindow, delete, deleteOtherWindows):  New methods.
	* Modeline.java (redraw):  Removed method.  (Not much left ...)

	* Buffer.java (getFileName, setFileName, fileFile, redrawModeline,
	makePointMarkerm getPointMarker, save, insertFile):  New methods.
	* BufferContent.java:  New class; extends GapContent.
	* Marker.java:  Partially re-write to use BufferContent features.
	(hashCode, equals, toString):  New methods.
	(insert):  New methods, moved from Buffer.java.

	* BufferKeymap.java:  New class; implements javax.swing.text.Keymap.
	* Keymap.java:  Removed;  defineKey methods moved to BufferKeymap.
	* InsertAction.java:  New class; extends javax.swing.text.TextAction.
	* FinalAction.java:  New class; extends javax.swing.text.TextAction.
	* PrefixAction.java:  New class; extends javax.swing.text.TextAction.
	* ProcAction.java:  New class;  replaced ProcCommand.
	* ProcCommand.java:  Renamed to ProcAction.java.
	* TooLongAction.java:  New class; extends javax.swing.AbstractAction.
	* CancelledException.java:  New class; extends RuntimeException.

	* BufferWriter.java:  New class; extends java.io.Writer.
	* ReplBuffer.java:  New class; extends Buffer.
	* Signal.java (message):  New static method.
	* Makefile.am, Makefile.in (java_JAVA):  Update for new classes.
	* emacs.scm (open-output-buffer, open-output-marker, make-keymap,
 	keymap-name, current-local-map, use-local-map, lookup-key, find-file,
 	find-file-noselect, save-buffer, write-file, insert-file, make-marker,
 	point-marker, copy-marker, marker-position, marker-buffer, set-marker,
 	buffer-file-name, set-visited-file-name, read-from-minibuffer,
	delete-window, delete-other-windows, switch-to-buffer):
 	New (more-or-less-standard Emacs) procedures.
	(term-send-input, scheme-swing-window):  New non-standard procedures.

1999-08-07  Per Bothner  <per@bothner.com>

	Move from gnu.emacs to gnu.jemacs.buffer.

1999-06-30  Per Bothner  <per@bothner.com>

	* overview.html:  Add "to-do" section.

1999-06-20  Per Bothner  <per@bothner.com>

	* New package.
