Coeditor
Yet Another Pair Programming Package for Atom.
Demo
Click to view high quality video on YouTube
Usage
This package requires a server to forward changes to each clients. Currently there is no available common server yet, but it is quite simple to deploy one by your own.
prerequisite: node.js (v>=6.10.1)
- Clone this repo
git clone https://github.com/nicktogo/coeditor.git
- Install dependencies
cd coeditor
npm install
- Start Server
npm start
- By default, the server will listen on port 9090
- Toggle package in Atom
- install coeditor via Atom
- modify settings in the package's settings view firstly
- server address (with port)
- client id which will show in indicator
- indicator background color
- line ending
- open project folder in Atom
- toggle coeditor,
ctrl + shift + p
then typetoggle
, hitcoeditor: toggle
- input session id
- check your server console
- disconnect,
ctrl + shift + p
then typedisconnect
, hitcoeditor: disconnect
Features
- Non-conflict collaborative text editing
- Text highlight synchronization
- Collaborative awareness
- Project sync
- File grammar sync
- Active tab sync
- Project's files saving and closing sync
Dependencies
Please refer to package.json for detail.
- ot-text
- sharedb
- websocket-push-stream
- ws
Known issue
- If clients use different types for line ending (i.e. CRLF or LF) with each other, this package will cause files end up with inconsistent content. MAKE SURE ALL CLIENTS USE THE SAME TYPE FOR LINE ENDING AND SET TYPE IN THIS PACKAGE'S SETTING VIEW! (EITHER CRLF OR LF WILL DO)
- If you encounter any other problem, you are more than welcome to open a issue in the github repo, thanks for helping me to improve this project!
TODO
Customized configuration (Server address, random session id or given by user)DONEBroadcast disconnections to other living Atom clientsDONECheck socket status before usingDONEBroadcast server close to each Atom clients, and disconnect all clientsDONEText selection background and cursor colors for different Atom clients ?DONESettings viewDONEWorking folder files synchronizationDONEFile operations synchronizationDONEsave -- DONE, but limited, don't work for new file which does not have pathclose
Tab sync- add sync tab switcher (via command or configuration)
- Heartbeat between client and server
- Build cloud server
- Write spec
- Suggestions Synchronization NO API
Tentative
Working folder files synchronizationMOVED TO TODO list- Server uses in-memory storage when running, so no file content will be stored in server when it is shutdown, might change to MongoDB