               (when (looking-at "^$")
                 (delete-region (1- (point))
                                (point)))
+              (when (> (count-lines (point-min)
+                                    (point-max))
+                       1)
+                (let* ((first-line-col (save-excursion (goto-char (point-min))
+                                                       (back-to-indentation)
+                                                       (current-column)))
+                       (second-line-col (save-excursion (goto-char (point-min))
+                                                        (forward-line)
+                                                        (back-to-indentation)
+                                                        (current-column))))
+                  (when (> first-line-col second-line-col)
+                    (goto-char (point-min))
+                    (indent-rigidly (line-beginning-position)
+                                    (line-end-position)
+                                    (- first-line-col))
+                    (put-text-property (point-min)
+                                       (point-max)
+                                       'shm-swinging-expr
+                                       t))))
               ;; Finally, the actual save.
               (funcall (if save-it save-it 'clipboard-kill-ring-save)
                        (point-min)

this underside dangling vs not. But that will be implemented as a
separate function rather than hard-coded into this one specific
operation."
  (let ((column (current-column))
        (line (line-beginning-position))
        (start (point)))
    (let ((string
           (with-temp-buffer
             (funcall do-insert)
             (buffer-string))))
      (insert (if (shm-in-string)
                  (replace-regexp-in-string
                   "\n" "\\\\n\\\\\n\\\\"
                   string)
                string)))
    (when (and (= line (line-beginning-position))
               (not no-adjust-dependents))
      (shm-adjust-dependents start (- (current-column)

      (goto-char (region-end)))
    (let ((end (point)))
      (cond
       (swinging
        (when furthest-parent
          (let ((node (cdr furthest-parent)))
            (goto-char end)
            (indent-rigidly start
                            end
                            (+ (shm-indent-spaces)
                               (shm-node-indent-column node))))))
       (t (goto-char end)
          (indent-rigidly start end column)))
      (push-mark)
