diff options
Diffstat (limited to '')
-rw-r--r-- | 2023/talks/parallel.md | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/2023/talks/parallel.md b/2023/talks/parallel.md new file mode 100644 index 00000000..8806e7c2 --- /dev/null +++ b/2023/talks/parallel.md @@ -0,0 +1,88 @@ +[[!meta title="Parallel Text Replacement"]] +[[!meta copyright="Copyright © 2023 Lovro, Valentino Picotti"]] +[[!inline pages="internal(2023/info/parallel-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Parallel Text Replacement +Lovro, Valentino Picotti - IRC: hokomo, <mailto:hokomo@disroot.org> + +[[!inline pages="internal(2023/info/parallel-before)" raw="yes"]] + +We present our Emacs package for performing parallel text +replacement. + +"Parallel" in this context does not refer to improving +efficiency through parallelism, but to the concept of performing +more than one text replacement without them interfering with +each other. This is in line with the usage of the term in the +Lisp community when contrasting the behaviors of LET and LET*, +SETQ and PSETQ, etc. (e.g. +<http://www.lispworks.com/documentation/lw60/CLHS/Body/s_let_l.htm>). + +We will present the package's features and its integration with +Emacs' query-replace system, a comparison with previous +solutions, and a few notes on our implementation. We will +describe some common use-cases and showcase how the package is +used. + +The package is currently not yet published in a package archive, +but the code is already publicly available at +<https://github.com/hokomo/query-replace-parallel>. The name +"query-replace-parallel" is not yet final and we are thinking of +alternatives. Our current best candidate is "replace-parallel" +(similar to the built-in "replace.el"), but suggestions are +welcome. + + +# Discussion + +## Questions and answers + +- Q: This looks great, and was very well-presented. Do you have plans + to upstream this functionality into Emacs? + - A: Would require some refactoring upstream, so not suitable for + upstreaming as-is. +- Q: Did you use pair-programming while developing it, or did you work + independently, alternating and reviewing? + - A: Yes, we did! I was at the keyboard, Valentino was at the + whiteboard, and we kept bouncing ideas back and forth, trying + out prototypes, coming up with various tests, checking the edge + cases, etc. +- Q: What is your background in programming? Was it difficult to + implement following the same API and architecture as what is already + in Emacs? + - A: Both Valentino and I are PhD students in computer science, + but a PhD or similar is definitely not a requirement. It wasn't + too difficult because we could reuse the interactive + functionality from query-replace's internals. Figuring out what + and how to reuse is what took a bit of creativity, but a lot of + the necessary knowledge for that came from just reading and + poking around Emacs' replace.el. Don't be afraid to go and + read the source! +- Q: What did you learn about Emacs programming or programming in + general while working on this project? + - A: That Emacs is so flexible that you can even advise its + `message` function. Similarly, being able to prototype + functionality so quickly and immediately integrate it into the + rest of Emacs is so fun and so satisfying! + +## Notes + +- One usecase could be character names in a novel manuscript, if one + has named a character and want to now rename it to some other + character names or swap it with another one. +- Nice, I was wondering if it utilized `rx` +- package installed, ready to use! +- excellent talk, and also such a cool package +- great talk, very clever concept +- that SRE "paper" you linked to is interesting +- just saw the "Parallel Text Replacement" talk - 👏 great talk! + +[[!inline pages="internal(2023/info/parallel-after)" raw="yes"]] + +[[!inline pages="internal(2023/info/parallel-nav)" raw="yes"]] + + |