diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-06-23 23:57:33 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-06-23 23:57:33 +0000 |
commit | fbf8f564cf07f3a53fd413243f41aecd700c54cb (patch) | |
tree | 2005ac8b0c6cb313e33faae464ef12e3a519cda6 /lisp/indent.el | |
parent | 0b6ac150432b7b22bf4815ccda5b71ecbd27d3ce (diff) | |
download | emacs-fbf8f564cf07f3a53fd413243f41aecd700c54cb.tar.gz emacs-fbf8f564cf07f3a53fd413243f41aecd700c54cb.tar.bz2 emacs-fbf8f564cf07f3a53fd413243f41aecd700c54cb.zip |
(move-to-tab-stop): Delete unnecessary spaces
before the old point if a tab followed or follows the old point.
Diffstat (limited to 'lisp/indent.el')
-rw-r--r-- | lisp/indent.el | 23 |
1 files changed, 23 insertions, 0 deletions
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) |