Aemon,
Don't know if I mentioned this before, but I am in the
process of creating a Vim client for Ensime:
https://github.com/megaannum/vimside
Still pre-alpha; maybe 1/2 the commands are implemented.
Thats why I have been looking closely at Ensime's manual and
its code.