                  (point))))
     (let ((column (shm-node-start-column (shm-current-node))))
       (insert "\\")
-      (newline)
+      (shm-newline)
       (indent-to column)
       (insert "\\")))
    ((and (looking-at "[^])}\"]") ;; This is a cheap solution. It

                                                     (shm-node-end operand))))
        (cond
         (dragging
          (newline)
          (indent-to (shm-node-start-column parent)))
         ((save-excursion (goto-char (shm-node-end operand))
                          (= (point) (line-end-position)))
          (insert " " string)
          (newline)
          (indent-to (shm-node-start-column current)))
         (t
          (newline)
          (indent-to (shm-node-start-column operand))
          (insert string " ")))))
     ;; Infix operators
     ((and parent
           (eq 'InfixApp (shm-node-cons parent)))
      (newline)
      (indent-to (+ (shm-node-start-column parent))))
     ;; ((eq 'Alt (shm-node-cons current))
     ;;  (newline)
     ;;  (indent-to (shm-node-start-column current))
     ;;  (when shm-auto-insert-skeletons
     ;;    (save-excursion (insert "_ -> undefined"))

                                   (search-backward-regexp "[[,][ ]*")
                                   (= (current-column)
                                      (shm-node-start-column parent)))))
        (shm-newline)
        (indent-to (shm-node-start-column parent))
        (insert ",")
        (when first-item-on-line
