From 3ac5eafdf7dea307702df584850916e32940e328 Mon Sep 17 00:00:00 2001 From: Protesilaos Date: Mon, 24 Aug 2026 12:26:21 +0300 Subject: [PATCH] emacs: tweak the xref and grep settings for using ripgrep --- .../prot-emacs-modules/prot-emacs-search.el | 37 +++++++++---------- emacs/.emacs.d/prot-emacs.org | 37 +++++++++---------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/emacs/.emacs.d/prot-emacs-modules/prot-emacs-search.el b/emacs/.emacs.d/prot-emacs-modules/prot-emacs-search.el index 97fb67ee..e0abc0e3 100644 --- a/emacs/.emacs.d/prot-emacs-modules/prot-emacs-search.el +++ b/emacs/.emacs.d/prot-emacs-modules/prot-emacs-search.el @@ -76,30 +76,29 @@ (prot-emacs-configure (setq reb-re-syntax 'read) - (let ((ripgrep (or (executable-find "rg") (executable-find "ripgrep")))) - ;; All those have been changed for Emacs 28 - (setq xref-show-definitions-function #'xref-show-definitions-completing-read) ; for M-. - (setq xref-show-xrefs-function #'xref-show-definitions-buffer) ; for grep and the like + (setq xref-file-name-display 'project-relative) - (setq xref-file-name-display 'project-relative) - (setq xref-search-program (if ripgrep 'ripgrep 'grep)) - - (setq grep-save-buffers nil) - (setq grep-use-headings nil) ; Emacs 30 - - (setq grep-program (or ripgrep (executable-find "grep"))) - (setq grep-template - (if ripgrep - "/usr/bin/rg -nH --null -e " - "/usr/bin/grep -nH --null -e "))) - - (add-hook 'grep-mode #'prot-common-truncate-lines-silently) + ;; All those have been changed for Emacs 28 + (setq xref-show-definitions-function #'xref-show-definitions-completing-read) ; for M-. + (setq xref-show-xrefs-function #'xref-show-definitions-buffer) ; for grep and the like + ;; The `outline-xref' is for Emacs 32 (with-eval-after-load 'outline - ;; The `outline-xref' is for Emacs 32 (define-advice outline-xref (:around (&rest args) prot) (let ((xref-show-xrefs-function #'xref-show-definitions-completing-read)) - (apply args))))) + (apply args)))) + + (setq grep-save-buffers nil) + (setq grep-use-headings nil) ; Emacs 30 + + (if-let* ((ripgrep (or (executable-find "rg") (executable-find "ripgrep")))) + (progn + (setq grep-program ripgrep) + (setq xref-search-program 'ripgrep) + (setq grep-template (format "%s -nH --null -e " ripgrep))) + (error "You need to install RIPGREP")) + + (add-hook 'grep-mode #'prot-common-truncate-lines-silently)) ;;; wgrep (writable grep) ;; See the `grep-edit-mode' for the new built-in feature. diff --git a/emacs/.emacs.d/prot-emacs.org b/emacs/.emacs.d/prot-emacs.org index 5f1c89c2..3cf8b2c2 100644 --- a/emacs/.emacs.d/prot-emacs.org +++ b/emacs/.emacs.d/prot-emacs.org @@ -5842,30 +5842,29 @@ Note the use of the ~let~ to decide whether I use the ~grep~ or ~rg~ (prot-emacs-configure (setq reb-re-syntax 'read) - (let ((ripgrep (or (executable-find "rg") (executable-find "ripgrep")))) - ;; All those have been changed for Emacs 28 - (setq xref-show-definitions-function #'xref-show-definitions-completing-read) ; for M-. - (setq xref-show-xrefs-function #'xref-show-definitions-buffer) ; for grep and the like + (setq xref-file-name-display 'project-relative) - (setq xref-file-name-display 'project-relative) - (setq xref-search-program (if ripgrep 'ripgrep 'grep)) - - (setq grep-save-buffers nil) - (setq grep-use-headings nil) ; Emacs 30 - - (setq grep-program (or ripgrep (executable-find "grep"))) - (setq grep-template - (if ripgrep - "/usr/bin/rg -nH --null -e " - "/usr/bin/grep -nH --null -e "))) - - (add-hook 'grep-mode #'prot-common-truncate-lines-silently) + ;; All those have been changed for Emacs 28 + (setq xref-show-definitions-function #'xref-show-definitions-completing-read) ; for M-. + (setq xref-show-xrefs-function #'xref-show-definitions-buffer) ; for grep and the like + ;; The `outline-xref' is for Emacs 32 (with-eval-after-load 'outline - ;; The `outline-xref' is for Emacs 32 (define-advice outline-xref (:around (&rest args) prot) (let ((xref-show-xrefs-function #'xref-show-definitions-completing-read)) - (apply args))))) + (apply args)))) + + (setq grep-save-buffers nil) + (setq grep-use-headings nil) ; Emacs 30 + + (if-let* ((ripgrep (or (executable-find "rg") (executable-find "ripgrep")))) + (progn + (setq grep-program ripgrep) + (setq xref-search-program 'ripgrep) + (setq grep-template (format "%s -nH --null -e " ripgrep))) + (error "You need to install RIPGREP")) + + (add-hook 'grep-mode #'prot-common-truncate-lines-silently)) #+end_src *** The =prot-emacs-search.el= setup for editable grep buffers (~grep-edit-mode~ or ~wgrep~)