Hello! :) > On Jan 11, 2022, at 10:42 PM, Dmitry Gutov wrote: > > Hi! > > On 11.01.2022 09:45, Jon Eskin wrote: >> Attached is a small patch adding command 'project-query-replace-at-point' to project.el. The command is designed to improve the ergonomics of making a project wide text replacement of a symbol at point. >> Currently, if you want to make a project wide replacement of a symbol using project.el, the best options I've found are: > >> or >> - Mark the symbol you wish to replace >> - Save symbol to kill ring with 'kill-ring-save' > > You don't need these two steps, do you? Just do the rest, and it should work. > >> - Place cursor on symbol and enter command 'project-find-regexp' >> - Hit return at the next prompt to accept the default prompt >> - Enter command 'xref-query-replace-in-results' >> - Enter the replacement string and hit return > > I agree it could use some more optimization still. > >> 'project-query-replace-at-point' regex-quotes the symbol at point and then calls into the fileloop-initialize-replace function used by the existing project-query-replace-regexp command. >> Replacing a symbol with 'project-query-replace-at-point' occurs as follows: >> - Place cursor on symbol and enter command 'project-query-replace-at-point' >> - Enter the replacement string and hit return >> Let me know what you guys think. I haven't contributed before so please let me know if I'm doing anything incorrectly. Sorry, yes, those two steps are not needed. My brain crossed a few wires. > > If we're trying to improve project-query-replace-regexp, why not make it use the symbol at point by default? > I thought about the option of using symbol at point by default, but I noticed that the command currently uses the history variable. I wondered if some people were relying on its current behavior in a way that I didn’t anticipate (especially since I’m pretty new to all this). If so, it would be an annoying change to have to worry about whether the cursor is on a symbol when using a command you previously relied on. I wanted to try to put forth something possibly useful without breaking stuff. > You would use the same command, but would be able to press RET to have the default regexp (symbol at point) used as FROM. I don't have a patch yet, but it might be something that all callers of query-replace-read-args might benefit from. Since I think I can understand what you’re suggesting, I would be happy to make an attempt at a patch to modify the callers of query-replace-read-args to default to a regexp quoted symbol-at-point. But no worries if you would rather have experienced eyes on it. > > And you can actually do this right now: > > - Enter command 'project-query-replace-regexp' > - Press M-n, having the symbol at point picked up as FROM, hit return > - Enter the replacement string and hit return This is awesome! Did not know about that behavior, thank you for sharing!