GNU bug report logs -
#13687
24.3.50; `read-regexp' should provide regex for symbol at point as defaults
Previous Next
Reported by: Jambunathan K <kjambunathan <at> gmail.com>
Date: Mon, 11 Feb 2013 06:30:02 UTC
Severity: wishlist
Found in version 24.3.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Juri
(For the sake of record)
Feel free to take over this bug.
In light of recent developments on the mailing list, I am a bit hesitant
to take these discussions any further.
Jambunathan K.
Juri Linkov <juri <at> jurta.org> writes:
>> EXPERIMENTAL and ABANDONED PATCH
>
> I think your patch is useful, please don't abandon it
> except its `this-command' part. As you already noted
> `this-command' is very fragile and flaky. Removing everything
> related to `this-command' would leave other useful parts of your patch
> that adds a new defcustom `read-regexp-defaults' and especially this part:
>
> + (choice :tag "Function to retrieve the regexp"
> + (const :tag "Use no defaults" nil)
> + (radio
> + (function-item find-tag-default-as-regexp)
> + (function-item find-tag-default)
> + (function-item :tag "Regexp history"
> + (lambda nil
> + "Use regexp history."
> + (car regexp-history)))
> + function)))))
>
> and a new function `read-regexp-defaults'.
>
> Instead of using `this-command', look for ideas to other similar features.
> For example, many invocations of minibuffer functions specify their
> HISTORY argument as a symbol that divides history variables into groups.
> The DEFAULTS argument could use a similar grouping, i.e. when
> `read-regexp' uses the symbol `regexp-history' in a call like:
>
> (read-regexp "Regexp to highlight" (car regexp-history) 'regexp-history)
>
> This could be changed to specify DEFAULTS as the symbol `read-regexp-defaults':
>
> (read-regexp "Regexp to highlight" 'read-regexp-defaults 'regexp-history)
>
> where `read-regexp-defaults' is a symbol name of the function that uses
> the value of the defcustom `read-regexp-defaults' the get the default value
> or returns nil.
>
> We could add as many additional default-providing functions
> as the number of places that call `read-regexp'. But I think
> it should be enough to have just two functions:
>
> (defun read-regexp-defaults-or-history ()
> (or (read-regexp-defaults)
> (car regexp-history)))
>
> (defun read-regexp-defaults-or-tag ()
> (or (read-regexp-defaults)
> (find-tag-default-as-regexp)))
>
> These two functions are necessary to keep the current status quo
> where some commands traditionally provide the last history element
> as the default (`highlight-regexp', `occur-read-primary-args', `how-many',
> `flush-lines', `keep-lines'), and other commands provide the tag at point
> (`rgrep', `query-replace', `multi-occur-in-matching-buffers').
> This is an artificial division existing solely for historical reasons.
> These functions could be used e.g. in `occur-read-primary-args' as:
>
> (read-regexp "List lines matching regexp" 'read-regexp-defaults-or-history 'regexp-history)
>
> and e.g. in `grep-read-regexp':
>
> (read-regexp "Search for" 'read-regexp-defaults-or-tag 'regexp-history)
>
> This implementation will satisfy three goals:
>
> 1. Backward compatibility for the current traditional defaults,
> 2. Allow easy customization in one place (defcustom `read-regexp-defaults'),
> 3. Allow fine-tuning with function redefinitions, i.e. when
> the users will ask for more specific functions they could be added as:
>
> (defun occur-read-regexp-defaults ()
> (read-regexp-defaults-or-history))
>
> (defun grep-read-regexp-defaults ()
> (read-regexp-defaults-or-tag))
>
> and can be used in `occur-read-primary-args':
>
> (read-regexp "List lines matching regexp" 'occur-read-regexp-defaults 'regexp-history)
>
> and in `grep-read-regexp':
>
> (read-regexp "Search for" 'grep-read-regexp-defaults 'regexp-history)
This bug report was last modified 12 years and 68 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.