Function: hywiki-maybe-highlight-reference
hywiki-maybe-highlight-reference is an autoloaded, interactive and
byte-compiled function defined in hywiki.el.
Signature
(hywiki-maybe-highlight-reference &optional ON-REFERENCE)
Documentation
Highlight any non-Org link HyWikiWord#section at or one char before point.
A call to hywiki-active-in-current-buffer-p at point must return non-nil or
this function does nothing.
With optional ON-REFERENCE non-nil, assume point is within the page or
section name. Otherwise, if a HyWiki per-character hook has set
hywiki--buttonize-start hywiki--buttonize-end global variables,
use these as the region to highlight.
If in a programming mode, must be within a comment. Use
hywiki-word-face to highlight. Do not highlight references to
the current page unless they have sections attached.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/hywiki.el
;;;###autoload
(defun hywiki-maybe-highlight-reference (&optional on-reference)
"Highlight any non-Org link HyWikiWord#section at or one char before point.
A call to `hywiki-active-in-current-buffer-p' at point must return non-nil or
this function does nothing.
With optional ON-REFERENCE non-nil, assume point is within the page or
section name. Otherwise, if a HyWiki per-character hook has set
`hywiki--buttonize-start' `hywiki--buttonize-end' global variables,
use these as the region to highlight.
If in a programming mode, must be within a comment. Use
`hywiki-word-face' to highlight. Do not highlight references to
the current page unless they have sections attached."
(interactive)
(when (and (hywiki-active-in-current-buffer-p)
(if (and (derived-mode-p 'prog-mode)
(not (apply #'derived-mode-p hywiki-highlight-all-in-prog-modes)))
;; Non-nil if match is inside a comment or string
(or (nth 4 (syntax-ppss)) (hypb:in-string-p))
t)
;; (or on-reference
;; (string-match (regexp-quote (char-to-string (char-syntax last-command-event)))
;; " _()<>$.\"'"))
(not executing-kbd-macro)
(not noninteractive))
(setq hywiki--highlighting-done-flag nil)
(with-syntax-table hbut:syntax-table
(save-excursion
(when (hywiki--buttonized-region-p)
(goto-char hywiki--buttonize-start))
(unless on-reference
;; after page name
(skip-syntax-backward ">-"))
(unless (or hywiki--highlighting-done-flag
(hywiki-maybe-highlight-balanced-pairs))
(unless on-reference
;; May be a non-delimiter but HyWikiWord ending punctuation to
;; skip past
(skip-chars-backward (hywiki-get-buttonize-characters)
(line-beginning-position)))
;; Skip past HyWikiWord or section
(skip-syntax-backward "^-$()<>._\"\'")
(skip-chars-backward "-_*#:[:alnum:]")
(setq hywiki--save-case-fold-search case-fold-search
case-fold-search nil
hywiki--save-org-link-type-required hywiki-org-link-type-required
hywiki-org-link-type-required t
hywiki--start nil
hywiki--end nil)
(if (and (cl-destructuring-bind (word start end)
(hywiki-highlight-word-get-range)
(setq hywiki--word-only word
hywiki--start start
hywiki--end end))
hywiki--start
(hywiki-get-referent hywiki--word-only)
(goto-char hywiki--start))
(progn
(setq hywiki--current-page (hywiki-get-buffer-page-name))
;; Don't highlight current-page matches unless they
;; include a #section.
(unless (string-equal hywiki--current-page
(buffer-substring-no-properties
hywiki--start hywiki--end))
(if (setq hywiki--buts (hproperty:but-get-all-in-region
hywiki--start hywiki--end
'face hywiki-word-face))
(if (> (length hywiki--buts) 1)
(progn (hproperty:but-clear-all-in-list hywiki--buts)
(hywiki-maybe-highlight-references
hywiki--start hywiki--end))
;; There is only one existing button
(setq hywiki--buts (car hywiki--buts)
hywiki--but-start (hproperty:but-start hywiki--buts)
hywiki--but-end (hproperty:but-end hywiki--buts))
(unless (and (= hywiki--start hywiki--but-start)
(= hywiki--end hywiki--but-end))
(hproperty:but-delete hywiki--buts)
(hywiki-maybe-highlight-references
hywiki--start hywiki--end)))
(hywiki-maybe-highlight-references
hywiki--start hywiki--end))))
;; Remove any potential earlier highlighting since the
;; previous word may have changed.
(skip-syntax-backward "^-$()<>._\"\'")
(when (setq hywiki--buts (hproperty:but-get-all-in-region
(point) (1+ (point)) 'face hywiki-word-face))
(if (> (length hywiki--buts) 1)
(hproperty:but-clear-all-in-list hywiki--buts)
;; There is only one existing button
(setq hywiki--buts (car hywiki--buts)
hywiki--but-start (hproperty:but-start hywiki--buts)
hywiki--but-end (hproperty:but-end hywiki--buts))
(hproperty:but-delete hywiki--buts)))))))))