[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Patch] Add project.el command to replace symbol at point throughout
From: |
Jon Eskin |
Subject: |
Re: [Patch] Add project.el command to replace symbol at point throughout project |
Date: |
Sat, 15 Jan 2022 04:55:52 -0500 |
> On Jan 14, 2022, at 3:28 PM, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 14.01.2022 12:26, Jon Eskin wrote:
>>> So Jon, if you fancy writing a patch in this area, you can try implementing
>>> what Juri suggested:
>>>
>>> let-bind read-regexp-defaults-function around the call
>>> of query-replace-read-args, and use a symbol at point as the default.
>>>
>>> That can apply to both project-query-replace-regexp and
>>> xref-find-references-and-replace.
>> On it! I might take a little while but I'll check in if I get stuck.
>
> Yeah, don't hesitate to ask questions if/when you have any.
Hey all,
I took a stab at the implementation Juri described for
`project-query-replace-regexp` and I was able to get the correct behavior, but
I wanted to check in and see if it needs improvements before looking at
`xref-find-references-and-replace.`
When I first let-bound `read-regexp-defaults-function` around the call to
`query-replace-read-args`, it didn't work- it looks like `read-regexp` needs to
be passed a symbol for its `DEFAULTS` parameter or it ignores
`read-regexp-default-function`. I passed in the symbol at point to `DEFAULTS`
which works- if I understand correctly the value of any I pass in doesn't end
up making a difference as long as it's a symbol. I wasn't sure what the reason
was for that behavior, but I didn't want to mess with stuff I didn't understand.
Another issue is that hardcoded logic in `read-regexp`:
'If PROMPT ends in \":\" (followed by
optional whitespace), use it as-is. Otherwise, add \": \" to the end,
possibly preceded by the default result (see below).'
The PROMPT passed into read-regexp does end in a ":" due to it being formatted
by a call to `format-prompt` in `query-replace-read-from`. As a result, when
the symbol is at point, `read-regexp` display the prompt with the last
replacement from history. To address this, I added a cond case where the
formatting takes place and omit the formatting step when there is a symbol at
point so that `read-regex` will correctly format the prompt with the symbol at
point.
The result is that a call to `project-query-replace-regexp` will take the
symbol at point as the default when available, otherwise it will use its
previous behavior of defaulting to the last replacement available in history.
Let me know what you think.
0001-Use-symbol-at-point-as-default-for-query-replace-rea.patch
Description: Binary data
- Re: [Patch] Add project.el command to replace symbol at point throughout project, (continued)
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Daniel MartÃn, 2022/01/11
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/11
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Eli Zaretskii, 2022/01/12
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/12
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Eli Zaretskii, 2022/01/13
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/13
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Eli Zaretskii, 2022/01/14
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Jon Eskin, 2022/01/14
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/14
- Re: [Patch] Add project.el command to replace symbol at point throughout project,
Jon Eskin <=
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Juri Linkov, 2022/01/15
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/15
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Juri Linkov, 2022/01/16
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/16
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/16
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Juri Linkov, 2022/01/17
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/20
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Juri Linkov, 2022/01/31
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Dmitry Gutov, 2022/01/31
- Re: [Patch] Add project.el command to replace symbol at point throughout project, Jon Eskin, 2022/01/15