unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).