# HG changeset patch # User Kim F. Storm # Date 1110193951 0 # Node ID 47a57ff1da216b06959d255d35895720f39efd22 # Parent 6a79fa294dd4f2f47a72d58a7eb984b04d67dac3 (move-beginning-of-line): New command. diff -r 6a79fa294dd4 -r 47a57ff1da21 lisp/simple.el --- 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)