diff mbox series

[bug#74100] gnu: Add emacs-visual-replace.

Message ID 16e50046314ebabd8ef0993065342b5afda4c114.1730255311.git.suhail@bayesians.ca
State New
Headers show
Series [bug#74100] gnu: Add emacs-visual-replace. | expand

Commit Message

Suhail Singh Oct. 30, 2024, 3:14 a.m. UTC
* gnu/packages/emacs-xyz.scm (emacs-visual-replace): New variable.

Change-Id: I7c579785ed6b0e2989d16fb0b100e9860e8f38b9
---
 gnu/packages/emacs-xyz.scm | 62 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)


base-commit: a9c33e9f688fce88aed610ab04c650efb71b4ce6
diff mbox series

Patch

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 488b4cb5d7..367cafdd85 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -16175,6 +16175,68 @@  (define-public emacs-visual-fill-column
 window edge.")
     (license license:gpl3+)))
 
+(define-public emacs-visual-replace
+  (package
+    (name "emacs-visual-replace")
+    ;; XXX: when updating version, please ensure substitution in install-info
+    ;; phase is still accurate.
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/szermatt/visual-replace")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "085dg77wpa371i8lvsl9ckm09yfjvqwym6wrs8lxfvih5jd7mm1b"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:tests? #t
+      #:phases #~(modify-phases %standard-phases
+                   (add-before 'check 'add-test-dir-to-emacs-load-path
+                     (lambda _
+                       (setenv "EMACSLOADPATH"
+                               (string-append (getcwd) "/test:"
+                                              (getenv "EMACSLOADPATH")))))
+                   (add-after 'install 'install-info
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let* ((out (assoc-ref outputs "out"))
+                              (info-dir (string-append out "/share/info")))
+                         (invoke "eldev" "build" "--force"
+                                 "visual-replace.texi")
+                         (with-directory-excursion "docs/build/texinfo"
+                           (substitute* "visual-replace.texi"
+                             ;; XXX: Undo damage caused by sphinx-build
+                             (("visual-replace ([^,]+), Jan 01, 1970" _ ver)
+                              (string-append "visual-replace " ver))
+                             (("@copyright\\{\\} 2020-1970")
+                              "@copyright{} 2020-2024"))
+                           (invoke "make" "info")
+                           (install-file "./visual-replace.info" info-dir)
+                           (copy-recursively "./visual-replace-figures"
+                                             (string-append info-dir
+                                              "/visual-replace-figures")))))))
+      #:test-command #~(list "eldev" "--use-emacsloadpath" "-dtTC" "test")))
+    (native-inputs (list emacs-eldev python-sphinx texinfo))
+    (home-page "https://github.com/szermatt/visual-replace")
+    (synopsis
+     "Alternate interface for @code{replace-string} and @code{query-replace}")
+    (description
+     "@code{visual-replace} provides an alternate interface for search and
+replacement commands that supports previews.  The interface also allows one to
+edit both the query-text and its replacement in the same minibuffer prompt.
+The interface covers the following commands:
+
+@enumerate
+@item @code{replace-string}
+@item @code{replace-regexp}
+@item @code{query-replace}
+@item @code{query-replace-regexp}
+@end enumerate")
+    (license license:gpl3+)))
+
 (define-public emacs-writeroom
   (package
     (name "emacs-writeroom")