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