Function: smart-tags-display

smart-tags-display is a byte-compiled function defined in hmouse-tag.el.

Signature

(smart-tags-display TAG NEXT &optional LIST-OF-TAGS-TABLES)

Documentation

Jump to the single definition of TAG or list definition locations.

If NEXT is non-nil, jump to the next definition. Optional LIST-OF-TAGS-TABLES are the tags tables to use when xref-find-definitions is called in a context where the etags backend is used.

Source Code

;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hmouse-tag.el
(defun smart-tags-display (tag next &optional list-of-tags-tables)
  "Jump to the single definition of TAG or list definition locations.
If NEXT is non-nil, jump to the next definition.  Optional
LIST-OF-TAGS-TABLES are the tags tables to use when
`xref-find-definitions' is called in a context where the `etags'
backend is used."
  (when next (setq tag nil))
  (let* ((tags-table-list (or list-of-tags-tables
			      (smart-entire-tags-table-list)))
	 ;; Identifier searches should almost always be case-sensitive today
	 (tags-case-fold-search nil)
	 (func (smart-tags-noselect-function))
	 (tags-file-name (unless tags-table-list
			   (when (boundp 'tags-file-name) tags-file-name)))
	 find-tag-result
	 (tags-add-tables nil))
    (cond ((and func (or tags-table-list tags-file-name)
		(setq find-tag-result (funcall func tag)))
	   (cond ((or (memq (type-of find-tag-result) '(xref-item xref-match-item))
		      (vectorp find-tag-result))
		  (hpath:display-buffer (hsys-xref-item-buffer find-tag-result))
		  (goto-char (hsys-xref-item-position find-tag-result)))
		 (t
		  ;; Emacs with some unknown version of tags.
		  ;; Signals an error if tag is not found which is caught by
		  ;; many callers of this function.
		  ;; Find exact identifier matches only.
		  (with-no-warnings (xref-find-definitions tag)))))
	  ;; Signals an error if tag is not found which is caught by
	  ;; many callers of this function.
	  ;; Find exact identifier matches only.
	  ((with-no-warnings (xref-find-definitions tag)))
	  (t
	   (error "No existing tag tables in which to find `%s'" tag)))))