Skip to content
Prev Previous commit
Next Next commit
cleanup buffer-modified-p
  • Loading branch information
cxxxr committed Aug 6, 2023
commit 9268bf55faa15c554851a0bbfdb00ed02d6d3ada
15 changes: 9 additions & 6 deletions extensions/lisp-mode/macrostep.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -103,22 +103,24 @@
(defun pop-undo (buffer)
(when (buffer-value buffer 'undo)
(let ((*inhibit-read-only* t))
(destructuring-bind (start-pos end-pos string subforms)
(destructuring-bind (start-pos end-pos string subforms is-mark)
(pop (buffer-value buffer 'undo))
(multiple-value-bind (start end)
(positions-to-points buffer start-pos end-pos)
(replace-at-points start end string)
(loop :for (start-pos . end-pos) :in subforms
:do (multiple-value-bind (start end)
(positions-to-points buffer start-pos end-pos)
(add-subform-overlay buffer (make-subform-overlay start end)))))))
(add-subform-overlay buffer (make-subform-overlay start end))))
(unless is-mark
(buffer-unmark buffer)))))
t))

(defun push-undo (start end string subforms)
(defun push-undo (start end string subforms is-mark)
(let ((buffer (point-buffer start))
(start-pos (position-at-point start))
(end-pos (position-at-point end)))
(push (list start-pos end-pos string subforms)
(push (list start-pos end-pos string subforms is-mark)
(buffer-value buffer 'undo))))

(defun replace-with-macrostep-expand (start end expansion-string subform-info)
Expand Down Expand Up @@ -167,9 +169,10 @@
(destructuring-ecase
(lisp-eval `(micros/macrostep:macrostep-expand-1 ,string t ',context))
((:ok expansion-string subform-info)
(let ((subforms (dump-subforms (point-buffer point))))
(let ((subforms (dump-subforms (point-buffer point)))
(is-mark (buffer-modified-p (point-buffer point))))
(replace-with-macrostep-expand start end expansion-string subform-info)
(push-undo start end string subforms))
(push-undo start end string subforms is-mark))
(move-point point start)
t)
((:error message)
Expand Down