Function: widget-after-change
widget-after-change is a byte-compiled function defined in
wid-edit.el.gz.
Signature
(widget-after-change FROM TO OLD)
Documentation
Adjust field size and text properties.
Source Code
;; Defined in /usr/src/emacs/lisp/wid-edit.el.gz
(defun widget-after-change (from to _old)
"Adjust field size and text properties."
(let ((field (widget-field-find from))
(other (widget-field-find to)))
(when field
(unless (eq field other)
(error "Change in different fields"))
(let ((size (widget-get field :size)))
(when size
(let ((begin (widget-field-start field))
(end (widget-field-end field)))
(cond ((< (- end begin) size)
;; Field too small.
(save-excursion
(goto-char end)
(insert-char ?\s (- (+ begin size) end))))
((> (- end begin) size)
;; Field too large and
(if (or (< (point) (+ begin size))
(> (point) end))
;; Point is outside extra space.
(setq begin (+ begin size))
;; Point is within the extra space.
(setq begin (point)))
(save-excursion
(goto-char end)
(while (and (eq (preceding-char) ?\s)
(> (point) begin))
(delete-char -1)))))))
(widget-specify-secret field))
(widget-apply field :notify field (list 'after-change from to)))))