         (paredit paredit-command
                  {:text (:text document-text)
                   :offset (if (= paredit-command :paredit-backward-delete) (inc (:offset command)) (:offset command))
-                  :length 1}))))
-
+                  :length 1}))
+    (and (par-command? command)
+         (one-char-par-command? command)) ; TODO enhance to also handle the replace of a bunch of text
+      (paredit (par-command command)
+               {:text (:text document-text) 
+                :offset (:offset command) 
+                :length (:length command)})))
 
 (defn paredit-enabled?
   [#^org.eclipse.jface.preference.IPreferenceStore prefs-store]

            (set! (.text command) "")
            (set! (.doit command) false)))
        (set! (.shiftsCaret command) false)
        (set! (.caretOffset command) (:offset result))))))
  [editor preference-store] [[] (ref {:editor editor :prefs-store preference-store})])   

; TODO move this into paredit itself ...
;  each command : trigger-str  [:paredit-command-name only-one-char-command?]
(def *commands* 
  {"(" [:paredit-open-round true]
   "[" [:paredit-open-square true]
   "{" [:paredit-open-curly true]
   ")" [:paredit-close-round true]
   "]" [:paredit-close-square true]
   "}" [:paredit-close-curly true]
   "\"" [:paredit-doublequote true]
   "\t" [:paredit-indent-line true]
   "\n" [:paredit-newline true]
   })

(defn par-command? [command] (contains? *commands* (:text command)))
(defn par-command [command] (-> *commands* (get (:text command)) first))
(defn one-char-par-command? [command] (-> *commands* (get (:text command)) second))

(defn- call-paredit [command document-text]
  (cond
    (and (zero? (-> command #^String (:text) .length))
         (= 1 (:length command)))
      (let [paredit-command (if (= (:offset command) (:caret-offset document-text)) 
