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)))))