branch: externals/loc-changes
commit a1d2852c4422f09f385069127b93a5c455954e9b
Author: rocky <[email protected]>
Commit: rocky <[email protected]>

    Minor revisions
---
 loc-changes.el  | 251 ++++++++++++++++++++++++++++----------------------------
 test/.gitignore |   1 +
 2 files changed, 127 insertions(+), 125 deletions(-)

diff --git a/loc-changes.el b/loc-changes.el
index f459c30bdc..871cc2fe30 100644
--- a/loc-changes.el
+++ b/loc-changes.el
@@ -1,10 +1,11 @@
-;;; loc-changes.el --- keep track of positions even after buffer changes
+;;; loc-changes.el --- Keep track of positions even after buffer changes
 
-;; Copyright (C) 2015, 2016, 2020 Free Software Foundation, Inc
+;; Copyright (C) 2015, 2016, 2020, 2026 Free Software Foundation, Inc
 
 ;; Author: Rocky Bernstein <[email protected]>
-;; Version: 1.2
+;; Version: 1.3
 ;; URL: https://github.com/rocky/emacs-loc-changes
+;; Package-Requires: ((emacs "24.4") (compat "30.1.0.1"))
 ;; Compatibility: GNU Emacs 24.x
 
 ;; This program is free software; you can redistribute it and/or modify
@@ -37,26 +38,26 @@
 
 ;; Press C-x C-e at the end of the next line configure the program in GNU emacs
 ;; for building via "make" to get set up.
-;; (compile (format "EMACSLOADPATH=:%s ./autogen.sh" "."))
+;; (compile (format "EMACSLOADPATH=:%s ./autogen.sh" (file-name-directory 
(locate-library "test-simple.elc"))))
 ;; After that you can run:
-;; (compile "make check")
+;; (compile (format "EMACSLOADPATH=:%s make check" (file-name-directory 
(locate-library "test-simple.elc"))))
 
-(eval-when-compile (require 'cl))
+(eval-when-compile
+  (require 'cl-lib))
 
 (make-variable-buffer-local 'loc-changes-alist)
 (defvar loc-changes-alist '()
   "A buffer-local association-list (alist) of line numbers and
 their corresponding markers in the buffer. The key is the line
 number; the a list of value the marker and the initial 10
-characters after that mark" )
+characters after that mark")
 
-(defun loc-changes:follow-mark(event)
+(defun loc-changes:follow-mark (event)
   (interactive "e")
   (let* ((pos (posn-point (event-end event)))
-        (mark (car (get-text-property pos 'mark))))
-    (switch-to-buffer-other-window  (marker-buffer mark))
-    (goto-char (marker-position mark))
-    ))
+         (mark (car (get-text-property pos 'mark))))
+    (switch-to-buffer-other-window (marker-buffer mark))
+    (goto-char (marker-position mark))))
 
 
 (defun loc-changes:alist-describe (&optional opt-buffer)
@@ -65,27 +66,25 @@ not given, the current buffer is used. Information is put 
in an
 internal buffer called *Describe*."
   (interactive "")
   (let ((buffer (or opt-buffer (current-buffer)))
-       (alist))
+        (alist))
     (with-current-buffer buffer
-         (setq alist loc-changes-alist)
-         (unless (listp alist) (error "expecting loc-changes-alist to be a 
list"))
-         )
+      (setq alist loc-changes-alist)
+      (unless (listp alist)
+        (error "expecting loc-changes-alist to be a list")))
     (switch-to-buffer (get-buffer-create "*Describe*"))
     (setq buffer-read-only 'nil)
     (delete-region (point-min) (point-max))
     (dolist (assoc alist)
-         (put-text-property
-          (insert-text-button
-           (format "line %d: %s" (car assoc) (cadr assoc))
-           'action 'loc-changes:follow-mark
-           'help-echo "mouse-2: go to this location")
-          (point)
-          'mark (cdr assoc)
-           )
-         (insert (format ":\t%s\n" (cl-caddr assoc)))
-         )
-    (setq buffer-read-only 't)
-    ))
+      (put-text-property
+       (insert-text-button
+        (format "line %d: %s" (car assoc) (cadr assoc))
+        'action
+        'loc-changes:follow-mark
+        'help-echo
+        "mouse-2: go to this location")
+       (point) 'mark (cdr assoc))
+      (insert (format ":\t%s\n" (cl-caddr assoc))))
+    (setq buffer-read-only 't)))
 
 (defun loc-changes-goto-line (line-number &optional column-number)
   "Position `point' at LINE-NUMBER of the current buffer. If
@@ -103,68 +102,76 @@ is okay to use in a Lisp program."
        (list (prefix-numeric-value current-prefix-arg))
      ;; Look for a default, a number in the buffer at point.
      (let* ((default
-             (save-excursion
-               (skip-chars-backward "0-9")
-               (if (looking-at "[0-9]")
-                   (string-to-number
-                    (buffer-substring-no-properties
-                     (point)
-                     (progn (skip-chars-forward "0-9")
-                            (point)))))))
-           ;; Decide if we're switching buffers.
-           (buffer
-            (if (consp current-prefix-arg)
-                (other-buffer (current-buffer) t)))
-           (buffer-prompt
-            (if buffer
-                (concat " in " (buffer-name buffer))
-              "")))
+             (save-excursion
+               (skip-chars-backward "0-9")
+               (if (looking-at "[0-9]")
+                   (string-to-number
+                    (buffer-substring-no-properties
+                     (point)
+                     (progn
+                       (skip-chars-forward "0-9")
+                       (point)))))))
+            ;; Decide if we're switching buffers.
+            (buffer
+             (if (consp current-prefix-arg)
+                 (other-buffer (current-buffer) t)))
+            (buffer-prompt
+             (if buffer
+                 (concat " in " (buffer-name buffer))
+               "")))
        ;; Read the argument, offering that number (if any) as default.
-       (list (read-number (format "Goto line%s: " buffer-prompt)
-                          (list default (line-number-at-pos)))
-            buffer))))
+       (list
+        (read-number (format "Goto line%s: " buffer-prompt)
+                     (list default (line-number-at-pos)))
+        buffer))))
   (unless (wholenump line-number)
-    (error "Expecting line-number parameter `%s' to be a whole number"
-          line-number))
+    (error
+     "Expecting line-number parameter `%s' to be a whole number"
+     line-number))
   (unless (> line-number 0)
-    (error "Expecting line-number parameter `%d' to be greater than 0"
-          line-number))
+    (error
+     "Expecting line-number parameter `%d' to be greater than 0"
+     line-number))
   (let ((last-line (line-number-at-pos (point-max))))
     (unless (<= line-number last-line)
       (error
        "Line number %d should not exceed %d, the number of lines in the buffer"
-       line-number last-line))
+       line-number
+       last-line))
     (goto-char (point-min))
     (forward-line (1- line-number))
     (if column-number
-       (let ((last-column
-              (save-excursion
-                (move-end-of-line 1)
-                (current-column))))
-         (cond ((not (wholenump column-number))
-                (message
-                 "Column ignored. Expecting column-number parameter `%s' to be 
a whole number"
-                         column-number))
-               ((<= column-number 0)
-                (message
-                 "Column ignored. Expecting column-number parameter `%d' to be 
a greater than 1"
-                         column-number))
-               ((>= column-number last-column)
-                (message
-                 "Column ignored. Expecting column-number parameter `%d' to be 
a less than %d"
-                  column-number last-column))
-               (t (forward-char (1- column-number)))))
-      )
-    (redisplay)
-    )
-  )
+        (let ((last-column
+               (save-excursion
+                 (move-end-of-line 1)
+                 (current-column))))
+          (cond
+           ((not (wholenump column-number))
+            (message
+             "Column ignored. Expecting column-number parameter `%s' to be a 
whole number"
+             column-number))
+           ((<= column-number 0)
+            (message
+             "Column ignored. Expecting column-number parameter `%d' to be a 
greater than 1"
+             column-number))
+           ((>= column-number last-column)
+            (message
+             "Column ignored. Expecting column-number parameter `%d' to be a 
less than %d"
+             column-number last-column))
+           (t
+            (forward-char (1- column-number))))))
+    (redisplay)))
 
 (defun loc-changes-add-elt (pos)
   "Add an element `loc-changes-alist'. The car will be POS and a
 marker for it will be created at the point."
   (setq loc-changes-alist
-       (cons (cons pos (list (point-marker) (buffer-substring (point) 
(point-at-eol))))
-                   loc-changes-alist)))
+        (cons
+         (cons
+          pos
+          (list
+           (point-marker) (buffer-substring (point) (pos-eol))))
+         loc-changes-alist)))
 
 (defun loc-changes-add-and-goto (line-number &optional opt-buffer)
   "Add a marker at LINE-NUMBER and record LINE-NUMBER and its
@@ -174,43 +181,40 @@ marker association in `loc-changes-alist'."
        (list (prefix-numeric-value current-prefix-arg))
      ;; Look for a default, a number in the buffer at point.
      (let* ((default
-             (save-excursion
-               (skip-chars-backward "0-9")
-               (if (looking-at "[0-9]")
-                   (string-to-number
-                    (buffer-substring-no-properties
-                     (point)
-                     (progn (skip-chars-forward "0-9")
-                            (point)))))))
-           ;; Decide if we're switching buffers.
-           (buffer
-            (if (consp current-prefix-arg)
-                (other-buffer (current-buffer) t)))
-           (buffer-prompt
-            (if buffer
-                (concat " in " (buffer-name buffer))
-              "")))
+             (save-excursion
+               (skip-chars-backward "0-9")
+               (if (looking-at "[0-9]")
+                   (string-to-number
+                    (buffer-substring-no-properties
+                     (point)
+                     (progn
+                       (skip-chars-forward "0-9")
+                       (point)))))))
+            ;; Decide if we're switching buffers.
+            (buffer
+             (if (consp current-prefix-arg)
+                 (other-buffer (current-buffer) t)))
+            (buffer-prompt
+             (if buffer
+                 (concat " in " (buffer-name buffer))
+               "")))
        ;; Read the argument, offering that number (if any) as default.
-       (list (read-number (format "Goto line%s: " buffer-prompt)
-                          (list default (line-number-at-pos)))
-            buffer))))
+       (list
+        (read-number (format "Goto line%s: " buffer-prompt)
+                     (list default (line-number-at-pos)))
+        buffer))))
 
   (let ((buffer (or opt-buffer (current-buffer))))
     (with-current-buffer buffer
       (loc-changes-goto-line line-number)
-      (loc-changes-add-elt line-number)
-      ))
-  )
+      (loc-changes-add-elt line-number))))
 
 (defun loc-changes-clear-buffer (&optional opt-buffer)
   "Remove all location-tracking associations in BUFFER."
   (interactive "bbuffer: ")
-  (let ((buffer (or opt-buffer (current-buffer)))
-       )
+  (let ((buffer (or opt-buffer (current-buffer))))
     (with-current-buffer buffer
-      (setq loc-changes-alist '())
-      ))
-  )
+      (setq loc-changes-alist '()))))
 
 (defun loc-changes-reset-position (&optional opt-buffer no-insert)
   "Update `loc-changes-alist' so that the line number of point is
@@ -224,19 +228,17 @@ buffer and then cause the debugger to reread/reevaluate 
the file
 so that its positions are will be reflected."
   (interactive "")
   (let* ((line-number (line-number-at-pos (point)))
-        (elt (assq line-number loc-changes-alist)))
-    (let ((buffer (or opt-buffer (current-buffer)))
-         )
+         (elt (assq line-number loc-changes-alist)))
+    (let ((buffer (or opt-buffer (current-buffer))))
       (with-current-buffer buffer
-       (if elt
-           (setcdr elt
-                   (list (point-marker) (buffer-substring (point) 
(point-at-eol))))
-         (unless no-insert
-           (loc-changes-add-elt line-number)
-           )
-         ))
-      )
-    ))
+        (if elt
+            (setcdr
+             elt
+             (list
+              (point-marker)
+              (buffer-substring (point) (pos-eol))))
+          (unless no-insert
+            (loc-changes-add-elt line-number)))))))
 
 
 (defun loc-changes-goto (line-number &optional opt-buffer no-update)
@@ -246,20 +248,19 @@ seen before, we will add a new mark for this line-number. 
However if
 NO-UPDATE is set, no mark is added."
   ;;; FIXME: opt-buffer is not used
   (unless (wholenump line-number)
-    (error "Expecting line-number parameter `%s' to be a whole number"
-          line-number))
+    (error
+     "Expecting line-number parameter `%s' to be a whole number"
+     line-number))
   (let ((elt (assq line-number loc-changes-alist)))
     (if elt
-       (let ((marker (cadr elt)))
-         (unless (markerp marker)
-           (error "Internal error: loc-changes-alist is not a marker"))
-         (goto-char (marker-position marker)))
+        (let ((marker (cadr elt)))
+          (unless (markerp marker)
+            (error
+             "Internal error: loc-changes-alist is not a marker"))
+          (goto-char (marker-position marker)))
       (if no-update
-         (loc-changes-goto-line line-number)
-       (loc-changes-add-and-goto line-number))
-      )
-    )
-  )
+          (loc-changes-goto-line line-number)
+        (loc-changes-add-and-goto line-number)))))
 
 (provide 'loc-changes)
 ;;; loc-changes.el ends here
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000000..437ff9dddb
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1 @@
+/test-basic.elc

Reply via email to