Mercurial > emacs
changeset 60486:47a57ff1da21
(move-beginning-of-line): New command.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Mon, 07 Mar 2005 11:12:31 +0000 |
parents | 6a79fa294dd4 |
children | bf372b4b92e9 |
files | lisp/simple.el |
diffstat | 1 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Mon Mar 07 11:12:21 2005 +0000 +++ b/lisp/simple.el Mon Mar 07 11:12:31 2005 +0000 @@ -3517,6 +3517,33 @@ (setq arg 1) (setq done t))))))) +(defun move-beginning-of-line (arg) + "Move point to beginning of current display line. +With argument ARG not nil or 1, move forward ARG - 1 lines first. +If point reaches the beginning or end of buffer, it stops there. +To ignore intangibility, bind `inhibit-point-motion-hooks' to t. + +This command does not move point across a field boundary unless doing so +would move beyond there to a different line; if ARG is nil or 1, and +point starts at a field boundary, point does not move. To ignore field +boundaries bind `inhibit-field-text-motion' to t." + (interactive "p") + (or arg (setq arg 1)) + (if (/= arg 1) + (line-move (1- arg) t)) + (let (done pos) + (while (not done) + (beginning-of-line 1) + ;; (not bolp) means that it stopped at a field boundary. + (if (or (bobp) (not (bolp))) + (setq done t) + (sit-for 0) + (if (and (consp (setq pos (pos-visible-in-window-p (point) nil t))) + (= (car pos) 0)) + (setq done t) + (backward-char 1)))))) + + ;;; Many people have said they rarely use this feature, and often type ;;; it by accident. Maybe it shouldn't even be on a key. (put 'set-goal-column 'disabled t)