- (insert-buffer-substring (current-buffer)
- (nth 1 (car sort-lists))
- (cdr (cdr (car sort-lists))))
- (setq last (cdr (cdr (car old)))
- sort-lists (cdr sort-lists)
- old (cdr old)))
- (goto-char (point-max))
- (insert-buffer-substring (current-buffer)
- last
- max)
- ;; Delete the original copy of the text.
- (delete-region min max)
- ;; Get rid of the separator " ".
- (goto-char (point-max))
- (narrow-to-region min (1+ (point)))
- (delete-region (point) (1+ (point)))))
+ (insert-buffer-substring old-buffer last max)
+
+ ;; Copy the reordered text from the temporary buffer
+ ;; to the buffer we sorted (OLD-BUFFER).
+ (set-buffer old-buffer)
+ (let ((inhibit-quit t))
+ ;; Make sure insertions done for reordering
+ ;; do not go after any markers at the end of the sorted region,
+ ;; by inserting a space to separate them.
+ (goto-char max)
+ (insert-before-markers " ")
+ ;; Delete the original copy of the text.
+ (delete-region min max)
+ ;; Now replace the separator " " with the sorted text.
+ (goto-char (point-max))
+ (insert-buffer-substring temp-buffer)
+ (delete-region min (1+ min))))))