diff options
author | Richard M. Stallman <[email protected]> | 1998-08-08 02:34:05 +0000 |
---|---|---|
committer | Richard M. Stallman <[email protected]> | 1998-08-08 02:34:05 +0000 |
commit | 23c1c5525d8712d0a30a109297c6a14bfb164d8a (patch) | |
tree | 221b7d81abf4603e336dd1063af1f0de9f47c7fd | |
parent | e7c1c20ebac86159106ab97f06a90a7f15322f59 (diff) |
(widget-beginning-of-line): Properly handle
multiline fields. Don't use call-interactively.
(widget-end-of-line): Likewise.
-rw-r--r-- | lisp/wid-edit.el | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 1e02648d5b..583ab54fbc 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -1111,19 +1111,25 @@ With optional ARG, move across that many fields." "Go to beginning of field or beginning of line, whichever is first." (interactive) (let* ((field (widget-field-find (point))) - (start (and field (widget-field-start field)))) - (if (and start (not (eq start (point)))) - (goto-char start) - (call-interactively 'beginning-of-line)))) + (start (and field (widget-field-start field))) + (bol (save-excursion + (beginning-of-line) + (point)))) + (goto-char (if start + (max start bol) + bol)))) (defun widget-end-of-line () "Go to end of field or end of line, whichever is first." (interactive) (let* ((field (widget-field-find (point))) - (end (and field (widget-field-end field)))) - (if (and end (not (eq end (point)))) - (goto-char end) - (call-interactively 'end-of-line)))) + (end (and field (widget-field-end field))) + (eol (save-excursion + (end-of-line) + (point)))) + (goto-char (if end + (min end eol) + eol)))) (defun widget-kill-line () "Kill to end of field or end of line, whichever is first." |