+ (help-xref-button 1 #'info data
+ "mouse-2, RET: read this Info node"))))
+ ;; Mule related keywords. Do this before trying
+ ;; `help-xref-symbol-regexp' because some of Mule
+ ;; keywords have variable or function definitions.
+ (if help-xref-mule-regexp
+ (save-excursion
+ (while (re-search-forward help-xref-mule-regexp nil t)
+ (let* ((data (match-string 7))
+ (sym (intern-soft data)))
+ (cond
+ ((match-string 3) ; coding system
+ (and sym (coding-system-p sym)
+ (help-xref-button
+ 7 #'describe-coding-system sym
+ "mouse-2, RET: describe this coding system")))
+ ((match-string 4) ; input method
+ (and (assoc data input-method-alist)
+ (help-xref-button
+ 7 #'describe-input-method data
+ "mouse-2, RET: describe this input method")))
+ ((or (match-string 5) (match-string 6)) ; charset
+ (and sym (charsetp sym)
+ (help-xref-button
+ 7 #'describe-character-set sym
+ "mouse-2, RET: describe this character set")))
+ ((assoc data input-method-alist)
+ (help-xref-button
+ 7 #'describe-input-method data
+ "mouse-2, RET: describe this input method"))
+ ((and sym (coding-system-p sym))
+ (help-xref-button
+ 7 #'describe-coding-system sym
+ "mouse-2, RET: describe this coding system"))
+ ((and sym (charsetp sym))
+ (help-xref-button
+ 7 #'describe-character-set sym
+ "mouse-2, RET: describe this character set")))))))