summaryrefslogtreecommitdiff
path: root/lisp/tabify.el
diff options
context:
space:
mode:
authorJuanma Barranquero <lekktu@gmail.com>2011-07-13 20:12:05 +0200
committerLars Magne Ingebrigtsen <larsi@gnus.org>2011-07-13 20:12:05 +0200
commitbead9a43c1c13b812b4c4f10219a79897e18617d (patch)
tree2428b41f488578b1c96c479b4624ba3ecf87b715 /lisp/tabify.el
parent90a6258b05e00c6e47acc4e85edabf6e92ea1e84 (diff)
Preserve point when doing untabify
* tabify.el (untabify): Preserve the current column so that point doesn't move. Fixes: debbugs:6032
Diffstat (limited to 'lisp/tabify.el')
-rw-r--r--lisp/tabify.el28
1 files changed, 15 insertions, 13 deletions
diff --git a/lisp/tabify.el b/lisp/tabify.el
index da1038a2164..0b2411d0316 100644
--- a/lisp/tabify.el
+++ b/lisp/tabify.el
@@ -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.