clojure-emacs/cider — pull request #778 by vitoshka (2014-09-08 05:15:20+00:00)
Title: [Fix #776, #773, #733] Rewrite bencode parser

I have rewritten the decoder. These are the main changes:

- require MELPA `queue` package. It used to be part of emacs, but not anymore.
- nREPL dicts are now plists and accessor api is given by `nrepl-dict-p`,
`nrepl-dict-get` and `nrepl-dict-put`.
- nested stack is used for decoded messages to avoid re-parsing of incomplete messages
- queues are used for received raw strings from server and for decoded requests

A couple of notes:

* A lot of code was relying on internal representation of dicts. I have have changed everything I could find, but there might be more. Particularly, I cannot find an example to trigger `cider--var-choice`. So please have a look or provide a simple example with multiple candidates.
* Examples in #773 and #733 will run fast on C-c C-e and C-c C-p but when you run them in the REPL. It has nothing to do with decoder but with the chocked emacs redisplay (I guess, it's related to #228). I will have a look at it later when the comint part has been sorted out.