* bug#10916: Using occur to list occurrencies of the symbol at point
@ 2012-03-01 10:10 Niels Möller
2012-03-01 10:42 ` Juri Linkov
0 siblings, 1 reply; 7+ messages in thread
From: Niels Möller @ 2012-03-01 10:10 UTC (permalink / raw)
To: 10916
Hi,
I'm using both M-x grep and M-x occur quite a lot. I have been a bit
annoyed that they interpret a prefix argument very differently. With C-u
M-x grep, it searches for the symbol (or word or tag; I'm not sure
exactly how it's delimited) under point, which is a feature I find very
useful.
I first expected C-u M-x occur to behave the same way, but instead it
interprets the prefix argument as the amount of additional context to
include in the output buffer. This is a feature I don't need very often.
I'm not sure it's a good idea to change the behaviour of M-x occur, so
instead I wrote the following function to do what I want:
(defun occur-tag (regexp nlines)
(interactive
(let ((tag (funcall (or find-tag-default-function
(get major-mode 'find-tag-default-function)
'find-tag-default))))
(if tag
(list (concat "\\_<" (regexp-quote tag) "\\_>")
(when current-prefix-arg
(prefix-numeric-value current-prefix-arg)))
(occur-read-primary-args))))
(occur regexp nlines))
It gets the symbol under point in the same way as M-x grep, and
constructs a regexp to use with occur. I this it mainly for searching in
source files, which is why I use \_< and \_> rather than \< and \> when
constructing the regexp.
Maybe it would make sense to add something like this to emacs, either as
a separate function like above, or in response to an "empty" prefix
argument to M-x occur.
Or maybe there's already some emacs function which does this and does it
better, which I'm not aware of...
BTW, I think it would also make some sense with a helper function for
the logic involving find-tag-default-function, since this seems to be
duplicated in find-tag-tag, complete-tag, grep-tag-default, and possibly
other places. Or movee it inside find-tag-default, if those variables
always should be consulted.
Best regards,
/Niels Möller
--
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2012-03-01 10:10 bug#10916: Using occur to list occurrencies of the symbol at point Niels Möller
@ 2012-03-01 10:42 ` Juri Linkov
2012-03-01 12:18 ` Niels Möller
0 siblings, 1 reply; 7+ messages in thread
From: Juri Linkov @ 2012-03-01 10:42 UTC (permalink / raw)
To: Niels Möller; +Cc: 10916
> I first expected C-u M-x occur to behave the same way, but instead it
> interprets the prefix argument as the amount of additional context to
> include in the output buffer. This is a feature I don't need very often.
`C-u M-x occur' doesn't interpret the prefix argument as the amount of
additional context. `C-u M-x occur' collects strings matching regexp.
It is like grep command line argument `-o --only-matching' that prints
only the matched parts of a matching line, with each such part
on a separate output line.
> Or maybe there's already some emacs function which does this and does it
> better, which I'm not aware of...
Have you tried `M-x occur M-n RET'?
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2012-03-01 10:42 ` Juri Linkov
@ 2012-03-01 12:18 ` Niels Möller
2012-03-01 12:28 ` Juri Linkov
0 siblings, 1 reply; 7+ messages in thread
From: Niels Möller @ 2012-03-01 12:18 UTC (permalink / raw)
To: Juri Linkov; +Cc: 10916
Juri Linkov <juri@jurta.org> writes:
> `C-u M-x occur' doesn't interpret the prefix argument as the amount of
> additional context. `C-u M-x occur' collects strings matching regexp.
I'm not following you. If I type C-u M-x occur RET gcd_hook RET, I get
an *Occur* buffer looking like this:
3 matches for "gcd_hook" in buffer: gcd.c
: mp_size_t gn;
:};
:
:static void
61:gcd_hook (void *p, mp_srcptr gp, mp_size_t gn,
: mp_srcptr qp, mp_size_t qn, int d)
:{
: struct gcd_ctx *ctx = (struct gcd_ctx *) p;
: MPN_COPY (ctx->gp, gp, gn);
-------
: }
: else
: {
: /* Temporary storage n */
209: n = mpn_gcd_subdiv_step (up, vp, n, gcd_hook, &ctx, tp);
: if (n == 0)
: goto done;
: }
: }
-------
: small, or the difference is very small. Perform one
: subtraction followed by one division. */
:
: /* Temporary storage n */
253: n = mpn_gcd_subdiv_step (up, vp, n, &gcd_hook, &ctx, tp);
: if (n == 0)
: goto done;
: }
: }
-------
This is with emacs-23.2, but I think it's the same in other emacs
versions I have used. The documentation string for occur says
Each line is displayed with NLINES lines before and after, or -NLINES
before if NLINES is negative.
NLINES defaults to `list-matching-lines-default-context-lines'.
Interactively it is the prefix arg.
> Have you tried `M-x occur M-n RET'?
Now I have. Seems to give the symbol at point in recent emacs versions.
Slightly less convenient than a prefix argument, but I think that does
what I want.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2012-03-01 12:18 ` Niels Möller
@ 2012-03-01 12:28 ` Juri Linkov
2019-11-01 22:33 ` Stefan Kangas
0 siblings, 1 reply; 7+ messages in thread
From: Juri Linkov @ 2012-03-01 12:28 UTC (permalink / raw)
To: Niels Möller; +Cc: 10916
> This is with emacs-23.2, but I think it's the same in other emacs
> versions I have used.
`C-u M-x occur' is a new feature in 24.1. You can read about it in
http://bzr.sv.gnu.org/lh/emacs/trunk/annotate/head:/etc/NEWS#L968
>> Have you tried `M-x occur RET M-n RET'?
>
> Now I have. Seems to give the symbol at point in recent emacs versions.
> Slightly less convenient than a prefix argument, but I think that does
> what I want.
It's less convenient because the default value (displayed in parens)
for `occur' is not the symbol under point, but the last history element
(that is also easy to get via `M-p'). This is for historical reasons.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2012-03-01 12:28 ` Juri Linkov
@ 2019-11-01 22:33 ` Stefan Kangas
2019-11-13 20:58 ` Juri Linkov
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Kangas @ 2019-11-01 22:33 UTC (permalink / raw)
To: Juri Linkov; +Cc: 10916, Niels Möller
Juri Linkov <juri@jurta.org> writes:
>>> Have you tried `M-x occur RET M-n RET'?
>>
>> Now I have. Seems to give the symbol at point in recent emacs versions.
>> Slightly less convenient than a prefix argument, but I think that does
>> what I want.
>
> It's less convenient because the default value (displayed in parens)
> for `occur' is not the symbol under point, but the last history element
> (that is also easy to get via `M-p'). This is for historical reasons.
If this is how the command has worked for a long time, perhaps it's
too late to change now? In that case, I guess this is a wontfix?
Best regards,
Stefan Kangas
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2019-11-01 22:33 ` Stefan Kangas
@ 2019-11-13 20:58 ` Juri Linkov
2019-12-05 11:04 ` Stefan Kangas
0 siblings, 1 reply; 7+ messages in thread
From: Juri Linkov @ 2019-11-13 20:58 UTC (permalink / raw)
To: Stefan Kangas; +Cc: 10916, Niels Möller
>>>> Have you tried `M-x occur RET M-n RET'?
>>>
>>> Now I have. Seems to give the symbol at point in recent emacs versions.
>>> Slightly less convenient than a prefix argument, but I think that does
>>> what I want.
>>
>> It's less convenient because the default value (displayed in parens)
>> for `occur' is not the symbol under point, but the last history element
>> (that is also easy to get via `M-p'). This is for historical reasons.
>
> If this is how the command has worked for a long time, perhaps it's
> too late to change now? In that case, I guess this is a wontfix?
Agreed.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#10916: Using occur to list occurrencies of the symbol at point
2019-11-13 20:58 ` Juri Linkov
@ 2019-12-05 11:04 ` Stefan Kangas
0 siblings, 0 replies; 7+ messages in thread
From: Stefan Kangas @ 2019-12-05 11:04 UTC (permalink / raw)
To: Juri Linkov; +Cc: 10916, Niels Möller
tags 10916 + wontfix
close 10916
thanks
Juri Linkov <juri@jurta.org> writes:
>>>>> Have you tried `M-x occur RET M-n RET'?
>>>>
>>>> Now I have. Seems to give the symbol at point in recent emacs versions.
>>>> Slightly less convenient than a prefix argument, but I think that does
>>>> what I want.
>>>
>>> It's less convenient because the default value (displayed in parens)
>>> for `occur' is not the symbol under point, but the last history element
>>> (that is also easy to get via `M-p'). This is for historical reasons.
>>
>> If this is how the command has worked for a long time, perhaps it's
>> too late to change now? In that case, I guess this is a wontfix?
>
> Agreed.
No further comments within 3 weeks, so I'm now closing this bug as
wontfix.
Best regards,
Stefan Kangas
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-12-05 11:04 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-01 10:10 bug#10916: Using occur to list occurrencies of the symbol at point Niels Möller
2012-03-01 10:42 ` Juri Linkov
2012-03-01 12:18 ` Niels Möller
2012-03-01 12:28 ` Juri Linkov
2019-11-01 22:33 ` Stefan Kangas
2019-11-13 20:58 ` Juri Linkov
2019-12-05 11:04 ` Stefan Kangas
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.