# HG changeset patch # User Richard M. Stallman # Date 772415853 0 # Node ID fd5fb80a940d55402781f5cc17d55d67e943478f # Parent e242731ffc055d270678316ba8523592d8a9838b (move-to-tab-stop): Delete unnecessary spaces before the old point if a tab followed or follows the old point. diff -r e242731ffc05 -r fd5fb80a940d lisp/indent.el --- a/lisp/indent.el Thu Jun 23 23:56:06 1994 +0000 +++ b/lisp/indent.el Thu Jun 23 23:57:33 1994 +0000 @@ -260,6 +260,29 @@ (delete-region (point) opoint))) (move-to-column (car tabs) t))))) +(defun move-to-tab-stop () + "Move point to next defined tab-stop column. +The variable `tab-stop-list' is a list of columns at which there are tab stops. +Use \\[edit-tab-stops] to edit them interactively." + (interactive) + (let ((tabs tab-stop-list)) + (while (and tabs (>= (current-column) (car tabs))) + (setq tabs (cdr tabs))) + (if tabs + (let ((before (point))) + (move-to-column (car tabs) t) + (save-excursion + (goto-char before) + ;; If we just added a tab, or moved over one, + ;; delete any superfluous spaces before the old point. + (if (and (eq (preceding-char) ?\ ) + (eq (following-char) ?\t)) + (let ((tabend (* (/ (current-column) tab-width) tab-width))) + (while (and (> (current-column) tabend) + (eq (preceding-char) ?\ )) + (forward-char -1)) + (delete-region (point) before)))))))) + (define-key global-map "\t" 'indent-for-tab-command) (define-key esc-map "\034" 'indent-region) (define-key ctl-x-map "\t" 'indent-rigidly)