From: John Yates Date: Thu, 3 Oct 2019 16:55:35 +0000 (+0200) Subject: Preserve point better in hs-hide-comment-region X-Git-Tag: emacs-27.0.90~1306 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f12fcdf4cd878b7b3f1221c5818fe221cb339724;p=emacs.git Preserve point better in hs-hide-comment-region * lisp/progmodes/hideshow.el (hs-hide-comment-region): Preserve point better when collapsing the region (bug#10856). Copyright-paperwork-exempt: yes --- diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 0fb5c555125..c4c75a6c040 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el @@ -551,11 +551,13 @@ Original match data is restored upon return." (defun hs-hide-comment-region (beg end &optional repos-end) "Hide a region from BEG to END, marking it as a comment. Optional arg REPOS-END means reposition at end." - (let ((beg-eol (progn (goto-char beg) (line-end-position))) + (let ((goal-col (current-column)) + (beg-bol (progn (goto-char beg) (line-beginning-position))) + (beg-eol (line-end-position)) (end-eol (progn (goto-char end) (line-end-position)))) (hs-discard-overlays beg-eol end-eol) - (hs-make-overlay beg-eol end-eol 'comment beg end)) - (goto-char (if repos-end end beg))) + (hs-make-overlay beg-eol end-eol 'comment beg end) + (goto-char (if repos-end end (min end (+ beg-bol goal-col)))))) (defun hs-hide-block-at-point (&optional end comment-reg) "Hide block if on block beginning.