branch: externals/hyperbole
commit 06608abdf9d069a14579f950bf909f15506fc5f8
Author: bw <r...@gnu.org>
Commit: bw <r...@gnu.org>

    hpath:file-position-to-line-and-column: Fix shorten path default-dir
    
    hbut.el (ibut:insert-text): Remove duplicate 'actypes::link-to-file'
    clause.
---
 ChangeLog |  7 +++++++
 hbut.el   | 23 +++++++++--------------
 hpath.el  | 26 ++++++++++++++------------
 3 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ff85eac283..ca85afc522 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2025-04-26  Bob Weiner  <r...@gnu.org>
+
+* hbut.el (ibut:insert-text): Remove duplicate 'actypes::link-to-file' clause.
+
+* hpath.el (hpath:file-position-to-line-and-column): Fix to shorten path
+    in the current directory, not within the buffer of path.
+
 2025-04-20  Bob Weiner  <r...@gnu.org>
 
 * test/hui-tests.el (hui--link-possible-types): Change Outline Heading
diff --git a/hbut.el b/hbut.el
index 4b4b45525d..fbe82677d0 100644
--- a/hbut.el
+++ b/hbut.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    18-Sep-91 at 02:57:09
-;; Last-Mod:     20-Apr-25 at 15:16:34 by Bob Weiner
+;; Last-Mod:     26-Apr-25 at 10:12:23 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -2700,13 +2700,6 @@ Summary of operations based on inputs (name arg from 
\\='hbut:current attrs):
       ('actypes::link-to-ebut (progn (insert "<elink:" arg1)
                                     (when arg2 (insert ": " arg2))
                                     (insert ">")))
-      ('actypes::link-to-file
-       ;; arg2 when given is a buffer position
-       (insert "\""
-              (if arg2
-                  (hpath:file-position-to-line-and-column arg1 arg2)
-                (hpath:shorten arg1))
-              "\""))
       ('actypes::link-to-ibut (progn (insert "<ilink:" arg1)
                                     (when arg2 (insert ": " arg2))
                                     (insert ">")))
@@ -2735,12 +2728,14 @@ Summary of operations based on inputs (name arg from 
\\='hbut:current attrs):
            (format "\"%s:%d\"" (hpath:shorten arg1) arg2)
          (format "\"%s:%d:%d\"" (hpath:shorten arg1) arg2 arg3))))
       ('actypes::link-to-file
-       (insert (format "\"%s\""
-                      (if (/= (length args) 2)
-                          ;; filename only
-                          (hpath:shorten arg1)
-                        ;; includes buffer pos that we translate to line:col
-                        (hpath:file-position-to-line-and-column arg1 arg2)))))
+       ;; arg2 when given is a buffer position
+       (insert "\""
+              (if arg2
+                  ;; includes buffer pos that we translate to line:col
+                  (hpath:file-position-to-line-and-column arg1 arg2)
+                ;; filename only
+                (hpath:shorten arg1))
+              "\""))
       ('actypes::link-to-string-match
        (insert (format "\"%s#%s%s\"" (hpath:shorten arg3) arg1
                       (if (<= arg2 1) "" (concat ":I" (number-to-string 
arg2))))))
diff --git a/hpath.el b/hpath.el
index 89e1bd60a9..3c0b863b94 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:     13-Apr-25 at 01:06:44 by Bob Weiner
+;; Last-Mod:     26-Apr-25 at 10:22:42 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1401,17 +1401,19 @@ Parse out the parts and return a list, else nil."
          (list file))))))
 
 (defun hpath:file-position-to-line-and-column (path position)
-  "Return \"path:line-num:col-num\" given PATH and character POSITION.
-The path in the result is abbreviated when possible."
-  (with-current-buffer (find-file-noselect path)
-    (save-excursion
-      (goto-char position)
-      (if (zerop (current-column))
-         (format "%s:L%d" (hpath:shorten path) (line-number-at-pos (point) t))
-       (format "%s:L%d:C%d"
-               (hpath:shorten path)
-               (line-number-at-pos (point) t)
-               (current-column))))))
+  "Return \"path:L<line-num>:C<col-num>\" given PATH and character POSITION.
+If col-num is 0, the :C<col-num> is excluded.  The path in the
+result is abbreviated relative to the caller's buffer directory."
+  (let ((shortened-path (hpath:shorten path)))
+    (with-current-buffer (find-file-noselect path)
+      (save-excursion
+       (goto-char position)
+       (if (zerop (current-column))
+           (format "%s:L%d" shortened-path (line-number-at-pos (point) t))
+         (format "%s:L%d:C%d"
+                 shortened-path
+                 (line-number-at-pos (point) t)
+                 (current-column)))))))
 
 (defun hpath:find-noselect (filename)
   "Find but don't display FILENAME.

Reply via email to