aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1998-08-08 02:34:05 +0000
committerRichard M. Stallman <[email protected]>1998-08-08 02:34:05 +0000
commit23c1c5525d8712d0a30a109297c6a14bfb164d8a (patch)
tree221b7d81abf4603e336dd1063af1f0de9f47c7fd
parente7c1c20ebac86159106ab97f06a90a7f15322f59 (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.el22
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."