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