Function: eww-tag-select

eww-tag-select is a byte-compiled function defined in eww.el.gz.

Signature

(eww-tag-select DOM)

Source Code

;; Defined in /usr/src/emacs/lisp/net/eww.el.gz
(defun eww-tag-select (dom)
  (shr-ensure-paragraph)
  (let ((menu (list :name (dom-attr dom 'name)
		    :eww-form eww-form))
	(options nil)
	(start (point))
	(max 0))
    (dolist (elem (dom-by-tag dom 'option))
      (when (dom-attr elem 'selected)
	(nconc menu (list :value (dom-attr elem 'value))))
      (let ((display (dom-inner-text elem)))
	(setq max (max max (length display)))
	(push (list 'item
		    :value (dom-attr elem 'value)
		    :display display)
	      options)))
    (when options
      (setq options (nreverse options))
      ;; If we have no selected values, default to the first value.
      (unless (plist-get menu :value)
	(nconc menu (list :value (nth 2 (car options)))))
      (nconc menu options)
      (let ((selected (eww-select-display menu)))
	(insert selected
		(make-string (- max (length selected)) ? )))
      (put-text-property start (point) 'eww-form menu)
      (add-face-text-property start (point) 'eww-form-select)
      (put-text-property start (point) 'keymap eww-select-map)
      ;; Pretend to touch-screen.el that this is a button.
      (put-text-property start (point) 'button t)
      (unless (= start (point))
       (put-text-property start (1+ start) 'help-echo "select field")
       (put-text-property start (1+ start) 'shr-tab-stop t))
      (shr-ensure-paragraph))))