One irritating thing with text processing is the total absence of some typographic essentials on the keyboard -- "real" (typographic) quotes and the dash, typically miss-typed as inch or second sign (") and the hyphon(-).

This plugin lends the good old Word behaviour to Xinha, as ",', and - get converted to their respective typographic correct relatives while typing.
It also replaces ... with the ellipsis sign (which is three dots combined in one glyph that is considered typographically better).

 Configuration (to change the quote style from default English):
  * through language file (see lang/de.js)
  * through a config variable (an array that holds four values: opening single quote, closing single quote, opening double quote, closing double quote)
  
 Additional config option:
  * disable automatic replacement by default
  
 Additional features:
  * can be switched on/off
  * convert all quotes/dashes in a document that still has the boring  "/- stuff