Preserve point when doing untabify

* tabify.el (untabify): Preserve the current column so that point
doesn't move.

Fixes: debbugs:6032
This commit is contained in:
Juanma Barranquero 2011-07-13 20:12:05 +02:00 committed by Lars Magne Ingebrigtsen
parent 90a6258b05
commit bead9a43c1
2 changed files with 20 additions and 13 deletions

View file

@ -1,3 +1,8 @@
2011-07-13 Juanma Barranquero <lekktu@gmail.com>
* tabify.el (untabify): Preserve the current column so that point
doesn't move (bug#6032).
2011-07-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
* progmodes/cperl-mode.el (cperl-syntaxify-by-font-lock): Rewrite

View file

@ -34,19 +34,21 @@ Called non-interactively, the region is specified by arguments
START and END, rather than by the position of point and mark.
The variable `tab-width' controls the spacing of tab stops."
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region (point-min) end)
(goto-char start)
(while (search-forward "\t" nil t) ; faster than re-search
(forward-char -1)
(let ((tab-beg (point))
(indent-tabs-mode nil)
column)
(skip-chars-forward "\t")
(setq column (current-column))
(delete-region tab-beg (point))
(indent-to column))))))
(let ((c (current-column)))
(save-excursion
(save-restriction
(narrow-to-region (point-min) end)
(goto-char start)
(while (search-forward "\t" nil t) ; faster than re-search
(forward-char -1)
(let ((tab-beg (point))
(indent-tabs-mode nil)
column)
(skip-chars-forward "\t")
(setq column (current-column))
(delete-region tab-beg (point))
(indent-to column)))))
(move-to-column c)))
(defvar tabify-regexp " [ \t]+"
"Regexp matching whitespace that tabify should consider.