unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#21957: 24.5; Make occur search within regions when there is one
@ 2015-11-19  6:39 b4283
  2015-11-20  0:04 ` Juri Linkov
  0 siblings, 1 reply; 8+ messages in thread
From: b4283 @ 2015-11-19  6:39 UTC (permalink / raw)
  To: 21957


This is a wish request.

The current occur implementation doesn't include a `region' version
which search only within the current region mark by user, instead it
operates on the entire buffer.

It would come in handy if occur searchs within regions as well. Such
behavior is desired, for example, when listing the occurances of a
symbol in the body of a function definition.



In GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.16.6)
 of 2015-09-10 on foutrelis
Windowing system distributor `The X.Org Foundation', version 11.0.11704000
System Description:	Arch Linux

Configured using:
 `configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --with-x-toolkit=gtk3 --with-xft
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong
 --param=ssp-buffer-size=4' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'

Important settings:
  value of $LC_CTYPE: zh_TW.UTF-8
  value of $LANG: zh_TW.UTF-8
  value of $XMODIFIERS: @im=gcin
  locale-coding-system: utf-8-unix

Major mode: C++/l

Minor modes in effect:
  shell-dirtrack-mode: t
  nyan-mode: t
  global-linum-mode: t
  linum-mode: t
  ido-everywhere: t
  show-paren-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent messages:

Load-path shadows:

Features:
(shadow sort gnus-util mail-extr emacsbug message idna format-spec
rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils shell pcomplete grep+ grep compile comint
ansi-color etags ring misearch multi-isearch cc-langs cc-mode-expansions
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs smooth-scrolling vc-git quail help-mode jka-compr
expand-region text-mode-expansions er-basic-expansions thingatpt
expand-region-core expand-region-custom nyan-mode buffer-move linum
edmacro kmacro cl-loaddefs cl-lib ido xemacs-theme paren delsel
cus-start cus-load windmove afternoon-theme-autoloads
cherry-blossom-theme-autoloads colorsarenice-theme-autoloads
geiser-autoloads helm-autoloads js2-mode-autoloads info easymenu
php-mode-autoloads rust-mode-autoloads advice help-fns
toml-mode-autoloads package epg-config time-date china-util tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 727609 127367)
 (symbols 48 27690 0)
 (miscs 40 1313 683)
 (strings 32 121297 25891)
 (string-bytes 1 1561851)
 (vectors 16 91267)
 (vector-slots 8 1181120 133080)
 (floats 8 89 446)
 (intervals 56 7376 3100)
 (buffers 960 23)
 (heap 1024 75181 2588))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-19  6:39 bug#21957: 24.5; Make occur search within regions when there is one b4283
@ 2015-11-20  0:04 ` Juri Linkov
  2015-11-21  5:29   ` Li Ian-Xue
  0 siblings, 1 reply; 8+ messages in thread
From: Juri Linkov @ 2015-11-20  0:04 UTC (permalink / raw)
  To: b4283; +Cc: 21957

> This is a wish request.
>
> The current occur implementation doesn't include a `region' version
> which search only within the current region mark by user, instead it
> operates on the entire buffer.
>
> It would come in handy if occur searchs within regions as well. Such
> behavior is desired, for example, when listing the occurances of a
> symbol in the body of a function definition.

Do you think it would suit your needs when you first narrow the buffer
(e.g. to the body of a function with C-x n d) before running occur?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-20  0:04 ` Juri Linkov
@ 2015-11-21  5:29   ` Li Ian-Xue
  2015-11-22 12:13     ` Artur Malabarba
  2022-01-24 13:43     ` Lars Ingebrigtsen
  0 siblings, 2 replies; 8+ messages in thread
From: Li Ian-Xue @ 2015-11-21  5:29 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 21957

Yes, that is what I did when I found out `occur' doesn't do regions. A
friend of mine suggested
that a combination of narrowing (C-x n w) and M-s o should do the trick,
and it did.

Nevertheless still I would still prefer `occur' to accept a regional
parameter,
as it would be much straight forward mode of operation.

Thank you.

Juri Linkov 於 西元2015年11月20日 08:04 寫道:
>> This is a wish request.
>>
>> The current occur implementation doesn't include a `region' version
>> which search only within the current region mark by user, instead it
>> operates on the entire buffer.
>>
>> It would come in handy if occur searchs within regions as well. Such
>> behavior is desired, for example, when listing the occurances of a
>> symbol in the body of a function definition.
> Do you think it would suit your needs when you first narrow the buffer
> (e.g. to the body of a function with C-x n d) before running occur?






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-21  5:29   ` Li Ian-Xue
@ 2015-11-22 12:13     ` Artur Malabarba
  2015-11-23  0:22       ` Juri Linkov
  2022-01-24 13:43     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 8+ messages in thread
From: Artur Malabarba @ 2015-11-22 12:13 UTC (permalink / raw)
  To: Li Ian-Xue; +Cc: 21957, Juri Linkov

[-- Attachment #1: Type: text/plain, Size: 298 bytes --]

I've been thinking it might be nice to have an occur-dwim command.

1. If the selected region has multiple lines, it would search only inside
the region.
2. If the selected region has one line or less, it would use the region as
the search string.
3. If there's no selection it do the usual occur.

[-- Attachment #2: Type: text/html, Size: 350 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-22 12:13     ` Artur Malabarba
@ 2015-11-23  0:22       ` Juri Linkov
  2015-11-23  0:53         ` Artur Malabarba
  2015-11-23  1:29         ` Drew Adams
  0 siblings, 2 replies; 8+ messages in thread
From: Juri Linkov @ 2015-11-23  0:22 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: 21957, Li Ian-Xue

> I've been thinking it might be nice to have an occur-dwim command.
>
> 1. If the selected region has multiple lines, it would search only inside
> the region.
> 2. If the selected region has one line or less, it would use the region as
> the search string.
> 3. If there's no selection it do the usual occur.

This is a useful heuristic, not sure how intuitive it is.

BTW, I recall Drew asked how to do the same in Isearch, but I see no way
because in Isearch it's useful to mark the beginning of the region, and
extend it using Isearch commands by putting the end of the region where
Isearch ends.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-23  0:22       ` Juri Linkov
@ 2015-11-23  0:53         ` Artur Malabarba
  2015-11-23  1:29         ` Drew Adams
  1 sibling, 0 replies; 8+ messages in thread
From: Artur Malabarba @ 2015-11-23  0:53 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 21957, Li Ian-Xue

[-- Attachment #1: Type: text/plain, Size: 592 bytes --]

> BTW, I recall Drew asked how to do the same in Isearch, but I see no way
> because in Isearch it's useful to mark the beginning of the region, and
> extend it using Isearch commands by putting the end of the region where
> Isearch ends.

Technically that's not necessary. Isearch always pushes the mark for you
anyway, even though it doesn't activate the region. But most people don't
know that, and even though I know it I frequently forget and activate
region before isearch.

Anyway, I don't see why it would be a problem. Just add an item to do a
regular search if the region is empty.

[-- Attachment #2: Type: text/html, Size: 692 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-23  0:22       ` Juri Linkov
  2015-11-23  0:53         ` Artur Malabarba
@ 2015-11-23  1:29         ` Drew Adams
  1 sibling, 0 replies; 8+ messages in thread
From: Drew Adams @ 2015-11-23  1:29 UTC (permalink / raw)
  To: Juri Linkov, Artur Malabarba; +Cc: 21957, Li Ian-Xue

> > 1. If the selected region has multiple lines, it would search only
> >    inside the region.
> > 2. If the selected region has one line or less, it would use the
> >    region as the search string.
> > 3. If there's no selection it do the usual occur.
> 
> This is a useful heuristic, not sure how intuitive it is.
> 
> BTW, I recall Drew asked how to do the same in Isearch, but I see no way
> because in Isearch it's useful to mark the beginning of the region, and
> extend it using Isearch commands by putting the end of the region where
> Isearch ends.

No, I don't think that was me.  Or not quite, if by that you
mean something I might have said about searching the region.

I'm not in favor of things such as the automatic switching
among #1, #2, and #3, above.  I prefer to let users pick
whether to search the region, regardless of its size or
whether it contains a newline char.  The combination of 1,2,3
above is _not_ a useful heuristic, IMO.  It can be useful to
do any of those things, but I don't think it is useful to
couple them together in a "dwimish" way.

I'm also not in favor of Isearch just picking up the region as
the search string (regardless of whether it contains newlines).
I prefer that users yank the region into the search string if
they want to search with it.  (I also give them another command
('C-M-y') to yank the secondary selection, which is typically
not at point, and which doesn't change until you change it
explicitly.)

IOW, I think it is better to have users explicitly say what
behavior they want, instead of dwimming them around.

FWIW, in Isearch+ these features are related to the region:

1. Option 'isearchp-restrict-to-region-flag' restricts
   searching to the active region (regardless of its size or
   the presence of a newline).  You can toggle this during
   Isearch using 'C-x n'.

2. Option 'isearchp-deactivate-region-flag' causes the active
   region to be deactivated (removing highlighting).  That
   makes it easier to see what is being searched.

3. If you also use library `modeline-posn.el' then when you
   search the active region you can keep that restriction for
   query-replacement invoked from Isearch.

4. Non-nil option 'isearchp-set-region-flag' selects the
   last search target as the region when you exit Isearch.
   You can toggle this during Isearch using 'C-SPC'.  If you
   also use library `replace+.el' then you can similarly
   select the last replacement as the region when you
   query-replace etc.

5. You can put a text or overlay property on the text in the
   region, and then later search the zones of text that have
   that property (they need not be contiguous).

6. If you also use library `zones.el' then you can search
   multiple zones defined by their limits (buffer positions
   or markers in any buffers), instead of by properties.
   You can add the active region to a set of such zones,
   using 'C-x n a'.  You can coalesce such zones, uniting
   their overlaps.  (That happens anyway when you search a
   set of zones.)

7. When you search zones of any kind, non-nil option
   'isearchp-dim-non-prop-zones-flag' dims the pieces of
   text that are not being searched.  You can toggle this
   during Isearch using 'C-M-D' (aka 'C-M-S-d').

8. You can search zones defined by text/overlays/buffer
   limits as described above, or you can search the
   complement.  You can toggle searching the complement
   using 'C-M-~' during Isearch.

http://www.emacswiki.org/emacs/IsearchPlus
http://www.emacswiki.org/emacs/Zones
http://www.emacswiki.org/emacs/ReplacePlus
http://www.emacswiki.org/emacs/ModeLinePosition





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#21957: 24.5; Make occur search within regions when there is one
  2015-11-21  5:29   ` Li Ian-Xue
  2015-11-22 12:13     ` Artur Malabarba
@ 2022-01-24 13:43     ` Lars Ingebrigtsen
  1 sibling, 0 replies; 8+ messages in thread
From: Lars Ingebrigtsen @ 2022-01-24 13:43 UTC (permalink / raw)
  To: Li Ian-Xue; +Cc: 21957, Juri Linkov

Li Ian-Xue <b4283@itsuwa.org> writes:

> Yes, that is what I did when I found out `occur' doesn't do regions. A
> friend of mine suggested
> that a combination of narrowing (C-x n w) and M-s o should do the trick,
> and it did.
>
> Nevertheless still I would still prefer `occur' to accept a regional
> parameter, as it would be much straight forward mode of operation.

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

occur now works as requested in the current Emacs version -- it does the
operation on the active region, so I'm closing this bug report.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-01-24 13:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-19  6:39 bug#21957: 24.5; Make occur search within regions when there is one b4283
2015-11-20  0:04 ` Juri Linkov
2015-11-21  5:29   ` Li Ian-Xue
2015-11-22 12:13     ` Artur Malabarba
2015-11-23  0:22       ` Juri Linkov
2015-11-23  0:53         ` Artur Malabarba
2015-11-23  1:29         ` Drew Adams
2022-01-24 13:43     ` Lars Ingebrigtsen

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).