From 481753bd5e165d0a748536e831ded2d7b734234c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Jul 2024 02:02:08 -0400 Subject: [PATCH] refactor!: remove pcre2el package BREAKING CHANGE: This removes the pcre2el package, which Doom was using solely for one function to escape PCREs. In the interest of thinning out Doom's core, I've hoisted a simpler version of the function into Doom's stdlib so I can remove the dependency. --- lisp/lib/strings.el | 15 +++++++++++++++ lisp/packages.el | 1 - modules/completion/ivy/autoload/ivy.el | 2 +- modules/config/default/autoload/search.el | 6 +++--- modules/tools/lookup/autoload/lookup.el | 2 +- 5 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 lisp/lib/strings.el diff --git a/lisp/lib/strings.el b/lisp/lib/strings.el new file mode 100644 index 000000000..f06ebc52f --- /dev/null +++ b/lisp/lib/strings.el @@ -0,0 +1,15 @@ +;;; lisp/lib/strings.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun doom-pcre-quote (str) + "Like `reqexp-quote', but for PCREs." + (let ((special '(?. ?^ ?$ ?* ?+ ?? ?{ ?\\ ?\[ ?\| ?\()) + (quoted nil)) + (mapc (lambda (c) + (when (memq c special) + (push ?\\ quoted)) + (push c quoted)) + str) + (concat (nreverse quoted)))) + +;;; end of strings.el diff --git a/lisp/packages.el b/lisp/packages.el index 5af323dee..92e54effb 100644 --- a/lisp/packages.el +++ b/lisp/packages.el @@ -31,7 +31,6 @@ (package! better-jumper :pin "47622213783ece37d5337dc28d33b530540fc319") (package! dtrt-indent :pin "939c5e374ac0175bb7d561542e22e47a72d04aa8") (package! helpful :pin "4ba24cac9fb14d5fdc32582cd947572040e82b2c") -(package! pcre2el :pin "380723b2701cceb75c266440fb8db918f3340d50") (package! smartparens :pin "f7cf316715e5018186c226aab8242c9e5ce131c8") (package! ws-butler :pin "e3a38d93e01014cd47bf5af4924459bd145fd7c4") diff --git a/modules/completion/ivy/autoload/ivy.el b/modules/completion/ivy/autoload/ivy.el index e24b477dd..22cee141b 100644 --- a/modules/completion/ivy/autoload/ivy.el +++ b/modules/completion/ivy/autoload/ivy.el @@ -270,7 +270,7 @@ The point of this is to avoid Emacs locking up indexing massive file trees." ((string= substr "|") "\\\\\\\\|") ((concat "\\\\" substr)))) - (rxt-quote-pcre (doom-thing-at-point-or-region))))) + (doom-pcre-quote (doom-thing-at-point-or-region))))) directory args (or prompt (format "Search project [%s]: " diff --git a/modules/config/default/autoload/search.el b/modules/config/default/autoload/search.el index 2a9c122b4..2a9848a3c 100644 --- a/modules/config/default/autoload/search.el +++ b/modules/config/default/autoload/search.el @@ -63,7 +63,7 @@ input and search the whole buffer for it." (consult-line (replace-regexp-in-string " " "\\\\ " - (rxt-quote-pcre + (doom-pcre-quote (buffer-substring-no-properties start end)))) (call-interactively #'consult-line))))))) @@ -98,7 +98,7 @@ If prefix ARG is set, include ignored/hidden files." "Search current project for symbol at point. If prefix ARG is set, prompt for a known project to search from." (interactive - (list (rxt-quote-pcre (or (doom-thing-at-point-or-region) "")) + (list (doom-pcre-quote (or (doom-thing-at-point-or-region) "")) (let ((projectile-project-root nil)) (if current-prefix-arg (if-let (projects (projectile-relevant-known-projects)) @@ -118,7 +118,7 @@ If prefix ARG is set, prompt for a known project to search from." "Conduct a text search in the current project for symbol at point. If prefix ARG is set, prompt for a known project to search from." (interactive - (list (rxt-quote-pcre (or (doom-thing-at-point-or-region) "")))) + (list (doom-pcre-quote (or (doom-thing-at-point-or-region) "")))) (require 'org) (+default/search-project-for-symbol-at-point symbol org-directory)) diff --git a/modules/tools/lookup/autoload/lookup.el b/modules/tools/lookup/autoload/lookup.el index 8606db15a..393253da3 100644 --- a/modules/tools/lookup/autoload/lookup.el +++ b/modules/tools/lookup/autoload/lookup.el @@ -238,7 +238,7 @@ This backend prefers \"just working\" over accuracy." Uses and requires `+ivy-file-search', `+helm-file-search', or `+vertico-file-search'. Will return nil if neither is available. These require ripgrep to be installed." (when identifier - (let ((query (rxt-quote-pcre identifier))) + (let ((query (doom-pcre-quote identifier))) (ignore-errors (cond ((modulep! :completion ivy) (+ivy-file-search :query query)