Commit Diff


commit - c0316ba764a14aec6b3fa0420f22a6ecab9f7199
commit + 8dd97a29c4e177335407ad098bf917d0552212e3
blob - /dev/null
blob + 14ce1891e8bf1dca13b8906a11385ecec9190e6e (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/README.md
@@ -0,0 +1,24 @@
+# Substitute (substitute.el) for GNU Emacs
+
+Efficiently replace targets in the buffer or context.
+
+Substitute is a set of commands that perform text replacement (i)
+throughout the buffer, (ii) limited to the current definition (per
+`narrow-to-defun`), (iii) from point to the end of the buffer, and
+(iv) from point to the beginning of the buffer.
+
+These substitutions are meant to be as quick as possible and, as such,
+differ from the standard `query-replace` (which I still use).  The
+provided commands prompt for substitute text and perform the
+substitution outright.
+
+**Video demo:** <https://protesilaos.com/codelog/2023-01-16-emacs-substitute-package-demo/>
+
++ Package name (GNU ELPA): `substitute`
++ Official manual: <https://protesilaos.com/emacs/substitute>
++ Git repositories:
+  + GitHub: <https://github.com/protesilaos/substitute>
+  + GitLab: <https://gitlab.com/protesilaos/substitute>
++ Video demo: <https://protesilaos.com/codelog/2023-01-16-emacs-substitute-package-demo/>
++ Backronym: Some Utilities Built to Substitute Targets Independent of
+  Their Utterances, Thoroughly and Easily.
blob - /dev/null
blob + a5273c5ece03a584e211c28851271c2f7818f478 (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/README.org
@@ -0,0 +1,746 @@
+#+title: substitute: Efficiently replace targets in the buffer or context
+#+author: Protesilaos Stavrou
+#+email: info@protesilaos.com
+#+language: en
+#+options: ':t toc:nil author:t email:t num:t
+#+startup: content
+#+macro: stable-version 0.3.0
+#+macro: release-date 2024-05-20
+#+macro: development-version 0.4.0-dev
+#+export_file_name: substitute.texi
+#+texinfo_filename: substitute.info
+#+texinfo_dir_category: Emacs misc features
+#+texinfo_dir_title: Substitute: (substitute)
+#+texinfo_dir_desc: Efficiently replace targets in the buffer or context
+#+texinfo_header: @set MAINTAINERSITE @uref{https://protesilaos.com,maintainer webpage}
+#+texinfo_header: @set MAINTAINER Protesilaos Stavrou
+#+texinfo_header: @set MAINTAINEREMAIL @email{info@protesilaos.com}
+#+texinfo_header: @set MAINTAINERCONTACT @uref{mailto:info@protesilaos.com,contact the maintainer}
+
+#+texinfo: @insertcopying
+
+This manual, written by Protesilaos Stavrou, describes the
+customization options for the Emacs package called ~substitute~ (or
+~substitute.el~), and provides every other piece of information
+pertinent to it.
+
+The documentation furnished herein corresponds to stable version
+{{{stable-version}}}, released on {{{release-date}}}.  Any reference to
+a newer feature which does not yet form part of the latest tagged
+commit, is explicitly marked as such.
+
+Current development target is {{{development-version}}}.
+
++ Package name (GNU ELPA): ~substitute~
++ Official manual: <https://protesilaos.com/emacs/substitute>
++ Git repositories:
+  + GitHub: <https://github.com/protesilaos/substitute>
+  + GitLab: <https://gitlab.com/protesilaos/substitute>
++ Video demo: <https://protesilaos.com/codelog/2023-01-16-emacs-substitute-package-demo/>
++ Backronym: Some Utilities Built to Substitute Targets Independent of
+  Their Utterances, Thoroughly and Easily.
+
+If you are viewing the README.org version of this file, please note that
+the GNU ELPA machinery automatically generates an Info manual out of it.
+
+#+toc: headlines 8 insert TOC here, with eight headline levels
+
+* Overview
+:PROPERTIES:
+:CUSTOM_ID: h:beae1a59-81ae-41ad-803b-f08caa03732b
+:END:
+
+Substitute is a set of commands that perform text replacement (i)
+throughout the buffer, (ii) limited to the current definition (per
+~narrow-to-defun~), (iii) from point to the end of the buffer, and
+(iv) from point to the beginning of the buffer.
+
+These substitutions are meant to be as quick as possible and, as such,
+differ from the standard ~query-replace~ (which I still use).  The
+provided commands prompt for substitute text and perform the
+substitution outright.
+
+The substitution prompt mentions the target-to-be-substituted.  It is
+possible to use the "future history" at this prompt (by typing ~M-n~
+with the default key bindings for the ~next-history-element~ command).
+This populates the prompt with the text of the target.  As such, if we
+want to operate on =FOO= to make it =FOO-BAR=, we use ~M-n~ and then
+append =-BAR=.
+
+#+vindex: substitute-highlight
+By default, the substitution prompt informs the user about the target
+and highlights matches in the given scope (what the current command
+will substitute).  Highlights can be disabled by setting the user
+option ~substitute-highlight~ to nil.
+
+The substitution commands behave the same way except for their scope
+of application.  What they have in common is how they identify the
+target of the substitution: it is either the symbol at point or the
+text within the boundaries of the active region.  The differences in
+scope are as follows:
+
+#+findex: substitute-target-in-buffer
+1. ~substitute-target-in-buffer~: Substitute the target across the
+   entire buffer.
+
+#+findex: substitute-target-in-defun
+2. ~substitute-target-in-defun~: Substitute the target only in the
+   current definition (per ~narrow-to-defun~).
+
+#+findex: substitute-target-below-point
+#+findex: substitute-target-to-end-of-buffer
+3. ~substitute-target-below-point~: Substitute the target from point
+   to the end of the buffer (alias ~substitute-target-to-end-of-buffer~).
+
+#+findex: substitute-target-above-point
+#+findex:~substitute-target-to-beginning-of-buffer
+4. ~substitute-target-above-point~: Substitute the target from point
+   to the beginning of the buffer (alias ~substitute-target-to-beginning-of-buffer~).
+
+#+vindex: substitute-fixed-letter-case
+All of the aforementioned commands accept an optional prefix argument
+(=C-u= with the default key bindings).  This passes the =FIXED-CASE=
+argument, which means that the substitution will not try to preserve
+the letter casing of the target text.  Concretely, targeting =test=
+and =TEST= with a substitute of =test-new= will make both of those
+lower case.  Whereas without the prefix argument the result would be
+=test-new= and =TEST-NEW=.  In many cases this is the desired effect.
+To always have fixed letter casing, set the user option
+~substitute-fixed-letter-case~ to a non-nil value.  Doing so is the
+same as always calling the aforementioned commands with a prefix
+argument.
+
+#+vindex: substitute-post-replace-functions
+#+findex: substitute-report-operation
+Every substitution triggers the ~substitute-post-replace-functions~.
+This special hook runs any function assigned to it with four
+arguments: =TARGET=, =SUB=, =COUNT=, and =SCOPE=. For a reference
+function, see ~substitute-report-operation~.  This hook can be
+leveraged by the user to produce a report on what just happened by
+printing a message to the echo area.  Custom functions that accept
+those arguments are to the discretion of the user.  By default, the
+hook is empty and no post-substitution action is performed (e.g. the
+~substitute-report-operation~).
+
+#+findex: substitute-prefix-map
+The command ~substitute-prefix-map~ can be assigned to a key to make
+it work as a prefix. This way, all Substitute commands are readily
+available. For example:
+
+#+begin_src emacs-lisp
+(define-key global-map (kbd "C-c s") #'substitute-prefix-map)
+#+end_src
+
+After evaluating that, type =C-c s C-h= to learn about all the key
+bindings. To change those, use something like this:
+
+#+begin_src emacs-lisp
+(define-key substitute-prefix-map (kbd "b") #'substitute-target-in-buffer)
+(define-key substitute-prefix-map (kbd "d") #'substitute-target-in-defun)
+(define-key substitute-prefix-map (kbd "r") #'substitute-target-above-point)
+(define-key substitute-prefix-map (kbd "s") #'substitute-target-below-point)
+#+end_src
+
+* Installation
+:PROPERTIES:
+:CUSTOM_ID: h:4943ebc8-45e5-4352-8d51-9a09efa16b74
+:END:
+#+cindex: Installation instructions
+
+** GNU ELPA package
+:PROPERTIES:
+:CUSTOM_ID: h:ab97c462-01cc-408a-adf2-aadd87a22e90
+:END:
+
+The package is available as ~substitute~.  Simply do:
+
+: M-x package-refresh-contents
+: M-x package-install
+
+And search for it.
+
+GNU ELPA provides the latest stable release.  Those who prefer to follow
+the development process in order to report bugs or suggest changes, can
+use the version of the package from the GNU-devel ELPA archive.  Read:
+https://protesilaos.com/codelog/2022-05-13-emacs-elpa-devel/.
+
+** Manual installation
+:PROPERTIES:
+:CUSTOM_ID: h:7fbd9efd-284a-41fb-bbfa-8e28f102e78e
+:END:
+
+Assuming your Emacs files are found in =~/.emacs.d/=, execute the
+following commands in a shell prompt:
+
+#+begin_src sh
+cd ~/.emacs.d
+
+# Create a directory for manually-installed packages
+mkdir manual-packages
+
+# Go to the new directory
+cd manual-packages
+
+# Clone this repo, naming it "substitute"
+git clone https://git.sr.ht/~protesilaos/substitute substitute
+#+end_src
+
+Finally, in your =init.el= (or equivalent) evaluate this:
+
+#+begin_src emacs-lisp
+;; Make Elisp files in that directory available to the user.
+(add-to-list 'load-path "~/.emacs.d/manual-packages/substitute")
+#+end_src
+
+Everything is in place to set up the package.
+
+* Sample configuration
+:PROPERTIES:
+:CUSTOM_ID: h:e8691728-79b2-4b37-b6ce-e29a4cd9114f
+:END:
+
+#+begin_src emacs-lisp
+(require 'substitute)
+
+;; Set this to nil if you do not like visual feedback on the matching
+;; target.  Default is t.
+(setq substitute-highlight nil)
+
+;; Set this to t if you want to always treat the letter casing
+;; literally.  Otherwise each command accepts a `C-u' prefix
+;; argument to do this on-demand.
+(setq substitute-fixed-letter-case t)
+
+;; If you want a message reporting the matches that changed in the
+;; given context.  We don't do it by default.
+(add-hook 'substitute-post-replace-functions #'substitute-report-operation)
+
+;; Use C-c s as a prefix for all Substitute commands.
+(define-key global-map (kbd "C-c s") #'substitute-prefix-map)
+#+end_src
+
+* Acknowledgements
+:PROPERTIES:
+:CUSTOM_ID: h:532c5398-9510-47d4-a718-a5dfa8f86a3f
+:END:
+#+cindex: Contributors
+
+~substitute~ is meant to be a collective effort.  Every bit of help
+matters.
+
++ Author/maintainer :: Protesilaos Stavrou.
+
++ Contributions to code or the manual :: Ed Tavinor, Kostas Andreadis,
+  Wang Chunye.
+
++ Ideas and/or user feedback :: Tomasz Hołubowicz, ersi-dnd, revrari.
+
+* COPYING
+:PROPERTIES:
+:CUSTOM_ID: h:055d634a-cd8a-49e8-86f6-0027325e752c
+:COPYING: t
+:END:
+
+Copyright (C) 2023  Free Software Foundation, Inc.
+
+#+begin_quote
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being “A GNU Manual,” and
+with the Back-Cover Texts as in (a) below.  A copy of the license is
+included in the section entitled “GNU Free Documentation License.”
+
+(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and
+modify this GNU manual.”
+#+end_quote
+
+* GNU Free Documentation License
+:PROPERTIES:
+:CUSTOM_ID: h:11e2447a-6f5d-42c3-b444-746a478a14a0
+:END:
+
+#+texinfo: @include doclicense.texi
+
+#+begin_export html
+<pre>
+
+                GNU Free Documentation License
+                 Version 1.3, 3 November 2008
+
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The "Document", below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as "you".  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of
+the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.
+
+You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns.  See
+https://www.gnu.org/licenses/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the site
+means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+    Copyright (c)  YEAR  YOUR NAME.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.3
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</pre>
+#+end_export
+
+#+html: <!--
+
+* Indices
+:PROPERTIES:
+:CUSTOM_ID: h:4a0562a0-38ce-48b2-ba03-5de449c64e9d
+:END:
+
+** Function index
+:PROPERTIES:
+:INDEX: fn
+:CUSTOM_ID: h:e4d42198-6e20-4715-a353-a360ed3502f2
+:END:
+
+** Variable index
+:PROPERTIES:
+:INDEX: vr
+:CUSTOM_ID: h:566947dc-3c7a-4972-808b-7499516809f2
+:END:
+
+** Concept index
+:PROPERTIES:
+:INDEX: cp
+:CUSTOM_ID: h:8d9ef803-56bf-4c9d-a8c7-a4d5473c28f2
+:END:
+
+#+html: -->
blob - /dev/null
blob + 4f5be976b2615711c339fcd12ab80680d5a7fe13 (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/dir
@@ -0,0 +1,19 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir,	Node: Top	This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "H" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs misc features
+* Substitute: (substitute).     Efficiently replace targets in the buffer or 
+                                  context.
blob - /dev/null
blob + c79ebad352ff4afded6eaf2848bce3a92a1b3f08 (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/substitute-autoloads.el
@@ -0,0 +1,32 @@
+;;; substitute-autoloads.el --- automatically extracted autoloads (do not edit)   -*- lexical-binding: t -*-
+;; Generated by the `loaddefs-generate' function.
+
+;; This file is part of GNU Emacs.
+
+;;; Code:
+
+(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path)))
+
+
+
+;;; Generated autoloads from substitute.el
+
+ (autoload 'substitute-target-in-buffer "substitute")
+ (autoload 'substitute-target-in-defun "substitute")
+ (autoload 'substitute-target-below-point "substitute")
+ (autoload 'substitute-target-above-point "substitute")
+(register-definition-prefixes "substitute" '("substitute-"))
+
+;;; End of scraped data
+
+(provide 'substitute-autoloads)
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; no-native-compile: t
+;; coding: utf-8-emacs-unix
+;; End:
+
+;;; substitute-autoloads.el ends here
blob - /dev/null
blob + c866faa5112801779d0806e9855fae659b21cc7d (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/substitute-pkg.el
@@ -0,0 +1,2 @@
+;; Generated package description from substitute.el  -*- no-byte-compile: t -*-
+(define-package "substitute" "0.3.0" "Efficiently replace targets in the buffer or context" '((emacs "27.1")) :commit "740e301165c39a0e7d4b86219e08f8647cab3706" :authors '(("Protesilaos Stavrou" . "info@protesilaos.com")) :maintainer '("Protesilaos Stavrou" . "info@protesilaos.com") :url "https://github.com/protesilaos/substitute")
blob - /dev/null
blob + 9480977352a26fba4dd8736d0bb029d3a1f92247 (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0/substitute.el
@@ -0,0 +1,362 @@
+;;; substitute.el --- Efficiently replace targets in the buffer or context -*- lexical-binding: t -*-
+
+;; Copyright (C) 2023-2024  Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
+;; URL: https://github.com/protesilaos/substitute
+;; Version: 0.3.0
+;; Package-Requires: ((emacs "27.1"))
+
+;; This file is NOT part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Read: <https://protesilaos.com/codelog/2023-01-14-emacs-substitute-package/>.
+;;
+;; Some Utilities Built to Substitute Targets Independent of Their
+;; Utterances, Thoroughly and Easily.
+
+;;; Code:
+
+(require 'thingatpt)
+(eval-when-compile (require 'subr-x))
+
+(defgroup substitute nil
+  "Efficiently replace targets in the buffer or context."
+  :group 'editing)
+
+(defcustom substitute-highlight t
+  "If non-nil, highlight target during prompt for its substitute.
+
+If nil, do not highlight anything: just prompt for a substitute.
+
+At any rate, always specify at the minibuffer prompt the target
+of the substitution."
+  :package-version '(substitute . "0.2.0")
+  :group 'substitute
+  :type 'boolean)
+
+(defcustom substitute-fixed-letter-case nil
+  "If non-nil, do not alter the letter case of the substituted text.
+Otherwise try to perform capitalization or upcasing based on the
+target text (per `replace-match').
+
+Instead of setting this user option, users can invoke the
+substitution commands, such as `substitute-target-in-buffer',
+with a universal prefix argument."
+  :package-version '(substitute . "0.2.0")
+  :group 'substitute
+  :type 'boolean)
+
+(define-obsolete-variable-alias
+  'substitute-post-replace-hook
+  'substitute-post-replace-functions
+  "0.2.0")
+
+(defcustom substitute-post-replace-functions nil
+  "Special hook to run after a substitution command.
+Every function is called with four arguments: TARGET, SUB, COUNT,
+and SCOPE.
+
+For a reference function, see `substitute-report-operation'."
+  :package-version '(substitute . "0.2.0")
+  :group 'substitute
+  :type 'hook)
+
+(defface substitute-match
+  `((t :inherit ,(if-let* ((face 'lazy-highlight)
+                           (facep face))
+                     face
+                   'secondary-selection)))
+  "Face to highlight matches of the given target."
+  :group 'substitute)
+
+(defvar substitute--history '()
+  "Minibuffer history for substitution commands.")
+
+(defun substitute--scope-description (scope)
+  "Return string that describes SCOPE in plain terms.
+
+Possible meaningful values for SCOPE are:
+
+- `below' :: from point to the end of the buffer.
+- `above' :: from point to the beginning of the buffer.
+- `defun' :: limit to the current defun per `narrow-to-defun'.
+- nil     :: across the whole buffer."
+  (pcase scope
+    ('below "from point to the END of the buffer")
+    ('above "from point to the BEGINNING of the buffer")
+    ('defun "in the current DEFUN")
+    (_ "across the BUFFER")))
+
+(defun substitute--prettify-target-description (target)
+  "Remove regexp delimiters from TARGET.
+Use this to produce a more readable version of TARGET for prompts
+and related."
+  (replace-regexp-in-string "\\\\_<\\(?1:.*?\\)\\\\_>" "\\1" target))
+
+(defun substitute--remove-highlights ()
+  "Remove `substitute-match' overlays."
+  (remove-overlays nil nil 'face 'substitute-match))
+
+(defun substitute--add-highlight (beg end)
+  "Add overlay of `substitute-match' between BEG and END positions."
+  (goto-char beg)
+  (let ((highlight (make-overlay beg end)))
+    (overlay-put highlight 'priority 100)
+    (overlay-put highlight 'face 'substitute-match)))
+
+(defun substitute--prompt-without-highlight (target scope)
+  "Prompt for string while referencing TARGET and SCOPE."
+  (let ((pretty-target (substitute--prettify-target-description target)))
+    (substitute--collect-targets target scope)
+    (read-from-minibuffer
+     (format "Substitute `%s' %s with: "
+             (propertize pretty-target 'face 'error)
+             (substitute--scope-description scope))
+     nil nil nil
+     'substitute--history
+     pretty-target)))
+
+(defun substitute--prompt-with-highlight (target scope)
+  "Prompt for string while referencing TARGET and SCOPE.
+Highlight the TARGET's matching occurences per the user option
+`substitute-highlight'."
+  (let ((pretty-target (substitute--prettify-target-description target)))
+    (unwind-protect
+        (progn
+          (substitute--collect-targets target scope)
+          (substitute--highlight-targets)
+          (substitute--prompt-without-highlight pretty-target scope))
+      (substitute--remove-highlights)
+      (setq-local substitute--last-matches nil))))
+
+(defun substitute--prompt (target scope)
+  "Return appropriate prompt based on `substitute-highlight'.
+Pass to it the TARGET and SCOPE arguments."
+  (barf-if-buffer-read-only)
+  (funcall
+   (if substitute-highlight
+       'substitute--prompt-with-highlight
+     'substitute--prompt-without-highlight)
+   target
+   scope))
+
+(defun substitute--scope-current-and-below (target)
+  "Position point to match current TARGET and below."
+  (widen)
+  (if-let* (((region-active-p))
+            (bounds (region-bounds)))
+      (goto-char (caar bounds))
+    (thing-at-point-looking-at target)
+    (goto-char (match-beginning 0))))
+
+(defun substitute--scope-current-and-above (target)
+  "Position point to match current TARGET and above."
+  (widen)
+  (if-let* (((region-active-p))
+            (bounds (region-bounds)))
+      (goto-char (cdar bounds))
+    (thing-at-point-looking-at target)
+    (goto-char (match-end 0))))
+
+(defun substitute--scope-current-defun ()
+  "Position point to the top after `narrow-to-defun'."
+  (narrow-to-defun)
+  (goto-char (point-min)))
+
+(defun substitute--scope-top-of-buffer ()
+  "Position point to the top of the buffer."
+  (widen)
+  (goto-char (point-min)))
+
+(defun substitute--setup-scope (target scope)
+  "Derive SCOPE for TARGET."
+  (pcase scope
+    ('below (substitute--scope-current-and-below target))
+    ('above (substitute--scope-current-and-above target))
+    ('defun (substitute--scope-current-defun))
+    (_ (substitute--scope-top-of-buffer))))
+
+(defvar-local substitute--last-matches nil
+  "Alist of the last matching substitution targets.
+Each entry is a list of the symbol and its buffer positions.")
+
+(defun substitute--collect-targets (target scope)
+  "Store occurrences of TARGET in SCOPE in `substitute--last-matches'."
+  (let ((search-fn (if (eq scope 'above) 're-search-backward 're-search-forward)))
+    (setq-local substitute--last-matches nil)
+    (save-excursion
+      (save-restriction
+        (substitute--setup-scope target scope)
+        (while (funcall search-fn target nil t)
+          (push (list (regexp-quote (match-string-no-properties 0))
+                      (match-beginning 0)
+                      (match-end 0))
+                substitute--last-matches))))
+    substitute--last-matches))
+
+(defun substitute--beg-end (beg end)
+  "Determine if BEG is smaller than END and return ordered list."
+  (if (< beg end)
+      (list beg end)
+    (list end beg)))
+
+(defun substitute--highlight-targets ()
+  "Highlight `substitute--last-matches'."
+  (when-let ((targets substitute--last-matches))
+    (save-excursion
+      (save-restriction
+        (mapcar (lambda (target)
+                  (substitute--add-highlight (nth 1 target)
+                                             (nth 2 target)))
+                targets)))))
+
+(defun substitute--replace-targets (sub &optional scope fixed)
+  "Replace `substitute--last-matches' target with SUB.
+If optional SCOPE is equal to `above', then adjust for a reverse
+motion.
+
+With optional FIXED as a non-nil value, do not alter the case of
+the substituted text.  Otherwise perform capitalization or
+upcasing based on the target text.  See the documenation of
+`replace-match' for how this works."
+  (when-let ((targets substitute--last-matches))
+    (save-excursion
+      (when (listp buffer-undo-list)
+        (push (point) buffer-undo-list))
+      (save-restriction
+        (mapcar (lambda (target)
+                  (let ((ps (substitute--beg-end (nth 1 target) (nth 2 target)))
+                        reverse)
+                    (when (eq scope 'above)
+                      (setq reverse t))
+                    (goto-char (if reverse (cadr ps) (car ps)))
+                    (funcall
+                     (if reverse 're-search-backward 're-search-forward)
+                     (car target))
+                    (replace-match sub (or fixed substitute-fixed-letter-case))))
+                targets)))))
+
+(defun substitute--operate (target sub &optional scope fixed)
+  "Operate on TARGET with SUB in SCOPE.
+Optional FIXED does not alter the letter casing of substituted
+text (also see `substitute-fixed-letter-case')."
+  (let* ((targets (or substitute--last-matches
+                      (substitute--collect-targets target scope)))
+         (count (length targets)))
+    (substitute--replace-targets sub scope fixed)
+    (setq-local substitute--last-matches nil)
+    (run-hook-with-args 'substitute-post-replace-hook
+                        target sub count
+                        (substitute--scope-description scope))))
+
+(defun substitute--determine-target ()
+  "Return target or report an error.
+If the region is active, the target of the substitute is the text
+within the region's boundaries.  Otherwise the target is the
+target at point.
+
+Report a `user-error' if no target is found."
+  (cond
+   ((region-active-p)
+    (regexp-quote (buffer-substring-no-properties (region-beginning) (region-end))))
+   (t
+    (if-let ((thing (thing-at-point 'symbol t)))
+        (format "\\_<%s\\_>" thing)
+      (user-error "No substitution target at point")))))
+
+(defmacro substitute-define-substitute-command (fn doc &optional scope)
+  "Produce substitute command using FN, DOC, and SCOPE."
+  `(defun ,fn (target sub &optional fixed-case)
+     ,(format
+       "Substitute TARGET with SUB %s.
+
+When called interactively, TARGET is the symbol at point and SUB
+is a string that is provided at the minibuffer prompt.
+
+If the region is active, TARGET is the text within the region's
+boundaries.
+
+With optional FIXED-CASE as a prefix argument, do not try to
+preserve the letter casing of the target text: the substitution
+is literal.  Otherwise try to preserve the case (per
+`replace-match').
+
+Instead of the optional FIXED-CASE argument, the user can set the
+option `substitute-fixed-letter-case' to non-nil.  That is the
+same as always calling this command with FIXED-CASE." doc)
+     (interactive
+      (let ((target (substitute--determine-target)))
+        (list target
+              (substitute--prompt target ,scope)
+              current-prefix-arg)))
+     (substitute--operate target sub ,scope fixed-case)))
+
+;;;###autoload (autoload 'substitute-target-in-buffer "substitute")
+(substitute-define-substitute-command
+ substitute-target-in-buffer
+ "throughout the buffer")
+
+;;;###autoload (autoload 'substitute-target-in-defun "substitute")
+(substitute-define-substitute-command
+ substitute-target-in-defun
+ "in the defun (per `narrow-to-defun')"
+ 'defun)
+
+;;;###autoload (autoload 'substitute-target-below-point "substitute")
+(substitute-define-substitute-command
+ substitute-target-below-point
+ "to the end of the buffer"
+ 'below)
+
+(defalias 'substitute-target-to-end-of-buffer
+  'substitute-target-below-point)
+
+;;;###autoload (autoload 'substitute-target-above-point "substitute")
+(substitute-define-substitute-command
+ substitute-target-above-point
+ "to the beginning of the buffer"
+ 'above)
+
+(defalias 'substitute-target-to-beginning-of-buffer
+  'substitute-target-above-point)
+
+(defun substitute-report-operation (target sub count scope)
+  "Print message of substitution.
+Report COUNTth substitutions of TARGET with SUB in SCOPE."
+  (message "Substituted `%s' with `%s' %d times %s"
+           (propertize (substitute--prettify-target-description target) 'face 'error)
+           (propertize sub 'face 'success)
+           count
+           (propertize scope 'face 'warning)))
+
+(defvar substitute-prefix-map (make-sparse-keymap)
+  "Keymap with Substitute commands.
+Meant to be assigned to a prefix key, like this:
+
+    (define-key global-map (kbd \"C-c s\") \=#'substitute-prefix-map)")
+
+(define-prefix-command 'substitute-prefix-map)
+
+(define-key substitute-prefix-map (kbd "b") #'substitute-target-in-buffer)
+(define-key substitute-prefix-map (kbd "d") #'substitute-target-in-defun)
+(define-key substitute-prefix-map (kbd "r") #'substitute-target-above-point)
+(define-key substitute-prefix-map (kbd "s") #'substitute-target-below-point)
+
+(provide 'substitute)
+;;; substitute.el ends here
blob - /dev/null
blob + 8526b32c1384df6a55c9018ffcaf2e6a8536b65e (mode 644)
Binary files /dev/null and elpa/substitute-0.3.0/substitute.info differ
blob - /dev/null
blob + 557358924d5d4c42a0b03aadc535f5cea7fb39d2 (mode 644)
--- /dev/null
+++ elpa/substitute-0.3.0.signed
@@ -0,0 +1 @@
+Good signature from 645357D2883A0966 GNU ELPA Signing Agent (2023) <elpasign@elpa.gnu.org> (trust undefined) created at 2024-05-20T23:10:02+0200 using EDDSA
\ No newline at end of file
blob - e4e67385601d7913c239057ea31396c33d8b6d5d
blob + 34aa0d5af35063fe54c22b3dbfd8899cf4fc07a8
--- init.el
+++ init.el
@@ -15,6 +15,7 @@
 (require 'lh-insert)
 (require 'lh-resurrect)
 (require 'iso-transl)
+(require 'substitute)
 
 (with-eval-after-load 'paredit
   (require 'paredit-menu))
@@ -168,6 +169,7 @@
   ("C-c a" . org-agenda)
   ("C-c c" . org-capture)
   ("C-c l" . org-store-link)
+  ("C-c s" . substitute-prefix-map)
 
   ("C-c i j" . lh/insert-json-encoded)
   ("C-c i i s" . lh/insert-random-sha1)
@@ -400,7 +402,7 @@
      ("melpa" . "https://melpa.org/packages/")))
  '(package-pinned-packages '((sly . "melpa")))
  '(package-selected-packages
-   '(highlight-function-calls prism modus-themes imenu-list diff-hl embark-consult embark all-the-icons-completion all-the-icons-ibuffer all-the-icons-dired sly-named-readtables sly-macrostep denote-refs denote-menu denote ox-epub ob-powershell powershell web-mode lexic editorconfig elfeed-tube-mpv elfeed-tube restclient-jq graphviz-dot-mode consult-eglot jq-mode ob-restclient restclient deadgrep helpful pdf-tools paredit-menu paredit corfu sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode org-contrib org ace-window expand-region consult marginalia uuidgen diminish which-key))
+   '(substitute highlight-function-calls prism modus-themes imenu-list diff-hl embark-consult embark all-the-icons-completion all-the-icons-ibuffer all-the-icons-dired sly-named-readtables sly-macrostep denote-refs denote-menu denote ox-epub ob-powershell powershell web-mode lexic editorconfig elfeed-tube-mpv elfeed-tube restclient-jq graphviz-dot-mode consult-eglot jq-mode ob-restclient restclient deadgrep helpful pdf-tools paredit-menu paredit corfu sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode org-contrib org ace-window expand-region consult marginalia uuidgen diminish which-key))
  '(pcomplete-ignore-case t t)
  '(pixel-scroll-precision-mode t)
  '(prism-parens t)