]> git.ekhem.eu.org Git - guix.git/commitdiff
[emacs] Edit multiple files at once.
authorJakub Czajka <jakub@ekhem.eu.org>
Fri, 23 Dec 2022 16:31:13 +0000 (17:31 +0100)
committerJakub Czajka <jczajka@google.com>
Sun, 24 Dec 2023 18:53:07 +0000 (19:53 +0100)
Emacs can present views which aggregate multiple files. Editing these
views applies changes to the actual files (batch editing).

conf/home/emacs.scm
emacs/.config/emacs/conf/conf-batch-edit.el [new file with mode: 0644]

index 6caf84ef23d874fa1396cb7370677ab4fd73b95f..4458f58019711a0ceea2d489a0de6beda815a235 100644 (file)
   #:use-module (guix gexp)
   #:export (emacs-services))
 
+(define emacs-batch-edit-service
+  (service home-program-service-type
+          (home-program-configuration
+           (packages
+            (list emacs-wgrep))
+           (dotfiles
+            (list "emacs/.config/emacs/conf/conf-batch-edit.el")))))
+
 (define emacs-daemon-shepherd-service
   (shepherd-service
    (provision '(emacs))
@@ -50,6 +58,7 @@
                   "emacs/.local/bin/emacs_client")))))
 
 (define emacs-services
-  (list emacs-daemon-service
+  (list emacs-batch-edit-service
+       emacs-daemon-service
         emacs-package-service
         emacs-service))
diff --git a/emacs/.config/emacs/conf/conf-batch-edit.el b/emacs/.config/emacs/conf/conf-batch-edit.el
new file mode 100644 (file)
index 0000000..7c756fc
--- /dev/null
@@ -0,0 +1,30 @@
+;; Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; conf-batch-edit.el - edit multiple files at once.
+
+(require 'conf-package)
+
+(use-package wdired
+  :custom
+  (wdired-allow-to-change-permissions t)
+  (wdired-allow-to-redirect-links t)
+  ;; Example: Renaming `b' to `a/b' will move `b' to directory `a'.
+  (wdired-create-parent-directories t))
+
+(use-package wgrep
+  :ensure t
+  :bind
+  (:map grep-mode-map
+       ("C-c C-q" . wgrep-change-to-wgrep-mode)
+       :map wgrep-mode-map
+       ("C-c C-c" . wgrep-finish-edit))
+  :custom
+  (wgrep-auto-save-buffer t))
+
+(use-package occur
+  :bind
+  (:map occur-mode-map
+       ("C-c C-q" . occur-edit-mode)))
+
+(provide 'conf-batch-edit)