   (let* ((parent-pair (shm-node-parent current-pair))
          (parent (cdr parent-pair))
          (current (cdr current-pair)))
-    (if parent
-        (if (and (= (shm-node-start current)
-                    (shm-node-start parent))
-                 (= (shm-node-end current)
-                    (shm-node-end parent)))
-            (if (string= (shm-node-type current) (shm-node-type parent))
-                current-pair
-              (shm-workable-node parent-pair))
-          current-pair)
-      current-pair)))
+    (cond
+
+     (t (if parent
+            (if (and (= (shm-node-start current)
+                        (shm-node-start parent))
+                     (= (shm-node-end current)
+                        (shm-node-end parent)))
+                (if (string= (shm-node-type current) (shm-node-type parent))
+                    current-pair
+                  (shm-workable-node parent-pair))
+              current-pair)
+          current-pair)))))
 
 (defun shm-node-previous (node-pair)
   "Get the previous node of NODE-PAIR."

  :group 'shm
  :type 'boolean)

(defcustom shm-program-name
  "structured-haskell-mode"
  "The path to call for parsing Haskell syntax."

  (interactive "p")
  (if (shm-in-comment)
      (self-insert-command n)
    (let* ((current-pair (shm-current-node-pair))
           (current (cdr current-pair))
           (parent-pair (shm-node-parent current-pair))
           (parent (cdr parent-pair)))
      (cond
       ;; When inside a list, indent to the list's position with an
       ;; auto-inserted comma.
       ((eq 'List (shm-node-cons parent))
        (insert ",")
        (shm-set-node-overlay parent-pair))
       (t
        (insert ",")
        (shm-set-node-overlay parent-pair))))))

(defun shm/single-quote ()
  "Delimit single quotes."
