- (insert-buffer-substring (current-buffer)
- last
- (nth 1 (car old)))
- (goto-char (point-max))
- (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
+ ;; saves any markers at the end of the sorted region,
+ ;; by leaving the last character of the region.
+ (delete-region min (1- max))
+ ;; Now replace the one remaining old character with the sorted text.
+ (goto-char (point-min))
+ (insert-buffer-substring temp-buffer)
+ (delete-region max (1+ max))))))