Diavolo is better and better every day. But I had a big issue with copy/paste of whitespace, my source indentations were lost on paste, and I really could not figure out why. After a short investigation, I found why : it's a little uglyness left in nsCopySupport.cpp by our friend and former Editor Team member Kin Blas :

if (atom == nsGkAtoms::body)
  // check for moz prewrap style on body.  If it's there we are
  // in a plaintext editor.  This is pretty cheezy but I haven't
  // found a good way to tell if we are in a plaintext editor.
  nsCOMPtr<nsIDOMElement> bodyElem = do_QueryInterface(selContent);
  nsAutoString wsVal;
  rv = bodyElem->GetAttribute(NS_LITERAL_STRING("style"), wsVal);
  if (NS_SUCCEEDED(rv) && (kNotFound != wsVal.Find(NS_LITERAL_STRING("pre-wrap"))))
    *aIsPlainTextContext = PR_TRUE;

Urrrgh, to say the least :-) I have filed bug 442686 for that and attached a first patch. In the meantime, make sure to add style="white-space: pre-wrap" on the body of your edited documents if you're using a plaintext editor in Mozilla and need white-space preservation during copy/paste...