]> git.eshelyaron.com Git - emacs.git/commitdiff
Preserve point better in hs-hide-comment-region
authorJohn Yates <john@yates-sheets.org>
Thu, 3 Oct 2019 16:55:35 +0000 (18:55 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 3 Oct 2019 16:55:35 +0000 (18:55 +0200)
* lisp/progmodes/hideshow.el (hs-hide-comment-region): Preserve point
better when collapsing the region (bug#10856).

Copyright-paperwork-exempt: yes

lisp/progmodes/hideshow.el

index 0fb5c5551255fc313a5419d9a563e571aefd5b95..c4c75a6c040e7b4044943bc032fc0b9775e54d40 100644 (file)
@@ -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.