Hi everyone
The last month has been full of activity for the emacs Wave client. With support from the Wave team, Christian Ohler and I have made the following improvements:
1) Implement a framework for making changes to Waves. This still could be significantly improved, but it is usable.
2) Enable add-participant for a wave.
3) Enable adding a blip to a wave.
4) Support the new official client/server protocol. This is not yet supported by any actual Wave instances yet, only FedOne. But you can now connect to FedOne again, which is nice.
5) In the client/server protocol, accept incoming changes and refresh the buffer on change. This implements basic live updating, but needs to be improved with more target redrawing.
6) Add a websocket layer for the client/server protocol. The websocket library is stand-alone, and is the only websocket library for emacs I know of. I probably will branch it off to a separate project at some point.
So now we support both the undocumented client/server protocol, and the official one.
There's a few big caveats:
1) Updates don't work reliably at all with the undocumented protocol, because I have not yet gotten the browser channel to work correctly yet. Right now you have to keep reseting the websocket connection to make changes.
2) We don't yet read updates through the undocumented protocol. We may never, because hopefully the client/server protocol will soon be implemented on all wave instances.
3) Currently new blips do not work in the client/server protocol, for unknown reasons. It just recently broke, so I'll be working on fixing this bug soon.
As always, there's a lot of interesting work to do, so if you want to have fun playing with emacs and Wave, please let me know.
If you want to try this out, you should:
(add-to-list 'load-path "~/yourpath/wave-client-for-emacs/lisp")
(require 'wave-client-browser-channel)
(require 'wave-list)
(setq wave-client-connection-method 'browser-channel)
(setq wave-client-user "yourusername")
(wave-list)
Of course, replace yourpath and yourusername with the appropriate values.
I'll soon fix the issue where you need to require both files instead of just wave-list. If you want to try out connection to FedOne, replace (require 'wave-client-browser-channel) with (require 'wave-client-websocket). And lastly, if you try this out, expect many issues. This isn't close to usable yet, although for reading it remains reasonably stable.