branch: externals/hyperbole
commit 54f9e057eb0fa9d1d0d5040cf1c9bb9e010968de
Merge: db58faa356 ceb8b52c8a
Author: Robert Weiner <r...@gnu.org>
Commit: GitHub <nore...@github.com>

    Merge pull request #555 from rswgnu/rsw
    
    hibtypes.el(ipython-stack-frame, ripgrep-msg, grep-msg): Standardize
---
 ChangeLog   | 12 ++++++++--
 hactypes.el |  5 +++--
 hasht.el    |  6 ++---
 hibtypes.el | 75 +++++++++++++++++++++++++------------------------------------
 hpath.el    | 15 ++++++++-----
 5 files changed, 57 insertions(+), 56 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c3c9deb99a..ef6f1a2f86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,17 @@
+2024-06-30  Bob Weiner  <r...@gnu.org>
+
+* hpath.el (hpath:find-line): Allow line-num and col-num to be strings.
+  hibtypes.el (hib-link-to-file-line): Add to share among multiple grep
+    file ibtypes.
+  hibtypes.el (ipython-stack-frame, ripgrep-msg, grep-msg): Standardize
+    by using above new function.
+
 2024-06-30  Mats Lidell  <ma...@gnu.org>
 
 * Makefile (internal-docker-all-tests-ert-output): Target for running all
     tests using ert from within docker used by docker-all-tests.
-    (VERSIONS_VERSIONS): List of Emacs versions to run batch-tests and 
all-tests to
-    check same versions as the CI/CD run locally.
+    (VERSIONS_VERSIONS): List of Emacs versions to run batch-tests and
+    all-tests to check same versions as the CI/CD run locally.
     (docker-all-tests, docker-batch-tests): Targets for running
     batch-tests and all-tests for all DOCKER_VERSIONS.
     Update developer target documentation.
diff --git a/hactypes.el b/hactypes.el
index c855245d3a..6627f7b4ec 100644
--- a/hactypes.el
+++ b/hactypes.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    23-Sep-91 at 20:34:36
-;; Last-Mod:     10-Mar-24 at 18:35:02 by Bob Weiner
+;; Last-Mod:     30-Jun-24 at 17:12:44 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -429,7 +429,8 @@ the window or as close as possible."
     (hypb:error "(link-to-file): Invalid file name: \"%s\"" path)))
 
 (defact link-to-file-line (path line-num)
-  "Display a file given by PATH scrolled to LINE-NUM."
+  "Display a file given by PATH scrolled to LINE-NUM.
+LINE-NUM may be an integer or string."
   (interactive "fPath to link to: \nnDisplay at line number: ")
   ;; Remove any double quotes and whitespace at the start and end of
   ;; the path that interactive use may have introduced.
diff --git a/hasht.el b/hasht.el
index 17d0c5e51f..0e3706edc5 100644
--- a/hasht.el
+++ b/hasht.el
@@ -8,7 +8,7 @@
 ;; AUTHOR:       Bob Weiner
 ;;
 ;; ORIG-DATE:    16-Mar-90 at 03:38:48
-;; LAST-MOD:     30-Jul-16 at 08:50:38 by Bob Weiner
+;; LAST-MOD:     30-Jun-24 at 17:39:31 by Bob Weiner
 ;;
 ;; Copyright (C) 1990-1995, 1997, 2016  Free Software Foundation, Inc.
 ;; See the file BR-COPY for license information.
@@ -50,7 +50,7 @@
 ;;; ************************************************************************
 
 (defvar hash-merge-values-function 'hash-merge-values
-  "*Function to call in hash-merge to merge the values from 2 hash tables that 
contain the same key.
+  "*Hash-merge function to merge values from 2 hash tables with the same key.
 It is sent the two values as arguments.")
 
 ;;; ************************************************************************
@@ -194,7 +194,7 @@ in reverse order of occurrence (they are prepended to the 
list)."
     (cons 'hasht obarray)))
 
 (defun hash-map (func hash-table)
-  "Return a list of the results of applying FUNC to each (<value> . <key>) 
element of HASH-TABLE."
+  "Return result of applying FUNC over each (<value> . <key>) in HASH-TABLE."
   (if (not (hashp hash-table))
       (error "(hash-map): Invalid hash-table: `%s'" hash-table))
   (let ((result))
diff --git a/hibtypes.el b/hibtypes.el
index 9217f6cf97..48d9d7dba3 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    19-Sep-91 at 20:45:31
-;; Last-Mod:     30-Jun-24 at 16:00:23 by Bob Weiner
+;; Last-Mod:     30-Jun-24 at 17:22:40 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -899,6 +899,29 @@ See `hpath:find' function documentation for special file 
display options."
 ;;; compilation errors or HyRolo stuck position error messages.
 ;;; ========================================================================
 
+(defun hib-link-to-file-line (file line-num)
+  "Expand FILE and jump to its LINE-NUM in Hyperbole specified window.
+The variable `hpath:display-where' determines where to display the file.
+LINE-NUM may be an integer or string."
+  ;; RSW 12-05-2021 - Added hpath:expand in next line to
+  ;; resolve any variables in the path before checking if absolute.
+  (let ((source-loc (unless (file-name-absolute-p (hpath:expand file))
+                      (hbut:to-key-src t)))
+       ext)
+    (if (stringp source-loc)
+        (setq file (expand-file-name file (file-name-directory source-loc)))
+      (setq file (or (hpath:prepend-shell-directory file)
+                    ;; find-library-name will strip file
+                    ;; suffixes, so use it only when the file
+                    ;; either doesn't have a suffix or has a
+                    ;; library suffix.
+                    (and (or (null (setq ext (file-name-extension file)))
+                             (member (concat "." ext) (get-load-suffixes)))
+                         (ignore-errors (find-library-name file)))
+                    (expand-file-name file))))
+    (when (file-exists-p file)
+      (actypes::link-to-file-line file line-num))))
+
 (defib ipython-stack-frame ()
   "Jump to the line associated with an ipython stack frame line numbered msg.
 ipython outputs each pathname once followed by all matching lines
@@ -931,15 +954,8 @@ than a helm completion buffer)."
                       (not (re-search-forward " in " nil (line-end-position)))
                       (and (setq file (buffer-substring-no-properties 
(line-beginning-position) (match-beginning 0)))
                            (string-empty-p (string-trim file))))
-            (let* ((but-label (concat file ":" line-num))
-                   (source-loc (unless (file-name-absolute-p file)
-                                 (hbut:to-key-src t))))
-              (when (stringp source-loc)
-                (setq file (expand-file-name file (file-name-directory 
source-loc))))
-              (when (file-readable-p file)
-                (setq line-num (string-to-number line-num))
-                (ibut:label-set but-label)
-                (hact 'link-to-file-line file line-num)))))))))
+           (ibut:label-set (concat file ":" line-num))
+           (hact 'hib-link-to-file-line file line-num)))))))
 
 (defib ripgrep-msg ()
   "Jump to the line associated with a ripgrep (rg) line numbered msg.
@@ -974,18 +990,8 @@ than a helm completion buffer)."
           (unless (or (looking-at "[1-9][0-9]*[-:]\\|--$")
                       (and (setq file (buffer-substring-no-properties 
(line-beginning-position) (line-end-position)))
                            (string-empty-p (string-trim file))))
-            (let* ((but-label (concat file ":" line-num))
-                  ;; RSW 12-05-2021 - Added hpath:expand in next line to
-                  ;; resolve any variables in the path before checking if 
absolute.
-                  (source-loc (unless (file-name-absolute-p (hpath:expand 
file))
-                                 (hbut:to-key-src t))))
-              (if (stringp source-loc)
-                  (setq file (expand-file-name file (file-name-directory 
source-loc)))
-               (setq file (or (hpath:prepend-shell-directory file) file)))
-              (when (file-readable-p file)
-                (setq line-num (string-to-number line-num))
-                (ibut:label-set but-label)
-                (hact 'link-to-file-line file line-num)))))))))
+           (ibut:label-set (concat file ":" line-num))
+           (hact 'hib-link-to-file-line file line-num)))))))
 
 (defib hyrolo-stuck-msg ()
   "Jump to the position where a HyRolo search has become stuck from the error.
@@ -1055,28 +1061,9 @@ in grep and shell buffers."
              (and (string-match "grep\\|shell" (buffer-name))
                   (looking-at "\\([^ \t\n\r:\"'`]+\\)-\\([1-9][0-9]*\\)-")))
         (let* ((file (match-string-no-properties 1))
-               (line-num  (or (match-string-no-properties 2) "1"))
-               (but-label (concat file ":" line-num))
-              ;; RSW 12-05-2021 - Added hpath:expand in next line to
-              ;; resolve any variables in the path before checking if absolute.
-               (source-loc (unless (file-name-absolute-p (hpath:expand file))
-                             (hbut:to-key-src t)))
-              ext)
-          (if (stringp source-loc)
-              (setq file (expand-file-name file (file-name-directory 
source-loc)))
-           (setq file (or (hpath:prepend-shell-directory file)
-                          ;; find-library-name will strip file
-                          ;; suffixes, so use it only when the file
-                          ;; either doesn't have a suffix or has a
-                          ;; library suffix.
-                          (and (or (null (setq ext (file-name-extension file)))
-                                   (member (concat "." ext) 
(get-load-suffixes)))
-                               (ignore-errors (find-library-name file)))
-                          (expand-file-name file))))
-         (when (file-exists-p file)
-            (setq line-num (string-to-number line-num))
-            (ibut:label-set but-label)
-            (hact 'link-to-file-line file line-num)))))))
+               (line-num  (or (match-string-no-properties 2) "1")))
+         (ibut:label-set (concat file ":" line-num))
+         (hact 'hib-link-to-file-line file line-num))))))
 
 ;;; ========================================================================
 ;;; Jumps to source line associated with debugger stack frame or breakpoint
diff --git a/hpath.el b/hpath.el
index e687b39590..7e2a63e7bb 100644
--- a/hpath.el
+++ b/hpath.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:     1-Nov-91 at 00:44:23
-;; Last-Mod:     23-Jun-24 at 00:09:03 by Mats Lidell
+;; Last-Mod:     30-Jun-24 at 17:09:25 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1686,6 +1686,7 @@ Return nil if none are found."
 
 (defun hpath:find-line (filename line-num &optional col-num display-where)
   "Edit file FILENAME with point placed at LINE-NUM and optional COL-NUM.
+When given, LINE-NUM and COL-NUM may be strings or integers.
 
 `hpath:display-where-alist' is consulted using the optional
 argument, DISPLAY-WHERE (a symbol) or if that is nil, the value
@@ -1700,10 +1701,14 @@ frame.  Always return t."
   (hpath:find
    (concat
     filename
-    (when (integerp line-num)
-      (concat ":" (int-to-string line-num)))
-    (when (integerp col-num)
-      (concat ":" (int-to-string col-num))))
+    (cond ((integerp line-num)
+          (concat ":" (int-to-string line-num)))
+         ((stringp line-num)
+          (concat ":" line-num)))
+    (cond ((integerp col-num)
+          (concat ":" (int-to-string col-num)))
+         ((stringp col-num)
+          (concat ":" col-num))))
    display-where)
   t)
 

Reply via email to