branch: externals/hyperbole commit 94b792e23f8b86a77df89cd0c8e4f1e65fc34408 Author: bw <r...@gnu.org> Commit: bw <r...@gnu.org>
hsys-xref.el - Add forgotten file --- ChangeLog | 4 ++++ hsys-xref.el | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8003328c99..555c460bef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2024-01-09 Bob Weiner <r...@gnu.org> + +* hsys-xref.el: Add forgotten file. + 2024-01-09 Mats Lidell <ma...@gnu.org> * test/hyrolo-tests.el (hyrolo-tests--outline-next-visible-heading-md) diff --git a/hsys-xref.el b/hsys-xref.el new file mode 100644 index 0000000000..13b441e6af --- /dev/null +++ b/hsys-xref.el @@ -0,0 +1,65 @@ +;;; hsys-xref.el --- GNU Hyperbole support functions for "xref.el" -*- lexical-binding: t; -*- +;; +;; Author: Bob Weiner +;; +;; Orig-Date: 24-Aug-91 +;; Last-Mod: 9-Jan-24 at 12:07:34 by Bob Weiner +;; +;; SPDX-License-Identifier: GPL-3.0-or-later +;; +;; Copyright (C) 1991-2022 Free Software Foundation, Inc. +;; See the "HY-COPY" file for license information. +;; +;; This file is part of GNU Hyperbole. + +;;; Commentary: + +;;; Code: + +;;; ************************************************************************ +;;; Requirements +;;; ************************************************************************ + +(require 'xref) + +;;; ************************************************************************ +;;; Public functions +;;; ************************************************************************ + +(defun hsys-xref-definitions (identifier) + "Return a list of all definitions of string IDENTIFIER." + (let* ((elisp-flag (smart-emacs-lisp-mode-p)) + (xref-backend (or (and elisp-flag + (fboundp 'ert-test-boundp) + (ert-test-boundp identifier) + (boundp 'xref-etags-mode) + 'etags) + (xref-find-backend))) + (xref-items (xref-backend-definitions xref-backend identifier))) + xref-items)) + +(defun hsys-xref-definition (identifier) + "Return the first definition of string IDENTIFIER." + (car (hsys-xref-definitions identifier))) + +(defun hsys-xref-item-buffer (item) + "Return the buffer in which xref ITEM is defined." + (marker-buffer (save-excursion (xref-location-marker (xref-item-location item))))) + +(defun hsys-xref-item-position (item) + "Return the buffer position where xref ITEM is defined." + (marker-position (save-excursion (xref-location-marker (xref-item-location item))))) + +;;; ************************************************************************ +;;; Private functions +;;; ************************************************************************ + +;; Fix next xref function to handle when called at beginning of buffer +(defun xref--item-at-point () + (get-text-property + (max (point-min) (if (eolp) (1- (point)) (point))) + 'xref-item)) + +(provide 'hsys-xref) + +;;; hsys-xref.el ends here