From: Richard M. Stallman Date: Thu, 23 Jun 1994 23:57:33 +0000 (+0000) Subject: (move-to-tab-stop): Delete unnecessary spaces X-Git-Tag: emacs-19.34~7816 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fbf8f564cf07f3a53fd413243f41aecd700c54cb;p=emacs.git (move-to-tab-stop): Delete unnecessary spaces before the old point if a tab followed or follows the old point. --- diff --git a/lisp/indent.el b/lisp/indent.el index 2713be3b51f..ef63db81932 100644 --- a/lisp/indent.el +++ b/lisp/indent.el @@ -260,6 +260,29 @@ Use \\[edit-tab-stops] to edit them interactively." (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)