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

Reply via email to