To install this package, run in Emacs:
M-x package-install RET crdt RET
crdt.el
is a real-time collaborative editing environment for Emacs
using Conflict-free Replicated Data Types.
Highlights:
crdt.el
is now on GNU ELPA! Just M-x package-install crdt
.
Caution!!! Please make sure that you and your peers are on the same
crdt.el
version! It turns out to be one of the most common causes
of crdt.el
not working. Because currently the network protocol is
not stablized, behavior when using mismatched versions is
unexpectable.
crdt-protocol-version
are
defined (added after version 0.2.5
) and the same on all peers.
But why not save some hassle and keep everyone on the latest
version.M-x package-reinstall crdt
, then preferably
restart Emacs. To check your crdt.el
version, M-x crdt-version
.A shared session is a place that can contains multiple buffers (or files), and multiple users can join to collaboratively edit those buffers (or files). Think about a meeting room with some people working together on some papers.
In some buffer, M-x crdt-share-buffer
. Then enter session name.
This add the current buffer to the existing session with that name.
If no such exists, it creates a new session with the provided session
name, and initially contains the current buffer as a shared buffer.
If a new session is to be created, you need to enter port (default to
6530), optional password and your display name (default to your
current (user-full-name)
).
Experimental settings: "Secure Port" specifies TLS port, and "Command Functions" specifies user permissions. It's ok to just use the default values.
M-x crdt-connect
, then enter address, port, and your display name.
If the server has provided the permission (this is the default case),
connected user may also add their buffers to the session via
M-x crdt-share-buffer
.
M-x crdt-list-sessions
lists all sessions.
M-x crdt-list-buffers
lists all buffers in current
session. In the displayed buffer list, press RET
in the session
list to see buffers in the selected session.
You can also use M-x crdt-switch-to-buffer
to interactively switch
to another buffer in the current session.
In a CRDT shared buffer (either server or client), M-x crdt-list-users
to list active users. In the displayed user list, press RET
on an
entry to goto that user's cursor position. Press f
to follow that
user, and press f
again or M-x crdt-stop-follow
to stop following.
You can also use M-x crdt-goto-next-user
and M-x crdt-goto-prev-user
to cycle through users' cursor positions from any CRDT shared buffer
(don't need to be in the user list buffer).
M-x crdt-stop-session
stops a session you've started and disconnect
all other users from it. This will ask for your confirmation,
customize crdt-confirm-stop-session
if you want to disable it.
You can also press k
or d
in the session list (show it by M-x crdt-list-sessions
).
M-x crdt-stop-share-buffer
removes current buffer from its CRDT
session (this operation is only allowed at server side). You can also
press k
or d
in the buffer list.
M-x crdt-disconnect
, then choose a session to disconnect from.
You can also press k
or d
in the session list (show it by M-x crdt-list-sessions
).
The server Emacs has the privilege to disconnect a user from a
session. To do so, press k
or d
on an entry in the user list
(show it by M-x crdt-list-users
).
crdt-visualize-author-mode
to color text based on which
user authored it.crdt-org-sync-overlay-mode
. All peers that have this enabled have
their folding status synchronized. Peers without enabling this minor
mode are unaffected.shell
and
cmuscheme
. By default, when sharing a comint buffer, crdt.el
temporarily reset input history (as in M-n
M-p
) so others don't
spy into your .bash_history
and alike. You can customize this
behavior using variable crdt-comint-share-input-history
.There're various workaround.
crdt.el
has experimental built-in integration for tuntox
. To
enable it, you need to install tuntox
, set up the custom variable
crdt-tuntox-executable
accordingly (the path to your tuntox
binary), and set the custom variable crdt-use-tuntox
. Setting it
to t
make crdt.el
always create tuntox
proxy for new server
sessions, and setting it to 'confirm
make crdt.el
ask you every
time when creating new sessions. After starting a session with
tuntox
proxy, you can M-x crdt-copy-url
to copy a URL
recognizable by M-x crdt-connect
and share it to your friends. Be
aware that according to my experience, tuntox
takes significant
time to establish a connection (sometimes up to half a minute),
however it gets much faster after the connection is established.You can use Teredo to get a public routable IPv6 address. One free software implementation is Miredo. Get it from your favorite package manager or from their website. A typical usage is (run as root)
# /usr/local/sbin/miredo # ifconfig teredo
The ifconfig
command should print the information of your IPv6
address. Now your traffic go through IPv6, and once you start a
crdt.el
session, your friends should be able to join using the
IPv6 address. For more information, see the user guide on the
Miredo website.
You can use SSH port forwarding if you have a VPS with public IP. Example usage:
$ ssh -R EXAMPLE.COM:6530:127.0.0.1:6530 EXAMPLE.COM
This make your crdt.el
session on local port 6530
accessible
from EXAMPLE.COM:6530
.
Note that you need to set the following /etc/ssh/sshd_config
option on your VPS
GatewayPorts yes
crdt-0.3.4.tar.lz | 2022-Nov-04 | 47.5 KiB |
crdt-0.3.3.tar.lz | 2022-Aug-28 | 47.5 KiB |
crdt-0.3.2.tar.lz | 2022-Aug-18 | 47.3 KiB |
crdt-0.3.1.tar.lz | 2022-Aug-16 | 47.2 KiB |
crdt-0.3.0.tar.lz | 2022-Jul-03 | 40.7 KiB |
crdt-0.2.7.tar.lz | 2021-Oct-02 | 40.4 KiB |
crdt-0.2.6.tar.lz | 2021-Sep-30 | 40.3 KiB |
crdt-0.2.5.tar.lz | 2021-Sep-26 | 40.3 KiB |
crdt-0.2.4.tar.lz | 2021-Sep-17 | 40.2 KiB |
crdt-0.2.3.tar.lz | 2021-Sep-15 | 40.2 KiB |
crdt-0.2.2.tar.lz | 2021-Sep-12 | 39.7 KiB |
crdt-0.2.1.tar.lz | 2021-Sep-12 | 39.4 KiB |
crdt-0.2.0.tar.lz | 2021-Sep-09 | 32.1 KiB |
crdt-0.1.4.tar.lz | 2021-Sep-02 | 32.6 KiB |
crdt-0.1.3.tar.lz | 2021-Aug-31 | 32.3 KiB |
crdt-0.1.2.tar.lz | 2021-Aug-30 | 32.1 KiB |
crdt-0.1.1.tar.lz | 2021-Aug-28 | 32.1 KiB |