From 23c1c5525d8712d0a30a109297c6a14bfb164d8a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 8 Aug 1998 02:34:05 +0000 Subject: [PATCH] (widget-beginning-of-line): Properly handle multiline fields. Don't use call-interactively. (widget-end-of-line): Likewise. --- lisp/wid-edit.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 1e02648d5bb..583ab54fbc2 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." -- 2.39.5