From 07963cfc7b5bd985bf01ef22c90970501104352d Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Thu, 19 Nov 2009 01:44:52 +0100 Subject: added rudel (obby and other colab framework for emacs) --- emacs.d/lisp/rudel/ChangeLog | 2403 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2403 insertions(+) create mode 100644 emacs.d/lisp/rudel/ChangeLog (limited to 'emacs.d/lisp/rudel/ChangeLog') diff --git a/emacs.d/lisp/rudel/ChangeLog b/emacs.d/lisp/rudel/ChangeLog new file mode 100644 index 0000000..03c4fab --- /dev/null +++ b/emacs.d/lisp/rudel/ChangeLog @@ -0,0 +1,2403 @@ +2009-10-22 Jan Moringen + + * TODO (Future): added BEEP and SubEthaEdit tasks + +2009-10-15 Jan Moringen + + * rudel.el (rudel-version): bumped to 0.3 + * Project.ede (project rudel): bumped version to 0.3 + + * TODO: whitespace fixes + (Milestone rudel-0.4): new; focus on telepathy transport + (Milestone rudel-0.3): added infinote, document trees + +2009-10-13 Jan Moringen + + * TODO: new file; TODO items for future development and releases + +2009-10-12 Phil Hagelberg + + * rudel-mode.el + (rudel-mode-line-publish-state--add-indicator-to-mode-line): + Replace reference to mode-line indicator that was not present in + Emacs 22. + + * rudel-compat.el: add rudel-get-coding-system wrapper function. + * rudel-obby-util.el (with-parsed-args): Replace call to + Emacs23-specific coding-system-from-name function with + rudel-get-coding-system. + + rudel-compat.el: Add string-match-p if not present. (< Emacs 23) + + * rudel-mode.el, rudel-overlay.el: Move use of :safe flag from + defcustom to a separate put. Required for Emacs 22 compatibility. + + * rudel-loaddefs.el: Only require rudel-zeroconf if zeroconf is + available. + +2009-10-12 Jan Moringen + + * jupiter/jupiter-delete.el (jupiter-delete::jupiter-transform): + fixed error message + +2009-10-08 Jan Moringen + + * jupiter/jupiter.el (header): downcased keywords + (object-print): new method; add revisions and log length to string + * jupiter/jupiter-nop.el (header): downcased keywords; cosmetic + representation changes to "commentary" section + * jupiter/jupiter-insert.el (header): downcased keywords; cosmetic + changes to "commentary" section + (object-print): new method; add start, end, length and data to + string representation + * jupiter/jupiter-delete.el (header): downcased keywords; cosmetic + changes to "commentary" section + (jupiter-transform): cosmetic changes + (object-print): new method; add position and length to string + representation + * jupiter/jupiter-compound.el (header): downcased keywords; + cosmetic changes to "commentary" section + (object-print): new method; add number of children to string + representation + +2009-10-07 Jan Moringen + + * doc/card.tex (Session Initiation): mention configured sessions; + explain Zeroconf-advertised session in more detail + +2009-10-06 Jan Moringen + + * doc/card.tex (Joining a Session ...): added global and user + passwords + + * rudel.el (rudel-version): use list representation instead of + float + (rudel-allocate-buffer-function): added documentation string + + * INSTALL (COMPILING): fixed typo + +2009-10-06 Phil Hagelberg + + * README (JOINING): Mention `rudel-configured-sessions' + customization. + + * README (INTRODUCTION): emphasize obby backend being the only + supported one so far + (JOINING): update example session with passwords. + + * rudel-loaddefs.el: Add autoloads for rudel-host-session and + rudel-speedbar + +2009-10-05 Phil Hagelberg + + * README: Mention Eshell issue and license. + +2009-10-03 Jan Moringen + + * rudel-compat.el (make-pulsing-progress-reporter): removed; + `make-progress-reporter' is sufficient + (progress-reporter-pulse): store index in the car of the reporter; + set last update time of the reporter + * obby/rudel-obby.el (rudel-connect): use `make-progress-reporter' + instead of `make-pulsing-progress-reporter' + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-subscribe-to): cosmetic changes in + status messages + + * ChangeLog: updated + +2009-10-02 Phil Hagelberg + + * INSTALL: Mention CEDET's inclusion in Emacs + + * rudel-state-machine.el (rudel-state-wait): update progress + reporter usage to match rudel-compat.el + + * rudel-compat.el: Use updated progress reporters + (progress-reporter-update): may be used by pulsing reporters too + (make-progress-reporter): nil max value returns pulsing reporter + (progress-reporter-force-update): may be used by pulsing reporters + too + (progress-reporter-pulsing-p): added + (progress-reporter-pulse): removed message change option + +2009-10-02 Jan Moringen + + * rudel-state-machine.el (rudel-state-wait): accept callback + function instead of message; adjusted documentation string + * obby/rudel-obby.el (rudel-obby-backend::rudel-connect): when + calling `rudel-state-wait', provide a callback; the callback + controls a progress reporter + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-subscribe-to): when calling + `rudel-state-wait', provide a callback; the callback controls a + progress reporter + + * rudel-compat.el (progress-reporter-pulse): store index as float + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/obby_document_create): + cosmetic changes of printed messages + (rudel-obby-client-state-idle::rudel-obby/obby_document_remove): + cosmetic changes of printed messages + + * rudel.el (rudel-session::rudel-remove-document): when necessary, + detach document first; added documentation string + (rudel-document::rudel-attached-p): new method; return non-nil + when document is attached to a buffer + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/net6_client_part): + promoted warning severity to :warning + (rudel-obby-client-state-idle::rudel-obby/obby_document_remove): + fixed lookup of document; added warning message in case it is not + found + (rudel-obby-client-state-idle::rudel-obby/obby_document/rename): + promoted warning severity to :warning + (rudel-obby-connection::rudel-unpublish): new method; ask server + to remove a document + +2009-10-01 Jan Moringen + + * rudel-state-machine.el (rudel-state-wait): fixed progress range + [0, 100] -> [0, 1]; fixed reference to reporter object + * obby/rudel-obby.el (rudel-obby-send): removed remnants of calls + to `working-*' functions; call `progress-reporter-pulse' just + before `progress-reporter-done' + +2009-09-30 Jan Moringen + + * rudel-compat.el: only define pulsing progress reporter when + Emacs does not have one itself + (header): downcased keywords + (make-pulsing-progress-reporter): renamed + `make-progress-reporter-pulse' -> + `make-pulsing-progress-reporter'; cosmetic changes; explanatory + comment + (progress-reporter-pulse): added documentation string + Suggested by Phil Hagelberg + + * rudel-compat.el (progress-pulse-values): new variable; indicator + strings used by pulsing progress reporter + (make-progress-reporter-pulse): new function; creates pulsing + progress reporter + (progress-reporter-pulse): new function; updates pulsing progress + reporter + Suggested by Phil Hagelberg + +2009-09-29 Jan Moringen + + * obby/rudel-obby-server.el + (rudel-obby-server-state-before-join::rudel-obby/net6_client_login): + accept two additional arguments: global-password and user-password + + * rudel-session-initiation.el (rudel-configured-sessions): + improved documentation string + +2009-09-29 Jan Moringen + + * INSTALL (REQUIREMENTS): wording + (INSTALLING): mention other things that cause rudel to be + autoloaded; minor cosmetic changes + (COMPILING): fixed filename compile.el -> rudel-compile.el + + * rudel-compile.el (header): added copyright and meta data + (code): let-bind rudel-dir; call `byte-recompile-directory' just + once since it operates recursively + +2009-09-28 Jan Moringen + + * obby/rudel-obby-server.el (header): better documentation + (require rudel-state-machine): now required for state machine + style handling of client connections + (require rudel-obby-state): now required; provides base class for + states + (rudel-obby-server-state-new): new class; client connection state + new + (rudel-obby-server-state-encryption-negotiate): new class; client connection state + for negotiating encryption + (rudel-obby-server-state-before-join): new class; client connection state + for waiting for login request + (rudel-obby-server-state-new): new class; client connection state + entered after session setup and joining is complete + (rudel-obby-server-connection-states): new variable; list of + states and their symbolic names + (rudel-obby-client): now derived from rudel-state-machine + + * obby/rudel-obby.el (rudel-obby-backend::rudel-ask-connect-info): + check for :global-password and :user-password correctly; do not + put them into the list when they are "" + (rudel-obby-backend::rudel-connect): comment + + * rudel-session-initiation.el + (rudel-configured-sessions-backend::rudel-discover): let + `rudel-session-initiation-adjust-info' do the heavy lifting + (rudel-session-initiation-adjust-info): new function; adjust + arguments that need adjusting in a session information property + list + + * rudel-session-initiation.el (rudel-configured-sessions): more + precise specification of the customization type + +2009-09-27 Phil Hagelberg + + * compile.el: renamed compile.el -> rudel-compile.el + + * INSTALL: Mention new install process using compile.el and + rudel-loaddefs.el. + + * rudel-loaddefs.el: Autoload rudel as one unit instead of + piece-by-piece. Remove eieio dependency from autoloads. + + * compile.el: Perform compilation from Elisp + + * Makefile: Remove error-prone CEDET-autogenerated build scripts. + +2009-09-27 Jan Moringen + + * rudel-session-initiation.el + (rudel-configured-sessions-backend::rudel-discover): fixed a bug + that dropped the last option in each configured session + + * rudel-session-initiation.el (rudel-configured-sessions): new + customization option; contains a list of session information lists + (rudel-ask-protocol-backend::initialize-instance): maybe call next + method + (rudel-configured-sessions-version): new constant; version of the + configured-sessions backend + (rudel-configured-sessions-backend): new class; + configured-sessions backend + (rudel-configured-sessions-backend::initialize-instance): new + method; set version slot + (rudel-configured-sessions-backend::rudel-discover): new method; + "discover" configured sessions + (autoload rudel-add-backend): register + rudel-configured-sessions-backend as a protocol backend + + * rudel-chat.el (rudel-chat-buffer-name): new constant; name chat + log buffer + (rudel-chat-handle-buffer): raise buffer when logging a chat + message + + * rudel-debug.el (header): fixed meta-data and license + (rudel-debug-sent-data-face): added documentation string + (rudel-debug-received-data-face): added documentation string + (rudel-debug-received-processed-data-face): added documentation + string + (rudel-debug-state-face): added documentation string + (rudel-debug-special-face): added documentation string + (rudel-suspend-session-socket): added documentation string + (rudel-resume-session-socket): added documentation string + + * obby/rudel-obby-util.el (rudel-obby-dispatch): use + `display-warning' instead of `warn' + * obby/rudel-obby-state.el (rudel-obby-state::rudel-accept): use + `display-warning' instead of `warn' + (rudel-obby-document-handler::rudel-obby/obby_document): use + `display-warning' instead of `warn' + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/net6_client_part): use + `display-warning' instead of `warn' + (rudel-obby-client-state-idle::rudel-obby/obby_document/record): + use `display-warning' instead of `warn' + * rudel-backend.el (rudel-backend-factory::rudel-load-backends): + use `display-warning' instead of `warn' + + * obby/rudel-obby-client.el (require rudel-chat): used when + handling chat messages + (rudel-obby-client-state-idle::rudel-obby/obby_message): new + method; handles obby 'message' messages by dispatching to + `rudel-chat-dispatch-message' + * rudel-chat.el (whole file): new file; handling of incoming chat + messages + * Project.ede (target rudel): added rudel-chat.el + * Makefile (target rudel_LISP): added rudel-chat.el + +2009-09-26 Jan Moringen + + * obby/rudel-obby-state.el (rudel-obby-server-connection-state): + new class; base class for server connection states + (rudel-obby-server-connection-state::rudel-broadcast): new method; + broadcast message to a set of receivers + +2009-09-25 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-backend::rudel-connect): new + error state they-finalized; handle join-failed error specially + * obby/rudel-obby-client.el (rudel-obby-client-state-join-failed): + improved comments + (rudel-obby-client-state-they-finalized): new state class; used to + indicate that the connection was closed by the peer + (rudel-obby-client-connection-states): added they-finalized + (rudel-obby-connection::rudel-close): switch state machine to + they-finalized + (rudel-obby-connection::rudel-subscribe-to): new error state + they-finalized + + * rudel.el (rudel-client-session::connection): allow nil value + (rudel-client-session::rudel-end): only try to disconnect the + connection if it is non-nil; ignore errors during disconnect + + * obby/rudel-obby-client.el + (rudel-obby-client-state-encryption-start::rudel-obby/net6_encryption_begin): + do not require rudel-tls; do not try to start TLS encryption if + the connection does not support it + * rudel-tls.el (rudel-tls-make-process): mark process as + supporting TLS encryption + + * obby/rudel-obby-state.el (rudel-obby/net6_ping): return nil to + prevent erratic behavior of the state machine + + * rudel-interactive.el (rudel-allocate-buffer-clear-existing): + added missing whitespace in prompt string + +2009-09-24 Jan Moringen + + * rudel-tls.el (rudel-tls-start-tls): changed displayed message + (rudel-tls-wait-init): ignore all lines until "- Simple Client + Mode.*" is received; then switch back old filter + (rudel-tls-wait-handshake): ignore all lines until "- + Compression.*" is received; then switch to established filter + (rudel-tls-established): do not ignore any lines other than + "- Peer has closed the GNUTLS connection" + + * obby/rudel-obby.el (rudel-ask-connect-info): ask for global and + user passwords + * obby/rudel-obby-client.el + (rudel-obby-client-state-joining::rudel-enter): transmit global + and user passwords when available + + * obby/rudel-obby-errors.el + (rudel-obby-error-wrong-global-password): fixed error code + (rudel-obby-error-wrong-user-password): fixed error code + (rudel-obby-error-protocol-version-mismatch): fixed error code + (rudel-obby-error-not-encrypted): fixed error code + * obby/rudel-obby-client.el + (rudel-obby-client-state-joining::rudel-obby/net6_login_failed): + recognize wrong global/user password error codes + + * obby/rudel-obby-debug.el (whole file): new file; debugging + functions for the obby backend + * rudel-debug.el (whole file): new file; debugging functions + + * obby/rudel-obby-errors.el + (rudel-obby-error-wrong-global-password): new constant; error code + for wrong global password + (rudel-obby-error-wrong-user-password): new constant; error code + for wrong user password + (rudel-obby-error-protocol-version-mismatch): new constant; error + code for protocol version mismatch + (rudel-obby-error-not-encrypted): new constant; error code for not + encrypted + + * Project.ede (target rudel): added rudel-transport.el + * Makefile (target rudel_LISP): added rudel-transport.el + * rudel-transport.el (whole file): new file; interface for + transport backends + +2009-09-20 Jan Moringen + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-remote-operation): added byte -> char + conversion before the operation is applied to the server-side + document; updated comments + + * obby/rudel-obby-server.el (rudel-obby-client::rudel-broadcast): + cosmetic changes + (rudel-obby-client::rudel-obby/net6_client_login): cosmetic + changes; improved comments + (rudel-obby-client::rudel-obby/obby_document): changed + documentation string; cosmetic changes + (rudel-obby-client::rudel-obby/obby_document/record): added a + comment + (rudel-obby-client::rudel-remote-operation): improved comments + + * obby/rudel-obby-server.el (header): added header comment + (rudel-obby-client::rudel-obby/obby_document_create): changed + documentation comment + (rudel-obby-client::rudel-obby/obby_document/subscribe): changed + documentation comment; cosmetic changes + (rudel-obby-client::rudel-obby/obby_document/unsubscribe): + cosmetic changes + (rudel-obby-server::initialize-instance): do not run :after; call + next method + (rudel-obby-server::rudel-broadcast): signal wrong-type-argument + instead of just error; cosmetic changes + (rudel-obby-server::rudel-check-username-and-color): changed + comments + (rudel-obby-server::object-print): new method; generate string + representation with number of clients + +2009-09-19 Jan Moringen + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/record/ins): + construct the operation and use `rudel-remote-operation' + (rudel-obby-client::rudel-obby/obby_document/record/del): + construct the operation and use `rudel-remote-operation' + (rudel-obby-client::rudel-remote-operation): new method; transform + and apply an operation object to the server-side document; send + operation to all other clients + (rudel-obby-server::rudel-broadcast): cosmetic changes + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/record/del): swapped + local and remote revisions in the operation name to be consistent + with record/ins; does not affect behavior + +2009-09-12 Jan Moringen + + * rudel-mode.el (rudel-header-subscriptions--update-from-document): + force mode line update + (rudel-header-subscriptions--update-from-buffer): force mode line + update + (rudel-header-subscriptions-minor-mode): force mode line update + + * rudel-mode.el + (rudel-mode-line-publish-state-unpublished-string): new + customization option; string used to indicate that a buffer is not + published + (rudel-mode-line-publish-state-published-string): new + customization option; string used to indicate that a buffer is + published + (rudel-mode-line-publish-state--update-string): use + `rudel-mode-line-publish-state-unpublished-string' and + `rudel-mode-line-publish-state-unpublished-string' + + * rudel.el (rudel-session::end-hook): new slot; stores handlers of + the end hook + (rudel-session::rudel-end): run end hook + (rudel-session::rudel-join-session): install handler on session + end hook to set `rudel-current-session' to nil + (rudel-session::rudel-end-session): no need to run + rudel-session-end-hook or reset `rudel-current-session' + * rudel-hooks.el (rudel-hooks--session-start): add handler for the + end hook of the session + (rudel-hooks--session-end): remove the handler from end hook of + the session; run the rudel-session-end hook + (rudel-hooks--install-handlers): do install handler for + rudel-session-end hook; this is now done by installing the in the + session object + (rudel-hooks--uninstall-handlers): no need to remove + rudel-session-end hook + + * rudel-util.el (rudel-socket-owner::rudel-state-change): cover + more states + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/obby_document_remove): + implemented, was stub; untested though + +2009-09-10 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/net6_client_join): check + whether we have a user object for the specified user id; modify + the existing object if there is one + +2009-09-09 Jan Moringen + + * zeroconf/Makefile (whole file): regenerated + * wave/Makefile (whole file): regenerated + * Makefile (target all): build target doc + (target doc): new target; build documentation + (target tags): build target tags in doc directory + (target dist): build target dist in doc directory + +2009-09-06 Jan Moringen + + * telepathy/rudel-telepathy.el (header): fixes + (require rudel-backend): required, since we define a backend + (require rudel-transport): it is a transport backend + (class rudel-telepathy-backend): derived from + rudel-transport-backend + (rudel-telepathy-backend::initialize-instance): new method; set + version slot + (autoloading): upgraded to new backend registration style + + * INSTALL (REQUIREMENTS): mention Avahi + +2009-09-05 Jan Moringen + + * rudel.el (require rudel-util): required for `rudel-hook-object' + + * rudel-util.el (property svn:executable): removed property + * rudel-overlay.el (property svn:executable): removed property + + * doc/Project.ede (whole file): new file; project file for the + documentation directory + * doc/Makefile (whole file): new file; generated Makefile for the + documentation directory + * doc/card.tex (whole file): new file; reference card for Rudel; + source + * doc/card.pdf (whole file): new file; reference card for Rudel; + PDF + +2009-09-04 Jan Moringen + + * rudel-interactive.el (rudel-read-document): added comment + (rudel-allocate-buffer-clear-existing): handle the case in which + case a buffer with the desired name exists and is attached to a + different document; added some comments + + * rudel-mode.el (header): list all provided modes; bump version + (require rudel-hooks): required for global hooks + (rudel-mode-line-publish-state-string): new variable; buffer + local, holds publish state string for buffer + (rudel-mode-line-publish-state--add-indicator-to-mode-line): new + function; add publish state indicator to mode line + (rudel-mode-line-publish-state--remove-indicator-from-mode-line): + new function; remove publish state indicator from mode line + (rudel-mode-line-publish-state--update-string): new function; + update publish state indicator according to buffer state + (rudel-mode-line-publish-state--document-attach): new function; + handle document attaching to buffer + (rudel-mode-line-publish-state--document-detach): new function; + handle document detaching from buffer + (rudel-mode-line-publish-state-minor-mode): new minor mode; + displays publish state of buffer in mode line + (global-rudel-mode-line-publish-state-mode): new minor mode; + globalization of `rudel-mode-line-publish-state-minor-mode' + (rudel-minor-keymap): menu entries for buffer local and global + mode line publish state mode + + * rudel.el (require rudel-hooks): required or hook variables + (rudel-session-start-hook): moved to rudel-hooks.el + (rudel-session-end-hook): moved to rudel-hooks.el + * rudel-hooks.el (whole file): new file; contains hook variables + and mapping from object hooks to global hooks + * Project.ede (target rudel): added file rudel-hooks.el + * Makefile (target rudel_LISP): added file rudel-hooks.el + +2009-09-03 Jan Moringen + + * rudel-mode.el (rudel-header-subscriptions-minor-mode): improved + documentation string + +2009-08-30 Jan Moringen + + * zeroconf/Makefile (whole file): new file; generated Makefile for + the zeroconf subproject + + * wave/rudel-wave.el (whole file): new file; main class of the + wave backend + * wave/Project.ede (whole file): new file; project file for the + wave subproject + * wave/Makefile (whole file): new file; generated Makefile for the + wave subproject + * Project.ede (target autoloads): added wave directory + * Makefile (LOADDIRS): added wave and zeroconf directories + (VERSION): bumped to 0.2 + (target all): added wave and zeroconf + (tags): descend into zeroconf and wave directories + (dist): descend into zeroconf and wave directories + +2009-08-28 Jan Moringen + + * rudel.el (rudel-change-color): run the change hook of the self + user + + * rudel-overlay.el (rudel-overlay-set-face-attributes): check the + face actually exists + +2009-08-27 Jan Moringen + + * rudel-mode.el (rudel-header-subscriptions-use-images): new + variable; controls whether images are used when formatting user + names + (rudel-header-subscriptions-separator): new variable; separator + used when formatting user names + (rudel-header-subscriptions--make-format): new function; make a + format object for header line + (rudel-header-subscriptions--update-from-document): new function; + update header line from document + (rudel-header-subscriptions--update-from-buffer): new function; + update header line from buffer + (rudel-header-subscriptions--options-changed): new function; + update header line in all buffers that have + rudel-header-subscriptions-minor-mode enabled after customization + option change + (rudel-header-subscriptions--user-change): new function; update + header line after a user object change + (rudel-header-subscriptions--add-user): new function; watch newly + subscribed user and update header line + (rudel-header-subscriptions--remove-user): new function; stop + watching user and update header line + (minor mode rudel-header-subscriptions-minor-mode): new minor + mode; display subscribed users in buffer's header line + (rudel-header-subscriptions--attach): new function; enable header + subscription minor mode when attaching + (rudel-header-subscriptions--detach): new function; disable header + subscription minor mode when detaching + (rudel-header-subscriptions--add-document): new function; monitor + attaching/detaching of new document + (rudel-header-subscriptions--remove-document): new function; stop + monitoring attaching/detaching of new document + (rudel-header-subscriptions--session-start): new function; watch + documents being added/removed to/from the session + (rudel-header-subscriptions--session-end): new function; stop + watching documents being added/removed to/from the session + (minor mode global-rudel-header-subscriptions-mode): global minor + mode that controls `rudel-header-subscriptions-minor-mode' in + buffers + (advice global-rudel-header-subscriptions-mode): controls + adding/removing watches for added/removed documents when the + global mode is enabled/disabled + (rudel-minor-keymap): Added entries for + `rudel-header-subscriptions-minor-mode' and + `global-rudel-header-subscriptions-mode' + +2009-08-26 Jan Moringen + + * . (property svn:ignore): added patterns + * jupiter (property svn:ignore): added patterns + * obby (property svn:ignore): added patterns + + * rudel.el (rudel-session::add-user-hook): new slot; add user hook + function list + (rudel-session::remove-user-hook): new slot; remove user hook + function list + (rudel-session::add-document-hook): updated documentation string + (rudel-session::remove-document-hook): updated documentation + string + (rudel-session::rudel-add-user): run add user hook + (rudel-session::rudel-remove-user): run remove user hook + + * rudel.el (rudel-session-start-hook): new variable; session start + hook function list + (rudel-session-end-hook): new variable; session end hook function + list + (rudel-join-session): run session start hook + (rudel-end-session): run session end hook + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document_create): call + `generate-new-buffer-name' on complete buffer name; not just name + part + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/subscribe): send + number of bytes instead of number of characters + + * obby/rudel-obby-client.el + (rudel-obby-client-state-document-synching::remaining-bytes): + fixed initarg num-bytes -> remaining-bytes + + * rudel.el (rudel-session::add-document-hook): new slot; run when + a document gets added to the session + (rudel-session::remove-document-hook): new slot; run when a + document gets removed from the session + (rudel-session::rudel-add-document): run add document hook + (rudel-session::rudel-remove-document): run remove document hook + (rudel-document::unsubscribe-hook): fixed initarg subscribe-hook + -> unsubscribe-hook + +2009-08-25 Jan Moringen + + * www/index.html (Download): link to http://bazaar-vcs.org; + improved wording + + * www/index.html (Download): changed link to source; add browse + source link for bzr + + * INSTALL (REQUIREMENTS): precise CEDET release version + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_user_colour): run change hook + after setting slot + (rudel-obby-server::rudel-remove-client): run change hook after + setting slot + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/net6_client_part): run + change hook after setting slots + (rudel-obby-client-state-idle::rudel-obby/obby_user_colour): run + change hook after setting slot + * rudel.el (class rudel-user): derive from `rudel-hook-object' + (rudel-user::change-hook): new slot; stores change hook functions + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_user_colour): cosmetic changes + (rudel-obby-client::rudel-obby/obby_document/subscribe): use + `rudel-add-user' + (rudel-obby-client::rudel-obby/obby_document/unsubscribe): use + `rudel-remove-user' + (rudel-obby-server::rudel-check-username-and-color): whitespace + fixes + +2009-08-23 Jan Moringen + + * rudel.el (rudel-document::attach-hook): new slot; attach hook + function list + (rudel-document::detach-hook): new slot; detach hook function list + (rudel-document::rudel-attach-to-buffer): run hook `attach-hook' + (rudel-document::rudel-detach-from-buffer): run hook `detach-hook' + (rudel-document::rudel-add-user): improved documentation string + (rudel-document::rudel-remove-user): improved documentation string + + * obby/rudel-obby.el + (rudel-obby-user::eieio-speedbar-object-buttonname): fixed typo + +2009-08-21 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/obby_document/subscribe): + call `rudel-add-user' + (rudel-obby-client-state-idle::rudel-obby/obby_document/unsubscribe): + call `rudel-remove-user' + * rudel.el (class rudel-document): mixin rudel-hook-object + (rudel-document::subscribe-hook): new slot; subscribe-hook + function list + (rudel-document::unsubscribe-hook): new slot; unsubscribe-hook + function list + (rudel-document::rudel-add-user): new method; add user to list of + subscribed users and run subscribe-hook + (rudel-document::rudel-remove-user): new method; remove user from + list of subscribed users and run unsubscribe-hook + + * obby/rudel-obby.el (header): cosmetic changes + (include rudel-icons): `rudel-display-string' uses icons + (rudel-obby-user::eieio-speedbar-object-buttonname): use + `rudel-display-string' + (rudel-obby-user::rudel-display-string): new method; textual + representation of user object + (rudel-obby-parse-message): cosmetic changes + * rudel.el (include rudel-icons): `rudel-display-string' uses + icons + (rudel-user::rudel-display-string): new method; textual + representation of user object + + * rudel-util.el (rudel-hook-object): new class; abstract mixin for + classes that offer hooks + (rudel-hook-object::object-add-hook): new method; add function to + hook list + (rudel-hook-object::object-remove-hook): new method; remove + function from hook list + (rudel-hook-object::object-run-hook-with-args): new method; run + hook functions + +2009-08-20 Jan Moringen + + * icons/plaintext.svg (new file): plaintext icon + * icons/person.svg (new file): person icon + * icons/encrypted.svg (new file): encrypted icon + * icons/document.svg (new file): document icon + * icons/disconnected.svg (new file): disconnected icon + * icons/connected.svg (new file): connected icon + * rudel-icons.el (new file): loading icons + * Project.ede (target rudel): added rudel-icons.el + +2009-08-19 Jan Moringen + + * rudel.el (rudel-join-session): renamed local variable backend to + session-initiation-backend + +2009-08-17 Jan Moringen + + * obby/rudel-obby-state.el (rudel-obby-state::rudel-accept): fixed + format of warning message + + * rudel-state-machine.el (require working): needed by + `rudel-state-wait' + + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/obby_user_colour): set + face attributes + * rudel.el (rudel-change-color): set face attributes + * rudel-overlay.el (rudel-overlay-make-face): use + `rudel-overlay-set-face-attributes' + (rudel-overlay-set-face-attributes): new function; set face + attributes + + * rudel-overlay.el (rudel-overlay-author-set-properties): call + `rudel-overlay-make-face-symbol' + (rudel-overlay-make-face-symbol): new function; return face symbol + +2009-08-16 Jan Moringen + + * rudel-overlay.el (rudel-overlay-author-display): option that + controls display of author overlays + (rudel-make-author-overlay): call + `rudel-overlay-author-set-properties' to set the overlay + properties + (rudel-overlay-author-set-properties): new function; set overlay + properties; respects rudel-overlay-author-display + (rudel-overlay-author-update): new function; update overlay + properties based on associated user object + (rudel-overlay-options-changed): new function; call + `rudel-overlay-author-update' on all Rudel overlays in all buffers + * rudel-mode.el (header): cosmetic changes + (rudel-minor-menu): added menu entry to toggle display of author + overlays + + * rudel-overlay.el (rudel-make-author-overlay): use `intern' + instead of `make-symbol' when allocating the face name; this way, + faces can actually be created lazily + (rudel-overlay-make-face): call `make-face' for the new face + + * obby/rudel-obby-client.el + (rudel-obby-client-state-document-synching::object-print): fixed + slot name remaining-bytes + + * rudel.el (rudel-host-session): the backend object is the cdr of + the result of `rudel-backend-choose' + +2009-08-15 Jan Moringen + + * telepathy/rudel-telepathy.el (header): added file comment + * obby/rudel-obby-state.el (header): fixed email address + (whole file): whitespace fixes + * jupiter/jupiter.el (header): cosmetic changes + (whole file): whitespace fixes + * rudel-util.el (header): cosmetic changes + * rudel-mode.el (header): cosmetic changes + * rudel-errors.el (header): fixed type + (whole file): whitespace fixes + + * obby/rudel-obby.el (rudel-ask-connect-info): added optional + argument info; do not ask for things that are already specified in + info + (autoload): register obby service with the Zeroconf backend + * zeroconf/rudel-zeroconf.el (new file): Zeroconf session + initiation for Rudel + * zeroconf/Project.ede (new file): subproject zeroconf + * rudel.el (rudel-join-session): call `rudel-ask-info' to augment + connect info + * Project.ede (target autoloads): added directory zeroconf + * INSTALL (INSTALLING): mention zeroconf subdirectory + (COMPILING): mention zeroconf target + + * rudel-backend.el (rudel-backend-factory::rudel-get-backend): + return backend as a cons + (rudel-backend-get): new function; convenience function for + getting backends + + * obby/rudel-obby.el (header): extended commentary and history + (rudel-obby-version): bumped to 0.2 + (rudel-obby-backend::initialize-instance): set :version slot in + constructor instead of using obsolete lambda expression in + initform + +2009-08-14 Jan Moringen + + * Project.ede (project rudel): bumped version to 0.2; added + mailing list and path to web files + + * rudel-backend.el (rudel-backend-factory): do not initialize + backends with lambda expression + (rudel-backend-factory::initialize-instance): new method; + initialize backends + (rudel-backend-cons-p): use `object-p' instead of `eieio-object-p' + (rudel-backend-dump): changed format slightly + +2009-08-13 Jan Moringen + + * rudel.el (include rudel-session-initiation): required for + `rudel-join-session' + (rudel-join-session): mostly rewritten; moved user interaction to + `interactive' form + * rudel-session-initiation.el (new file): session initiation + backend interface and high-level programming interface + * Project.ede (target rudel): added rudel-session-initiation.el + * Makefile (rudel_LISP): added rudel-session-initiation.el + + * rudel-interactive.el (rudel-read-session): discriminate sessions + vs. session generating objects using `rudel-backend-cons-p' + + * rudel-backend.el (rudel-backend-cons-p): new function; checks + whether a cons consists of a backend name and object + +2009-08-12 Jan Moringen + + * rudel-interactive.el (rudel-read-session): new function; read + session by name and return it + + * rudel-interactive.el (rudel-read-backend): argument backends is + no longer optional; always return a cons of backend name and + object; updated documentation string + (whole file): whitespace fixes + * rudel-backend.el (rudel-backend-choose): always return a cons of + backend name and object; updated documentation string + +2009-08-11 Jan Moringen + + * rudel.el (file header): added project URL + (whole file): improved some comments + +2009-08-10 Jan Moringen + + * rudel.el (include eieio-base): needed for eieio-named + +2009-08-04 Jan Moringen + + * rudel-state-machine.el (header section commentary): updated + (rudel-state-machine::initialize-instance): use + `rudel--switch-to-return-value' to allow immediate switch to + another state + (rudel-state-machine::rudel-switch): use + `rudel--switch-to-return-value' to switch to successor state + (rudel-state-machine::rudel--switch-to-return-value): new function + switch to successor state for different kinds of specifications of + the successor state + +2009-08-03 Jan Moringen + + * obby/rudel-obby.el (require rudel-backend): now necessary + (require rudel-protocol): now necessary + (class rudel-obby-backend): now derived from `rudel-backend'; + autoloaded + (autoloading): use `rudel-add-backend' + * rudel.el (require rudel-backend): backends have their own file + (class rudel-backend): moved to rudel-backend.el + (rudel-load-backends): moved to rudel-backend.el + (rudel-suitable-backends): moved to rudel-backend.el + (rudel-choose-backend): moved to rudel-backend.el + (rudel-join-session): use `rudel-backend-choose' + (rudel-host-session): use `rudel-backend-choose' + + * rudel-protocol.el (new file): interface for Rudel protocol + backends + * Project.ede (target rudel): added rudel-protocol.el + * Makefile (rudel_LISP): added rudel-protocol.el + + * rudel-backend.el (rudel-backend-factory::rudel-get-backend): + improved documentation string + (rudel-backend-factory::rudel-suitable-backends): improved + documentation string + (rudel-backend-suitable-backends): improved documentation string + (rudel-backend-choose): When only one backend matches, do not + check interactivity using `interactive-p', that does not work; + call `sit-for' correctly + +2009-08-02 Jan Moringen + + * jupiter/Makefile (whole file): regenerated; reflects CEDET + changes + * rudel-backend.el (new file): generic backend management, query + and loading functions + * Project.ede (target rudel): added rudel-backend.el to sources + * Makefile (rudel_LISP): added rudel-backend.el + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/net6_client_login): use slot + :object-name instead of calling object-name-string + (rudel-obby-server::rudel-add-context): use slot :object-name + instead of calling object-name-string + * obby/rudel-obby-client.el + (rudel-obby-client-state-idle::rudel-obby/obby_document/rename): + use slot :object-name instead of calling object-name-string + (rudel-obby-connection::rudel-add-context): use slot :object-name + instead of calling object-name-string + (rudel-obby-connection::rudel-publish): use slot :object-name + instead of calling object-name-string + * rudel.el (class rudel-user): added base class eieio-named for + virtual slot :object-name; made abstract + (class rudel-document): added base class eieio-named for virtual + slot :object-name + * rudel-overlay.el (rudel-make-author-overlay): use slot + :object-name instead of calling object-name-string + + * rudel-state-machine.el + (rudel-state-machine::initialize-instance): use &rest slots + instead of just slots + +2009-07-15 Jan Moringen + + * rudel.el (rudel-document::rudel-detach-from-buffer): call + `rudel-overlays-remove-all'; remove `rudel-unpublish-buffer' hook + early + * rudel-overlay.el (rudel-overlays-remove-all): new function; + remove all overlays from the current buffer + (whole file): cosmetic changes; typo fixes; whitespace fixes + + * obby/rudel-obby.el (rudel-obby-document::rudel-unique-name): + Check `next-method-p' before calling the next method + * obby/rudel-obby-client.el + (rudel-obby-connection::initialize-instance): Check + `next-method-p' before calling the next method + (rudel-obby-connection::rudel-register-state): Check + `next-method-p' before calling the next method + (rudel-obby-connection::rudel-disconnect): Check + `next-method-p' before calling the next method + * rudel.el (rudel-client-session::rudel-end): Check + `next-method-p' before calling the next method + +2009-07-13 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-backend::rudel-connect): only + start the network process after everything is ready; wait for the + connection state machine to reach a success or error state + (rudel-obby-backend::rudel-host): cosmetic changes + (class rudel-obby-user): cosmetic changes + * rudel.el (rudel-join-session): reversed order of creation for + session and connection; do not catch errors to give error messages + a chance + + * jupiter/jupiter-insert.el (jupiter-insert::jupiter-transform): + cosmetic changes + (whole file): whitespace fixes + + * rudel.el (rudel-session::rudel-find-user): added documentation + string; cosmetic changes + (rudel-session::rudel-find-document): added documentation string; + cosmetic changes + (whole file): whitespace fixes + +2009-07-12 Jan Moringen + + * rudel-speedbar.el (eieio-speedbar-object-buttonname): use + `rudel-unique-name' instead of `object-name-string' + + * obby/rudel-obby-state.el (rudel-enter): return nil + + * obby/rudel-obby-client.el + (rudel-obby-client-state-joining::rudel-enter): return nil + (rudel-obby-client-state-join-failed::rudel-enter): return nil + (rudel-obby-client-state-session-synching::rudel-enter): return + nil + (rudel-obby-client-state-session-synching::object-print): new + method; add number of remaining items to string representation + (rudel-obby-client-state-subscribing::rudel-enter): nil + (rudel-obby-client-state-document-synching::rudel-enter): nil + (rudel-obby-client-state-document-synching::object-print): new + method; add number of remaining bytes to string representation + +2009-07-11 Jan Moringen + + * obby/rudel-obby-util.el (with-parsed-arguments): added debug + declaration + (whole file): whitespace fixes + * rudel-util.el (rudel-assemble-line-fragments): added debug + declaration + (rudel-loop-lines): added debug declaration + (rudel-loop-chunks): fixed documentation string; added debug + declaration + + * rudel-state-machine.el (rudel-no-start-state): new error symbol + (rudel-state-machine::initialize-instance): try hard to find a + suitable start sate; call `rudel-switch' instead of just + `rudel-enter' + (rudel-state-machine::rudel-switch): always return the new current + state; accept successor state from `rudel-enter' + (rudel-state-machine::object-print): new method; add current state + of state machine to string representation + (rudel-state-machine::rudel-state-wait): whitespace fixes + +2009-07-07 Jan Moringen + + * obby/rudel-obby.el (class rudel-obby-backend): better + documentation string + (rudel-obby-backend::rudel-ask-connect-info): added documentation + string + (rudel-obby-backend::rudel-connect): added documentation string + (rudel-obby-backend::rudel-ask-host-info): added documentation + string + (rudel-obby-backend::rudel-host): added documentation string + (rudel-obby-backend::rudel-make-document): added documentation + string + (rudel-obby-send): cosmetic changes + (whole file): whitespace fixes + +2009-07-05 Jan Moringen + + * INSTALL (REQUIREMENTS): added Emacs itself and GNUTls + + * rudel-tls.el (rudel-tls-start-tls): added a message + (rudel-tls-wait-handshake): switch to filter + `rudel-tls-established' instead of restoring the original filter + (rudel-tls-established): new function; filters GNUTls messages in + encrypted connections + (whole file): whitespace fixes + +2009-07-04 Jan Moringen + + * README (INTRODUCTION): extended a bit + (JOINING A SESSION): added prompt/input example and an explanation + of encryption issues in the obby backend + (KNOWN BUGS): new section; no known bugs yet, though + +2009-06-17 Jan Moringen + + * obby/rudel-obby-client.el (require rudel-state-machine): the + connection now is a state machine + (require rudel-obby-errors): used when analyzing login failures + (require rudel-obby-state): useful base classes for states + (rudel-obby-client-state-new): new class; initial state of new + connections + (rudel-obby-client-state-encryption-negotiate): new class; + first encryption state + (rudel-obby-client-state-encryption-start): new class; second + encryption state + (rudel-obby-client-state-joining): new class + (rudel-obby-client-state-join-failed): new class; entered after + failed login attempt + (rudel-obby-client-state idle): new class; default state of + established connections + (rudel-obby-client-state-session-synching): new class; + synchronizing session state to client + (rudel-obby-client-state-subscribing): new class; first state of + document subscription + (rudel-obby-client-state-document-synching): new class; + synchronizing document state to client + (rudel-obby-client-connection-states): new variable; alist of + name symbols and associated state classes + (rudel-obby-connection::initialize-instance): register states + (rudel-obby-connection::rudel-register-state): new method; set + connection slot of state to its connection + (rudel-obby-connection::rudel-add-context): cleanup + (rudel-obby-connection::rudel-message): dispatch message using + `rudel-accept' + (rudel-obby-connection::rudel-subscribe-to): initiate subscription + by switching to state 'subscribing' + + * obby/rudel-obby-state.el (rudel-obby-document-handler): new + class; mixin class that provides handling of obby 'document' + messages + + * rudel-state-machine.el + (rudel-state-machine::initialize-instance): find start state in + slots and switch into it + (while-file): whitespace fixes + +2009-06-15 Jan Moringen + + * www/index.html (section download): fixed link to download area + (whole file): whitespace cleanup + + * obby/rudel-obby-state.el (new file): finite state machine states + for the rudel backend + * obby/Project.ede (target rudel/obby): added rudel-obby-state.el + * obby/Makefile (target obby_LISP): added rudel-obby-state.el + + * rudel-util.el (require rudel-errors): required for dispatch + errors + (symbol rudel-dispatch-error): new condition symbol for dispatch + errors + (rudel-dispatch): new function; dispatch to method based on method + name + (whole file): whitespace fixes + +2009-06-14 Jan Moringen + + * rudel-mode.el (global-rudel-minor-mode): removed; the variable + is created by `define-minor-mode' + (minor-mode-alist): managed by `define-minor-mode' + + * rudel-mode.el (require easy-mmode): used to define global rudel + minor mode + (rudel-minor-keymap): cosmetic changes + (global-rudel-minor-mode): use `define-minor-mode' to define the + mode + (whole file): whitespace cleanup + + * rudel-telepathy.el (whole file): moved to + telepathy/rudel-telepathy.el + * telepathy/rudel-telepathy.el (whole file): moved from + rudel-telepathy.el + + * obby/rudel-obby-server.el (whole file): whitespace cleanup + * obby/rudel-obby-client.el (require rudel-obby): removed; + unnecessary + (rudel-obby-connection::initialize-instance): use &rest for `slots' + argument; cosmetic changes + (rudel-obby-connection::rudel-change-color-): use own `rudel-send' + method instead of the socket's + (rudel-obby-connection::rudel-subscribe-to): cosmetic changes + (rudel-obby-connection::rudel-unsubscribe-from): cosmetic changes + (rudel-obby-connection::rudel-local-operation): cosmetic changes + (whole file): whitespace cleanup + +2009-06-13 Jan Moringen + + * rudel-errors.el (new file): error data + * rudel-state-machine.el (new file): a simple finite state machine + implementation + * Project.ede (target rudel): added rudel-errors.el and + rudel-state-machine.el + * Makefile (target rudel_LISP): added rudel-errors.el and + rudel-state-machine.el + +2009-06-12 Jan Moringen + + * obby/rudel-obby-server.el (require rudel-obby-errors): now + required + (rudel-obby-client::rudel-obby/net6_client_login): check username + and color before adding the client + (rudel-obby-server::rudel-check-username-and-color): new method; + make sure username and color are valid and there are no duplicates + * obby/rudel-obby-errors.el (new file): error data for the obby + backend + * obby/Project.ede (rudel/obby): added rudel-obby-errors.el + * obby/Makefile (obby_LISP): added rudel-obby-errors.el + + * rudel.el (rudel-user::rudel-color): added accessor `rudel-color' + + * obby/rudel-obby-server.el (require cl): required + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/net6_client_login): send suffices + of synchronized documents + +2009-06-11 Jan Moringen + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document_create): send + document/rename message to client when the document suffix changes + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/net6_client_login): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_user_colour): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document_create): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document/subscribe): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document/unsubscribe): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document/record): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document/record/ins): use + `with-parsed-arguments' + (rudel-obby-client::rudel-obby/obby_document/record/del): use + `with-parsed-arguments' + + * obby/rudel-obby-server.el (header): fixed version + +2009-06-10 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-local-operation): fixed wording in + comment + + * www/images/development.png (whole file): changed size 48x48 -> + 64x64 + * www/images/development.svg (whole file): changed size 48x48 -> + 64x64 + * www/images/download.png (whole file): changed size 48x48 -> + 64x64 + * www/images/download.svg (whole file): changed size 48x48 -> + 64x64 + * www/images/info.png (whole file): changed size 48x48 -> 64x64 + * www/images/info.svg (whole file): changed size 48x48 -> 64x64 + + * index.html (section introduction): wording fixes; link to Gobby + (whole file): removed external link class for sourceforge links + (section download): added link to INSTALL file in svn code browser + (section footer): fixed copyright + + * compatibility.html (section footer): fixed copyright + +2009-06-09 Jan Moringen + + * INSTALL (section REQUIREMENTS): removed ERT which is not + currently used + (section INSTALL): some wording and file name fixes + (section COMPILING): precise make command + + * www/index.html (section development): fixed mailing list and + issue tracker links; removed email address + + * www/compatibility.html (head): fixed charset + (section semantic): added missing

tag + + * www/compatibility.html (new file): compatibility information + * www/index.html (new file): start page + * www/style.css (new file): stylesheet + * www/images/development.png (new file): development icon + * www/images/development.svg (new file): development icon + * www/images/download.png (new file): download icon + * www/images/download.svg (new file): download icon + * www/images/email-link.png (new file): icon for email links + * www/images/external-link.png (new file): icon for external links + * www/images/info.png (new file): info icon + * www/images/info.svg (new file): info icon + * www/images/screenshot.png (new file): screenshot for the start + page + + * obby/rudel-obby-serverl.el + (rudel-obby-client::rudel-obby/obby_document_create): find unique + suffix for the new document; send suffix to clients + + * obby/rudel-obby.el (header): fixed license text + * obby/rudel-obby-util.el (header): fixed license text + * obby/rudel-obby-server.el (header): fixed license text + * obby/rudel-obby-client.el (header): fixed license text + * jupiter/jupiter.el (header): fixed license text + * jupiter/jupiter-operation.el (header): fixed license text + * jupiter/jupiter-nop.el (header): fixed license text + * jupiter/jupiter-insert.el (header): fixed license text + * jupiter/jupiter-delete.el (header): fixed license text + * jupiter/jupiter-compound.el (header): fixed license text + * rudel.el (header): fixed license text + * rudel-util.el (header): fixed license text + * rudel-tls.el (header): fixed license text + * rudel-telepathy.e (header): fixed license text + * rudel-speedbar.el (header): fixed license text + * rudel-overlay.el (header): fixed license text + * rudel-operators.el (header): fixed license text + * rudel-operations.el (header): fixed license text + * rudel-mode.el (header): fixed license text + * rudel-interactive.el (header): fixed license text + * rudel-compat.el (header): fixed license text + + * obby/rudel-obby-util.el (require cl): now required + (generic rudel-obby-char->byte): new generic; char positions -> + byte positions + (jupiter-insert::rudel-obby-char->byte): new method; char + positions -> byte positions + (jupiter-delete::rudel-obby-char->byte): new method; char + positions -> byte positions + (jupiter-compound::rudel-obby-char->byte): new method; char + positions -> byte positions + (jupiter-nop::rudel-obby-char->byte): new method; char positions + -> byte positions + (generic rudel-obby-byte->char): new generic; byte positions -> + char positions + (jupiter-insert::rudel-obby-byte->char): new method; byte + positions -> char positions + (jupiter-delete::rudel-obby-byte->char): new method; byte + positions -> char positions + (jupiter-compound::rudel-obby-byte->char): new method; byte + positions -> char positions + (jupiter-nop::rudel-obby-byte->char): new method; byte positions + -> char positions + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-local-operation): call + `rudel-obby-char->byte' before processing + (rudel-obby-connection::rudel-remote-operation): call + `rudel-obby-byte->char' before processing + * rudel.el (rudel-buffer-change-workaround-data): new variable; + holds change data for later use + (rudel-document::rudel-attach-to-buffer): add + `rudel-buffer-change-workaround' to 'before-change-functions' + (rudel-document::rudel-detach-from-buffer): remove + `rudel-buffer-change-workaround' from 'before-change-functions' + (rudel-buffer-change-workaround): new function; stores change data + for later use + +2009-06-07 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_client_join): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/net6_client_part): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_welcome): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_sync_init): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_sync_usertable_user): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_user_colour): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_sync_doclist_document): + use `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document_create): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document_remove): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document): use + `with-parsed-arguments'; cleanup + (rudel-obby-connection::rudel-obby/obby_document/rename): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/subscribe): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/unsubscribe): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/sync_chunk): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/record): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/record/ins): use + `with-parsed-arguments' + (rudel-obby-connection::rudel-obby/obby_document/record/del): use + `with-parsed-arguments' + +2009-06-06 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_client_part): use `eql', + not `=' when calling `rudel-find-user' since the client id can be + nil + + * obby/rudel-obby-util.el (require jupiter): silence byte compiler + + * obby/rudel-obby-util.el (rudel-obby-dispatch): moved inside file + (with-parsed-arguments): new macro; executed forms with variables + bound to parsed arguments + +2009-06-04 Jan Moringen + + * rudel.el (require rudel-interactive): interactive functions use + `rudel-read-backend' and `rudel-read-document' + + * rudel.el (rudel-buffer-document): mark as permanent local + variable to prevent deletion in the event of a major-mode change + (rudel-document::rudel-attach-to-buffer): add (buffer-locally) + `rudel-handle-major-mode-change' to 'change-major-mode-hook' such + that it can repair damage caused by major-mode changes + (rudel-document::rudel-detach-from-buffer): remove + `rudel-handle-major-mode-change' from 'change-major-mode-hook' + (rudel-mode-changed-buffers) new variable; temporarily stores + buffers that underwent major-mode changes + (rudel-handle-major-mode-change): new function; schedules buffers + for repair after major-mode changes + (rudel-after-major-mode-change): new function; repairs buffer + objects after major-mode changes + +2009-06-03 Jan Moringen + + * rudel.el (rudel-buffer-has-document-p): use `buffer-local-value' + (rudel-buffer-document): use `buffer-local-value' + (rudel-set-buffer-document): added documentation string + +2009-06-02 Jan Moringen + + * rudel.el (rudel-handle-buffer-change): There are three cases + now: insert, delete and arbitrary changes; arbitrary changes + generate a delete and insert operation + + * rudel-mode.el (rudel-minor-keymap): added some comments + (global-rudel-minor-mode): extended documentation string; cleaned + up code; added comments + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_client_part): fixed typo + in variable name client-id-numeric + +2009-05-28 Jan Moringen + + * obby/rudel-obby-util.el (header): Fixed version (1.0 -> 0.1) + + * obby/rudel-obby-client.el (header): Fixed version (1.0 -> 0.1) + (rudel-obby-connection::rudel-obby/obby_document/record/split): + introduced temporary variable + +2009-??-?? Jan Moringen + + * rudel.el (rudel-buffer-document): removed; replaced by + rudel-buffer-documents hash-table + (rudel-buffer-documents): new variable; a hash-table, which + associates documents to buffers + (rudel-buffer-has-document-p): + (rudel-buffer-document): + (rudel-set-buffer-document): + +2009-03-16 Jan Moringen + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_client_part): do not crash + if the client id cannot be found + + * obby/rudel-obby.el (rudel-obby-backend::rudel-make-document): + specify value 1 for slot suffix + (rudel-obby-document::suffix): new slot; contains the suffix + number of the document + (rudel-obby-document::rudel-unique-name): new method; return + unique name based on document name and suffix + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/obby_sync_doclist_document): do + not ignore the suffix when creating the document object + (rudel-obby-connection::rudel-obby/obby_document_create): do not + ignore the suffix when creating the document object + (rudel-obby-connection::rudel-obby/obby_document/rename): change + document name and suffix as requested + * rudel.el (rudel-document::rudel-unique-name): new method; + returns a unique name for the document + (rudel-document::rudel-suggested-buffer-name): new method; returns + a suggested name for the buffer attached to the document + (rudel-subscribe): use `rudel-suggested-buffer-name' instead of + the object name + * rudel-interactive.el (rudel-read-document): use the unique names + of the documents instead of the object names + +2009-02-27 Jan Moringen + + * rudel.el (rudel-document::rudel-attach-to-buffer): add hook to + detach document from the buffer when the buffer is killed + (rudel-document::rudel-detach-from-buffer): remove unpublish + function kill buffer hook + +2009-02-23 Jan Moringen + + * rudel.el (rudel-document): minor cleanup + (rudel-document::rudel-attach-to-buffer): stylistic changes + (rudel-document::rudel-detach-from-buffer): fixed argument order in + call to `rudel-set-buffer-document' + + * obby/rudel-obby-server.el + (rudel-obby-server::rudel-remove-client): Make sure there is a + user object before setting the status to offline + + * obby/rudel-obby-client.el (rudel-obby/net6_encryption_failed): + only fail if encryption has been requested in the first + place. otherwise, just carry on + + * rudel.el (rudel-document::rudel-attach-to-buffer): use + `rudel-set-buffer-document' + (rudel-document::rudel-detach-from-buffer): use + `rudel-set-buffer-document' + (rudel-buffer-has-document-p): new function; test whether a buffer + has an associated document object + (rudel-buffer-document): new function; returns associated document + object of a buffer + (rudel-set-buffer-document): new functions; sets associated + document object of a buffer + (rudel-handle-buffer-change): use `rudel-buffer-has-document-p' + (rudel-publish-buffer): use `rudel-buffer-has-document-p' + (rudel-unpublish-buffer): use `rudel-buffer-has-document-p' and + `rudel-buffer-document' + * rudel-mode.el (rudel-minor-keymap): use + `rudel-buffer-has-document-p' + + * obby/rudel-obby-client.el (rudel-obby/obby_document/rename): + new method; dummy implementation + + * obby/rudel-obby-client.el (rudel-obby/net6_client_join): + stylistic change + +2009-02-21 Jan Moringen + + * obby/rudel-obby-util.el (generic rudel-operation->message): new + generic function; serializes an operation + (jupiter-insert::rudel-operation->message): new method + (jupiter-delete::rudel-operation->message): new method + (jupiter-compound::rudel-operation->message): new method + (jupiter-nop::rudel-operation->message): new method + (rudel-message->operation): new function; deserializes an + operation from a received message + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-local-insert): do not construct + message string; use `rudel-operation->message' + (rudel-obby-connection::rudel-local-delete): do not construct + message string; use `rudel-operation->message' + (rudel-obby-connection::rudel-local-operation): new method; + handles operation objects that represent local operations + (rudel-obby-connection::rudel-remote-operation): new method; + handles operation objects that represent remote operations + (rudel-obby-connection::rudel-obby/obby_document/record/ins): + construct operation name correctly; do not call jupiter context to + transform operation + (rudel-obby-connection::rudel-obby/obby_document/record/del): + construct operation name correctly; do not call jupiter context to + transform operation + (rudel-obby-connection::rudel-obby/obby_document/record/split): + new method; handles split operation messages + (rudel-obby-connection::rudel-obby/obby_document/record/noop): new + method; handles nop messages + +2009-02-12 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-backend::rudel-ask-connect-info): + ask whether to encrypt the connection + (rudel-obby-backend::rudel-connect): create connection object + capable of StartTLS encryption when encryption was requested + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_encryption): do not fail + when the server requests encryption + (rudel-obby-connection::rudel-obby/net6_encryption_begin): start + TLS encryption for the connection + (rudel-obby-connection::rudel-obby/net6_encryption_failed): new + method; stub + * rudel-tls.el (new file): StartTLS encryption for Rudel + * Project.ede ("rudel"): added rudel-tls.el + * Makefile (rudel_LISP): added rudel-tls.el + +2009-02-06 Jan Moringen + + * rudel-compat.el (header): fixed email address, keywords, legal + notice and file commentary + +2009-02-05 Jan Moringen + + * obby/rudel-obby.el (rudel-compat): require rudel-compat for + `read-color' + * rudel.el (rudel-compat): require rudel-compat for `read-color' + * rudel-interactive.el (rudel-compat): require rudel-compat for + `read-color' + * rudel-compat.el (new file): compatibility code + * Project.ede (rudel): added rudel-compat.el + * Makefile (rudel_LISP): regenerated: added rudel-compat.el + +2009-02-04 Jan Moringen + + * obby/rudel-obby.el (require rudel) + * obby/rudel-obby-util.el (require rudel) + * obby/rudel-obby-client.el (require rudel-obby): make compilation + succeed + + * rudel.el (include eieio-speedbar): I need it for now; I should + get rid of it later + + * INSTALL (REQUIREMENTS): added note that CVS version of cedet is + required + (INSTALLING): added subdirectories jupiter and obby in load path + listing; fixed name of autoload file + +2009-02-02 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-backend::rudel-ask-connect-info) + (rudel-obby-backend::rudel-host, rudel-obby-replace-in-string) + * obby/rudel-obby-util.el (rudel-obby-dispatch) + * obby/rudel-obby-server.el (rudel-obby-client::rudel-obby/obby_document) + (rudel-obby-server::rudel-broadcast, rudel-obby-server::rudel-make-user) + * obby/rudel-obby-client.el (rudel-obby-connection::rudel-obby/net6_client_join) + (rudel-obby-connection::rudel-obby/obby_document) + * jupiter/jupiter-operation.el (jupiter-operation) + * rudel.el (rudel-backend, rudel-session, rudel-server-session) + (rudel-connection, rudel-document) + (rudel-document::rudel-attach-to-buffer) + (rudel-document::rudel-detach-from-buffer) + (rudel-document::rudel-insert, rudel-document::rudel-delete) + (rudel-change-color) + * rudel-util.el (rudel-assemble-line-fragments, rudel-loop-lines) + * rudel-overlay.el (rudel-make-author-overlay) + * rudel-interactive.el (rudel-read-backend, rudel-read-user-color) + (rudel-read-user, rudel-read-document): replaced 't by t + + * rudel-operators.el (rudel-overlay-operators::rudel-insert): + Fixed computation of insertion offset when appending to the end of + the buffer string + + * rudel.el (rudel-document::rudel-chunks): fixed invalid access to + last chunk for empty buffer + + * rudel.el (rudel-document::rudel-attach-to-buffer): fixed + incorrect slot reference + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/subscribe): minor + rearrangement of expressions + (rudel-obby-client::rudel-obby/obby_document/unsubscribe): minor + rearrangement of expressions + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/record/ins): added + documentation string + (rudel-obby-client::rudel-obby/obby_document/record/del): added + documentation string + (rudel-obby-server): cosmetic change + + * jupiter/jupiter.el (jupiter-context::jupiter-remote-operation): + improved documentation string; cosmetic changes + + * jupiter/jupiter-insert.el (jupiter-insert::jupiter-transform): + improved some comments + + * rudel.el (rudel-document::rudel-attach-to-buffer): renamed + some variables; added documentation string + (rudel-document::rudel-insert): improved documentation string + (rudel-document::rudel-chunks): do not create chunks when buffer + string is empty; improved comments + (rudel-choose-backend): compare number using `=' not `eq' + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/record/ins): use + `rudel-remote-operation' instead of `rudel-remote-insert' + (rudel-obby-client::rudel-obby/obby_document/record/del): use + `rudel-remote-operation' instead of `rudel-remote-delete' + * obby/rudel-obby-client.el (include rudel-operations): for + rudel-insert-op and rudel-delete-op + (rudel-obby-connection::rudel-obby/obby_document/sync_chunk): use + `rudel-remote-operation' with rudel-insert-op to insert chunks + (rudel-obby-connection::rudel-obby/obby_document/record/ins): use + `rudel-remote-operation' instead of `rudel-remote-insert' + (rudel-obby-connection::rudel-obby/obby_document/record/del): use + `rudel-remote-operation' instead of `rudel-remote-delete' + * jupiter/jupiter-operation.el (include rudel-operations): for + rudel-operation + (jupiter-operation): derived from rudel-operation + (jupiter-operation::jupiter-apply): removed; replaced by generic + `rudel-apply' + * jupiter/jupiter-nop.el (jupiter-nop::jupiter-apply): removed; + replaced by `rudel-apply' + (jupiter-nop::rudel-apply): new method; implements generic + `rudel-apply' + * jupiter/jupiter-insert.el (include rudel-operations): for + jupiter-insert-op + (jupiter-insert): derived from jupiter-insert-op + (jupiter-insert::jupiter-apply): removed; inherited from + jupiter-insert-op + (jupiter-insert::slot-missing): removed; inherited from + jupiter-insert-op + * jupiter/jupiter-delete.el (include rudel-operations): for + jupiter-delete-op + (jupiter-delete): derived from jupiter-delete-op + (jupiter-delete::jupiter-apply): removed; inherited from + jupiter-delete-op + (jupiter-delete::slot-missing): removed; inherited from + jupiter-delete-op + * jupiter/jupiter-compound.el (jupiter-compound::jupiter-apply): + removed; replaced by `rudel-apply' + (jupiter-compound::rudel-apply): new method; implements generic + `rudel-apply' + * rudel.el (include rudel-operations): everything is represented + in terms of operations + (include rudel-operators): operations apply changes to objects + through operators + (rudel-document::rudel-insert): new method; performs insert + operation + (rudel-document::rudel-delete): new method; performs delete + operation + (rudel-document::rudel-local-insert): removed; document does not + deal with aspects other than the actual insert and delete + (rudel-document::rudel-local-delete): removed; document does not + deal with aspects other than the actual insert and delete + (rudel-document::rudel-remote-insert): removed; document does not + deal with aspects other than the actual insert and delete + (rudel-document::rudel-remote-delete): removed; document does not + deal with aspects other than the actual insert and delete + (rudel-document::rudel-local-operation): new method; apply + operation using overlay and connection operators + (rudel-document::rudel-remote-operation): new method; apply + operation using document and overlay operators + (rudel-handle-buffer-change): realize buffer changes using + operations + * rudel-operators.el (new file): collections of operations on + Rudel data types + * rudel-operations.el (new file): operation classes + +2009-02-01 Jan Moringen + + * jupiter/jupiter-insert.el (jupiter-insert::jupiter-transform): + handle jupiter-nop + + * jupiter/jupiter-delete.el (jupiter-delete::jupiter-transform): + in inner cond, use matching pattern but empty body for + no-operation cases; in outer cond, handle jupiter-nop + + * jupiter/jupiter-compound.el (jupiter-compound): now derived from + jupiter-operation; should have been right from the start + +2009-01-31 Jan Moringen + + * rudel.el (rudel-default-username): Default name used when + prompting for user name; required by rudel-interactive + + * rudel-interactive.el (rudel-read-backend): fixed typo + +2009-01-30 Jan Moringen + + * jupiter/jupiter-insert.el (jupiter-insert::jupiter-transform): + fixed two offset calculations + * jupiter/jupiter-delete.el (jupiter-delete::jupiter-transform): + fixed offset calculation + + * rudel.el (rudel-backend::rudel-ask-connect-info): changed from + method to generic + (rudel-backend::rudel-connect): changed from method to generic + (rudel-backend::rudel-ask-host-info): changed from method to + generic + (rudel-backend::rudel-host): changed from method to generic + (rudel-backend::rudel-make-document): changed from method to + generic + (rudel-session::rudel-disconnect): changed from method to generic + (rudel-session::rudel-change-color-): changed from method to + generic + (rudel-session::rudel-publish): changed from method to generic + (rudel-session::rudel-subscribe-to): changed from method to + generic + (rudel-session::rudel-unsubscribe-from): changed from method to + generic + (rudel-session::rudel-local-insert): changed from method to + generic + (rudel-session::rudel-local-delete): changed from method to + generic + (rudel-session::rudel-remote-insert): changed from method to + generic + (rudel-session::rudel-remote-delete): changed from method to + generic + +2009-01-28 Jan Moringen + + * rudel-overlay.el (header): fixed version + (whole file): cosmetic changes + (rudel-author-overlay-p): added documentation string + (rudel-author-overlays): added documentation string + + * rudel-mode.el (rudel-minor-keymap): cosmetic changes + + * rudel-mode.el (rudel-minor-keymap): Separated session + participation and hosting items + + * obby/rudel-obby.el (rudel-obby-long-message-threshold): Added + documentation string + (rudel-obby-long-message-chunk-size): Added documentation string + (rudel-obby-backend::rudel-connect): Do not set process object; + this is done in the `initialize-instance' method of the base class + (rudel-obby-format-color): retrieve color components with + `color-values' + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-remove-context): improved + documentation string + (rudel-obby-connection::rudel-publish): added a comment + (rudel-obby-connection::rudel-subscribe-to): added some comments; + cleaned up code + (rudel-obby-connection::rudel-unsubscribe-from): added a comment + (rudel-obby-connection::rudel-obby/net6_ping): added documentation + string + (rudel-obby-connection::rudel-obby/net6_encryption): added + documentation string + (rudel-obby-connection::rudel-obby/net6_login_failed): added + documentation string + (rudel-obby-connection::rudel-obby/net6_client_part): use `=' + instead of `eq' to compare client ids; fixed documentation string; + improved comments + (rudel-obby-connection::rudel-obby/obby_user_colour): use `=' + instead of `eq' to compare user ids + (rudel-obby-connection::rudel-obby/obby_document/sync_chunk): use + `=' instead of `eq' to compare user ids; use accessor + `user-id-numeric' + + * obby/rudel-obby-util.el (rudel-obby-dispatch): new functions; + dispatches to class methods based on message name; handles errors + properly + * obby/rudel-obby-server.el (rudel-obby-client::rudel-message): + use `rudel-obby-dispatch' to dispatch message + (rudel-obby-client::rudel-obby/obby_document): use + `rudel-obby-dispatch' to dispatch message + (rudel-obby-client::rudel-obby/obby_document/record): use + `rudel-obby-dispatch' to dispatch message + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-message): use `rudel-obby-dispatch' + to dispatch message; moved to a different location + (rudel-obby-connection::rudel-obby/obby_document): use + `rudel-obby-dispatch' to dispatch message + (rudel-obby-connection::rudel-obby/obby_document/record): use + `rudel-obby-dispatch' to dispatch message + + * obby/rudel-obby-util.el (generic rudel-message): made the method + a generic function and updated the documentation string + +2009-01-26 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-document::revision): removed; The + slot is no longer needed + * obby/rudel-obby-server.el (require jupiter): uses jupiter + algorithm + (rudel-obby-client::rudel-obby/obby_document_create): add a + jupiter context for the document + (rudel-obby-client::rudel-obby/obby_document/subscribe): add a + jupiter context for the document + (rudel-obby-client::rudel-obby/obby_document/unsubscribe): remove + the jupiter context associated to the document + (rudel-obby-client::rudel-obby/obby_document/record/ins): + transformed the operation before applying it to the buffer; use + the respective jupiter contexts of the receivers when sending the + operation + (rudel-obby-client::rudel-obby/obby_document/record/del): + transformed the operation before applying it to the buffer; use + the respective jupiter contexts of the receivers when sending the + operation + (rudel-obby-server::contexts): new slot; stores jupiter contexts + for pairs of clients and documents + (rudel-obby-server::initialize-instance): new method; store an + empty hash-table in the `contexts' slot + (rudel-obby-server::rudel-find-context): find the jupiter context + for a pair of a client and a document + (rudel-obby-server::rudel-add-context): add a jupiter context for + a pair of a client and a document + (rudel-obby-server::rudel-remove-context): remove the jupiter + context for a pair of a client and a document + (rudel-obby-context-key): return a list of client id and document + id + * obby/rudel-obby-client.el (require jupiter): uses jupiter + algorithm + (rudel-obby-connection::contexts): new slot; stores jupiter + contexts for documents + (rudel-obby-connection::initialize-instance): new method; store an + empty hash-table in the `contexts' slot + (rudel-obby-connection::rudel-find-context): new method; return + the jupiter context for a document + (rudel-obby-connection::rudel-add-context): new method; add a + jupiter context for a document + (rudel-obby-connection::rudel-remove-context): new method; remove + the jupiter context for a document + (rudel-obby-connection::rudel-publish): add a jupiter context for + the new document + (rudel-obby-connection::rudel-subscribe-to): add a jupiter context + for the new document + (rudel-obby-connection::rudel-unsubscribe-from): remove the + jupiter context associated to the document + (rudel-obby-connection::rudel-local-insert): use revision + information from the jupiter context instead of the document; + supply the operation to the jupiter context + (rudel-obby-connection::rudel-local-delete): use revision + information from the jupiter context instead of the document; + supply the operation to the jupiter context + (rudel-obby-connection::rudel-obby/obby_document/record/ins): + transform the operation using the jupiter context instead of using + it unmodified + (rudel-obby-connection::rudel-obby/obby_document/record/del): + transform the operation using the jupiter context instead of using + it unmodified + +2009-01-22 Jan Moringen + + * obby/rudel-obby-client.el (rudel-obby-connection): removed + redundant slot `socket' (inherited from base class) + +2009-01-21 Jan Moringen + + * rudel-interactive.el (rudel-read-user): added comments + (rudel-allocate-buffer-clear-existing): added documentation string + (rudel-allocate-buffer-make-unique): added documentation string + +2009-01-19 Jan Moringen + + * rudel.el, rudel-util.el, rudel-telepathy.el, rudel-speedbar.el, + rudel-overlay.el, rudel-mode.el, jupiter/jupiter.el, + jupiter/jupiter-operation.el, jupiter/jupiter-nop.el, + jupiter/jupiter-insert.el, jupiter/jupiter-delete.el, + jupiter/jupiter-compound.el, obby/rudel-obby.el, + obby/rudel-obby-util.el, obby/rudel-obby-server.el, + obby/rudel-obby-client.el (header): changed email address + -> + + + * rudel-interactive.el (header): added keywords to file header + comment + + * jupiter/jupiter.el (new file): core Jupiter algorithm + * jupiter/jupiter-operation.el (new file): base class for Jupiter + operations + * jupiter/jupiter-insert.el (new file): insert operation for + Jupiter algorithm + * jupiter/jupiter-delete.el (new file): delete operation for + Jupiter algorithm + * jupiter/jupiter-nop.el (new file): no-operation for Jupiter + algorithm + * jupiter/jupiter-compound.el (new file): compound operation for + Jupiter algorithm + +2009-01-11 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-user::client-id): added rationale + for type (or null integer) + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-obby/net6_client_join): added + documentation string; cosmetic changes + (rudel-obby-connection::rudel-obby/net6_client_part): use accessor + `rudel-client-id' when searching for the user object; set + client-id to nil in the user object; added documentation string + (rudel-obby-connection::rudel-obby/obby_sync_usertable_user): + store parsed user-id and color in temporaries + (rudel-obby-connection::rudel-obby/obby_user_colour):store parsed + color in a temporary; use accessor `rudel-id' when finding the + user object + + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-change-color-): new function; + implements changing the color + + * obby/rudel-obby-util.el + (rudel-obby-socket-owner::rudel-receive): improved documentation + string + +2009-01-05 Jan Moringen + + * INSTALL (REQUIREMENTS): proper list of requirements and sources + from which they can be obtained + (INSTALLING): initial version of installation instructions + (COMPLETING): some notes about compiling + * README (INTRODUCTION): short introduction + (GETTING STARTED): some notes about enabling Rudel, joining and + hosting sessions + +2009-01-04 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-long-message-threshold): new + variable; threshold for message size, above which messages are + sent in multiple chunks + (rudel-obby-long-message-chunk-size): Chunk size used, when + chunking long messages. + (rudel-obby-user::client-id): allow value nil; added accessor; + added documentation string + (rudel-obby-send): new function; handles low-level aspects of + sending obby protocol messages + * obby/rudel-obby-util.el: new file; contains helper + functionality, mainly the class `rudel-obby-socket-owner', which + handles sending and receiving message + * obby/rudel-obby-server.el (includes): replaced rudel-obby with + rudel-obby-util, since it contains `rudel-obby-socket-owner' + (class rudel-obby-client): added base class + `rudel-obby-socket-owner' + (rudel-obby-client::rudel-receive): deleted, the functionality is + provided by the base class `rudel-obby-socket-owner' + (rudel-obby-client::rudel-send): deleted, the functionality is + provided by the base class `rudel-obby-socket-owner' + (rudel-obby-client::rudel-message): new method; called by base + class when a message is received; dispatches to appropriate + handler method + (rudel-obby-client::rudel-obby/obby_user_colour): minor change in + documentation string + * obby/rudel-obby-client.el (includes): replaced rudel-obby with + rudel-obby-util, since it contains `rudel-obby-socket-owner' + (class rudel-obby-connection): added base class + `rudel-obby-socket-owner' + (rudel-obby-connection::rudel-disconnect): just call next method; + it does what this method formerly did + (rudel-obby-connection::rudel-close): new method; end the session, + when the connection is closed + (rudel-obby-connection::rudel-receive): deleted, the functionality + is provided by the base class `rudel-obby-socket-owner' + (rudel-obby-connection::rudel-send): deleted, the functionality is + provided by the base class `rudel-obby-socket-owner' + (rudel-obby-connection::rudel-message): new method; called by + base class when a message is received; dispatches to appropriate + handler method + + * rudel.el (rudel-document::rudel-detach-from-buffer): do nothing, + if the document is not attached to any buffer + + * obby/rudel-obby.el (rudel-obby-user): added missing accessor + `rudel-connected' + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/net6_client_login): transmit number + of synchronization items; transmit list of disconnected users + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/record/ins): + broadcast only to clients, which are subscribed to the document; + send user id of author instead of client id + (rudel-obby-client::rudel-obby/obby_document/record/del): + broadcast only to clients, which are subscribed to the document; + send user id of author instead of client id + (rudel-obby-client::rudel-subscribed-clients-not-self): new + method; return a list of clients subscribed to a document + excluding the client itself. + + * obby/rudel-obby-server.el (rudel-obby-server::next-client-id): + first id should be 1, not 0; fixed initform accordingly + (rudel-obby-server::next-user-id): + first id should be 1, not 0; fixed initform accordingly + + * rudel.el (rudel-document::rudel-chunks): fixed void variable + `chunks-' -> `augmented-chunks' + + * obby/rudel-obby-server.el + (rudel-obby-client::rudel-obby/obby_document/subscribe): send + individual buffer chunks with their respective authors instead of + one large string without author information + * rudel.el (rudel-document::rudel-chunks): new method; return a + list of buffer position ranges and the respective authors, that + wrote the text + +2009-01-03 Jan Moringen + + * obby/rudel-obby.el (rudel-obby-backend::rudel-host): cleanup + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-local-insert): accept arguments + `position' and `data' instead of `from', `to' and `what'; since + position is zero-based, transmit it literally + (rudel-obby-connection::rudel-local-delete): instead of `from' and + `to' accept argument `position'; since position is + zero-based. transmit it literally + (rudel-obby-connection::rudel-obby/obby_document/record): + identified remaining arguments; dispatch actions to appropriate + methods; identify methods by interning their symbols + (rudel-obby-connection::rudel-obby/obby_document/record/ins): new + method; handle remote insert actions + (rudel-obby-connection::rudel-obby/obby_document/record/del): new + method; handle remote delete actions + * rudel.el (includes): include rudel-overlay + (rudel-document::rudel-detach-from-buffer): improved readability + (rudel-document::rudel-local-insert): instead of redundant + arguments `from', `to' and `what' accept only `position' and + `data'; update overlays + (rudel-document::rudel-local-delete): instead of redundant + arguments `from', `to' and `length' accept only `position' and + `length'; update overlays + (rudel-document::rudel-remote-insert): renamed arguments `from' -> + `position', `what' -> `data'; update overlays + (rudel-document::rudel-remote-delete): replaced arguments `from' + and `to' by `position'; update overlays + (rudel-handle-buffer-change): call rudel-local-{insert, delete} + with changed arguments + +2009-01-01 Jan Moringen + + * rudel.el (rudel-session::rudel-unsubscribed-documents): new + method; returns documents, to which the user associated with the + session is not yet subscribed + (rudel-subscribe): when called interactively, use + `rudel-unsubscribed-documents' to offer only unsubscribed + documents in completing read + + * rudel-interactive.el (rudel-read-user-name): new function; read + a user name; could be used to enforce certain constraints on the + name + (rudel-read-user-color): new function; read a user color; could be + used to enforce certain constraints on the color + + * obby/rudel-obby.el (rudel-obby-backend::rudel-ask-host-info): + new method; ask user for port number + (rudel-obby-backend::rudel-host): new method; require obby server + component, make the network process and construct the server + * obby/rudel-obby-server.el (new file): initial revision of obby + server for rudel + * obby/rudel-obby-client.el (header section): added keyword and + x-rcs + (rudel-obby-connection::rudel-publish): new method; send document + to server + (rudel-obby-connection::rudel-unsubscribe-from): send unsubscribe + notification to server + (rudel-obby-connection::rudel-local-insert): cleanup + (rudel-obby-connection::rudel-local-delete): new method; send + delete record to server and increase local revision + (rudel-obby-connection::rudel-obby/obby_document/sync_chunk): + improved user locating code; do not complain, when the user is not + found + (rudel-obby-connection::rudel-obby/obby_document/record): removed + useless debug message + * rudel.el (class rudel-session): update documentation string + (class rudel-server-session): new class; base class for server + sessions + (rudel-choose-backend): fixed void-variable when called + interactively + (rudel-host-session): provided initial implementation, which uses + the selected backend to create a server + (rudel-subscribe): call `set-window-buffer' instead of + `show-buffer' + + * obby/rudel-obby.el (header section): fixed history + (rudel-obby-version): new constant; holds version of the obby + backend + (rudel-obby-protocol-version): new constant; holds the obby + protocol version understood by the backend + (rudel-obby-document::rudel-both-ids): new method; useful when + locating documents by means of owner and document id + + * rudel-mode.el (header section): added keywords + + * rudel-interactive.el (header section): added file comment + +2008-12-30 Jan Moringen + + * rudel.el (class rudel-session): converted to base class for + other session classes; removed slots `connection' and `self' which + are specific for client sessions + (rudel-session::rudel-end): empty now; derived classes do the work + (rudel-session::rudel-add-user): use `object-add-to-list' + (rudel-session::rudel-remove-user): use `object-remove-from-list' + (rudel-session::rudel-add-document): use `object-add-to-list' + (rudel-session::rudel-remove-document): use + `object-remove-from-list' + (class rudel-client-session): derived from `rudel-session'; + additional slots `connection' and `self' + (rudel-client-session::rudel-end): detach buffers from documents + and call `rudel-disconnect' on connection + (class rudel-connection): documentation string + (rudel-connection::rudel-disconnect): remove hook + `after-change-functions' only locally + (rudel-join-session): construct a proper session name; store + backend object in the session; some comments + + * obby/rudel-obby.el (rudel-obby-document): cleanup; improved + documentation strings + + * rudel-overlay.el (new file): functions for managing overlays, + which indicate the authors of contributions in collaborative + buffers + + * rudel.el (rudel-allocate-buffer-function): customization option + for buffer allocation function + (rudel-subscribe): call buffer allocation function instead of just + using the provided name + * rudel-interactive.el (rudel-allocate-buffer-clear-existing): new + function; in case of a conflict, allocate buffer for subscription + by clearing the existing buffer + (rudel-allocate-buffer-make-unique): new function; in case of a + conflict, allocate buffer for subscription by producing a unique + name + + * rudel.el (customization): added customization group definition + for `rudel' + + * obby/rudel-obby.el (includes): require `rudel-util' instead of + `rudel' + (rudel-connect): attach connection to socket object + (rudel-obby-document): removed slot `subscribed' as it is now + contained in the base class `rudel-document' + (rudel-obby-escape-string): call `rudel-obby-replace-in-string' + instead of `obby-replace-in-string' + (rudel-obby-unescape-string): call `rudel-obby-replace-in-string' + instead of `obby-replace-in-string' + * obby/rudel-obby-client.el + (rudel-obby-connection::rudel-state-change): required by + `rudel-sentinel-dispatch' + (rudel-obby-connection::rudel-subscribe-to): do not touch slot + `subscribed' + (rudel-obby-connection::rudel-obby/obby_sync_doclist_document): + retrieve subscribed users and add to `subscribed' slot + (rudel-obby-connection::rudel-obby/obby_document_create): add + document owner to `subscribed' slot + (rudel-obby-connection::rudel-obby/obby_document/subscribe): add + user to `subscribed' slot + (rudel-obby-connection::rudel-obby/obby_document/unsubscribe): + remove user from `subscribed' slot + * rudel.el (rudel-document): added slot `subscribed' which + contains a list of subscribed users + (rudel-subscribe): do not use `rudel-unsubscribed-documents'; + instead list all documents for now + (rudel-publish-buffer): add self to `subscribed' slot + + * rudel-util.el (rudel-state-change): cleanup; added comments + + * rudel-mode.el (rudel-minor-keymap): Fixed invalid menu + definition + + * obby/rudel-obby.el (whole file): moved class + `rudel-obby-connection' and related methods into file + `rudel-obby-client.el' + (rudel-obby-backend): added capability `track-subscriptions' + (rudel-obby-backend::rudel-connect): require `rudel-obby-client' + before constructing the connection object + * obby/rudel-obby-client.el (new file): moved class + `rudel-obby-connection' and related methods into this file + +2008-12-29 Jan Moringen + + * rudel.el (rudel-connection::rudel-change-color-): new method + handles color changes + (rudel-change-color): added basic implementation, which checks the + backend, asks the user for a new color and calls the connection + object + + * rudel-util.el (rudel-socket-owner::rudel-state-change): called + when the state of the connection changes + (rudel-socket-owner::rudel-close): called when the connection is + closed + (rudel-sentinel-dispatch): the argument is a message, not the + actual state, the state is retrieved with `process-state' + + * rudel-speedbar.el (whole file): cleanup; improved comments + + * rudel-mode.el (whole file): improved comments + (rudel-read-{backend, document}): moved to rudel-interactive.el + (rudel-minor-keymap): added key binding for `rudel-change-color'; + added `options' menu item + + * rudel-interactive.el (whole file): user interaction functions + used by all Rudel components + + * rudel-util.el (whole file): utility functions used by all Rudel + components + + * rudel.el (whole file): improved comments + (rudel-backend::make-document): new function create an appropriate + document object for the backend + (rudel-session::rudel-end): added documentation string + (rudel-session::rudel-add-user): added documentation string + (rudel-session::rudel-remove-user): added documentation string + (rudel-session::rudel-remove-document): new method; remove + document from session + (rudel-connection::rudel-publish): new function; called when a + buffer is published + (rudel-connection::rudel-unsubscribe-from): new function; called + when a subscription is canceled + (class rudel-user): added documentation strings + (class rudel-document): added documentation strings + (rudel-document::rudel-attach-to-buffer): add to + `after-change-functions' hook only for the buffer in question; + added some comments + (rudel-document::rudel-detach-from-buffer): cleanup + (rudel-document::rudel-remote-insert): added comments + (rudel-document::rudel-remote-delete): added comments + (rudel-handle-buffer-change): added comments + (rudel-choose-backend): added comments + (rudel-end-session): additional error check + (rudel-subscribe): call `rudel-unsubscribed-documents' when + completing document name; added comments + (rudel-unpublish-buffer): call `rudel-detach-from-buffer' and + `rudel-unsubscribe-from'; added comments + + * obby/rudel-obby.el (whole file): improved comments + (rudel-obby-backend::rudel-ask-connect-info): removed :override + tag; added comments + (rudel-obby-backend::rudel-connect): removed :override tag; use + `make-network-process' instead of `open-network-stream' and attach + filter and sentinel right away; removed some debug code + (rudel-obby-backend::rudel-disconnect): removed :override tag + (rudel-obby-backend::rudel-subscribe-to): removed :override tag + (rudel-obby-backend::rudel-local-insert): removed :override tag + (rudel-obby-backend::rudel-local-delete): removed :override tag + (rudel-obby-backend::rudel-make-document): new method; creates a + new rudel-obby-document object + (rudel-obby-backend::rudel-available-document-id): obtains an + unused document id, which can be assigned to a new document + (class rudel-obby-connection): removed useless `host' and `port' + slots + (rudel-obby-connection::rudel-receive): removed some debug code + (rudel-obby-connection::rudel-send): removed some debug code + (rudel-obby-connection::rudel-obby/net6_client_join): fixed syntax + error + (class rudel-obby-user): added accessors for slots `client-id' and + `user-id' + (rudel-obby-user::eieio-speedbar-description): removed :override + tag + (rudel-obby-user::eieio-speedbar-object-buttonname): removed + :override tag + (class rudel-obby-document): added accessors and documentation for + slot `id' + (rudel-obby-document::eieio-speedbar-object-buttonname): removed + :override tag + (rudel-obby-replace-in-string): new function; replace a set of + patterns in a string + (rudel-obby-escape-string): new function; replace obby control + characters with their escape sequences + (rudel-obby-unescape-string): new function; inverse of + `rudel-obby-escape-string' + (rudel-obby-parse-color): added documentation + (rudel-obby-format-color): added documentation + (rudel-obby-assemble-message): properly escape message components + (rudel-obby-parse-message): properly unescape message components + + * README (whole file): some initial notes + * INSTALL (whole file): some initial notes + +2008-12-02 Jan Moringen + + * obby (directory): new directory for files belonging to the obby + backend + * rudel-obby.el (whole file): moved to `obby' directory + * obby/rudel-obby.el (whole file): moved here from parent + directory + + * Changelog (whole file): renamed to `ChangeLog?' + * ChangeLog? (whole file): fixed name + + * INSTALL (whole file): added + + * rudel.el (whole file): fixed some comments, removed some test + code + (rudel-version): new variable; global Rudel version + (rudel-sessions): removed; we only allow one session for now + (rudel-session): cleaned up + (rudel-session::rudel-end): cleaned up; added some comments + (rudel-session::rudel-add-user): cosmetic changes + (rudel-session::rudel-remove-user): cosmetic changes + (rudel-session::rudel-find-user): cosmetic changes + (rudel-session::rudel-add-document): cosmetic changes + (rudel-session::rudel-find-document): cosmetic changes + (rudel-backend::rudel-connect): improved documentation string + (rudel-backend::rudel-ask-host-info): renamed from + `rudel-ask-listen-info' + (rudel-backend::rudel-host): renamed from `rudel-listen' + (rudel-document::rudel-attach-to-buffer): cosmetic changes + (rudel-document::rudel-remote-insert): cleaned up + (rudel-document::rudel-remote-delete): cleaned up + (rudel-load-backends): cosmetic changes + (rudel-choose-backend): fixed message display + (rudel-host-session): improved documentation string + (rudel-change-color): raise an error since this is not yet + implemented + (rudel-subscribe): added comments + (rudel-unpublish-buffer): raise an error if the buffer has not + been published + + * rudel.el (whole file): cleanup up some obsolete code -- cgit v1.2.3