* Test for `save-abbrevs' improvement @ 2006-02-16 14:39 Juanma Barranquero 2006-02-16 20:46 ` Kevin Rodgers 0 siblings, 1 reply; 6+ messages in thread From: Juanma Barranquero @ 2006-02-16 14:39 UTC (permalink / raw) Often it is said here that it is best to check for features, and not for specific Emacs versions. What about changes to allowed values for a variable? `save-abbrevs' now accepts the value `silently', but that feature has neither new variables nor functions to test for. And I don't want to simply set `save-abbrevs' to `silently' because then, 21.1 asks me every time about saving the abbreviations. What would be the wisest way to check for it? (string-match "`silently'" (documentation-property 'save-abbrevs 'variable-documentation)) seems hardly elegant... -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Test for `save-abbrevs' improvement 2006-02-16 14:39 Test for `save-abbrevs' improvement Juanma Barranquero @ 2006-02-16 20:46 ` Kevin Rodgers 2006-02-17 9:41 ` Juanma Barranquero 0 siblings, 1 reply; 6+ messages in thread From: Kevin Rodgers @ 2006-02-16 20:46 UTC (permalink / raw) Juanma Barranquero wrote: > Often it is said here that it is best to check for features, and not > for specific Emacs versions. > > What about changes to allowed values for a variable? > > `save-abbrevs' now accepts the value `silently', but that feature has > neither new variables nor functions to test for. And I don't want to > simply set `save-abbrevs' to `silently' because then, 21.1 asks me > every time about saving the abbreviations. > > What would be the wisest way to check for it? > > (string-match "`silently'" > (documentation-property 'save-abbrevs > 'variable-documentation)) > > seems hardly elegant... How about: (member '(const silently) (custom-variable-type 'save-abbrevs)) -- Kevin Rodgers ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Test for `save-abbrevs' improvement 2006-02-16 20:46 ` Kevin Rodgers @ 2006-02-17 9:41 ` Juanma Barranquero 2006-02-17 10:27 ` Juanma Barranquero 0 siblings, 1 reply; 6+ messages in thread From: Juanma Barranquero @ 2006-02-17 9:41 UTC (permalink / raw) Cc: emacs-devel On 2/16/06, Kevin Rodgers <ihs_4664@yahoo.com> wrote: > How about: > > (member '(const silently) (custom-variable-type 'save-abbrevs)) That would require loading cus-edit.el (which I usually don't load, as I don't use Customize), but I think I'll end using (rassoc '(silently) (get 'save-abbrevs 'custom-type)) Nice idea, thanks. -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Test for `save-abbrevs' improvement 2006-02-17 9:41 ` Juanma Barranquero @ 2006-02-17 10:27 ` Juanma Barranquero 2006-02-17 17:41 ` Kevin Rodgers 0 siblings, 1 reply; 6+ messages in thread From: Juanma Barranquero @ 2006-02-17 10:27 UTC (permalink / raw) Cc: emacs-devel On 2/17/06, Juanma Barranquero <lekktu@gmail.com> wrote: > I don't use Customize), but I think I'll end using > > (rassoc '(silently) (get 'save-abbrevs 'custom-type)) (and (listp (get 'save-abbrevs 'custom-type)) 'silently) really, as the custom-type is 'boolean in 21.1. Oh well. All in all, though the "test for functionality, not Emacs version" mantra is a good suggestion, it breaks sometimes. In my .emacs I advise `list-faces-display' to add to it the "C-u means ask for regexp" feature of 22.X, but only if it is not there already. I didn't find any way easier than: (let ((code (symbol-function #'list-faces-display))) (when (and (byte-code-function-p code) (null (aref code 0))) ;; Stuff for pre-22.X versions ;; ... )) Ugh. -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Test for `save-abbrevs' improvement 2006-02-17 10:27 ` Juanma Barranquero @ 2006-02-17 17:41 ` Kevin Rodgers 2006-02-17 20:31 ` Juanma Barranquero 0 siblings, 1 reply; 6+ messages in thread From: Kevin Rodgers @ 2006-02-17 17:41 UTC (permalink / raw) Cc: emacs-devel Juanma Barranquero <lekktu@gmail.com> wrote: > On 2/17/06, Juanma Barranquero <lekktu@gmail.com> wrote: > > > I don't use Customize), but I think I'll end using > > > > (rassoc '(silently) (get 'save-abbrevs 'custom-type)) No, you don't want to match (function silently), only (const silently), and then only if it is actually a choice widget: (let ((custom-type (get 'save-abbrevs 'custom-type))) (and (consp custom-type) (eq (car custom-type) 'choice) (member '(const silently) custom-type))) > (and (listp (get 'save-abbrevs 'custom-type)) 'silently) That looks completely wrong to me. What are you trying to express? > really, as the custom-type is 'boolean in 21.1. Oh well. What? I thought your goal was to determine whether or not save-abbrevs could be meaningfully set to silently. If it has type boolean, nil is the only distinguished value and silently is just another non-nil value. > All in all, though the "test for functionality, not Emacs version" > mantra is a good suggestion, it breaks sometimes. In my .emacs I > advise `list-faces-display' to add to it the "C-u means ask for > regexp" feature of 22.X, but only if it is not there already. I didn't > find any way easier than: > > (let ((code (symbol-function #'list-faces-display))) > (when (and (byte-code-function-p code) > (null (aref code 0))) > ;; Stuff for pre-22.X versions > ;; ... > )) > > Ugh. Isn't there something like: (and (fboundp 'function-arity) (> (function-arity 'list-faces-display) 0)) -- Kevin __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Test for `save-abbrevs' improvement 2006-02-17 17:41 ` Kevin Rodgers @ 2006-02-17 20:31 ` Juanma Barranquero 0 siblings, 0 replies; 6+ messages in thread From: Juanma Barranquero @ 2006-02-17 20:31 UTC (permalink / raw) Cc: emacs-devel On 2/17/06, Kevin Rodgers <ihs_4664@yahoo.com> wrote: > No, you don't want to match (function silently), only (const silently), > and then only if it is actually a choice widget: Yes, of course. If I were writing code for a generally useful package, I'd do all the tests. This is only for my .emacs, though, so quick & not-too-dirty is fine. > > (and (listp (get 'save-abbrevs 'custom-type)) 'silently) > > That looks completely wrong to me. What are you trying to express? Is not wrong. It tries to express: "if the custom type is a list, return 'silently; otherwise, return nil". Which it does. > What? I thought your goal was to determine whether or not save-abbrevs > could be meaningfully set to silently. If it has type boolean, nil is > the only distinguished value and silently is just another non-nil value. In Emacs 21.1, save-abbrevs was boolean. In 22.0.50, it is not; t and nil mean the same thing that back in 21.1, but 'silently means (as expected) "save quietly". So, if you put (setq save-abbrevs 'silently) on your .emacs and use it with 21.1, it will ask you *every time* whether you do want to save the abbreviations (because, as you say, it takes 'silently as non-nil, and hence true). I do not want to be asked always, so I resort to setting it to 'silently on 22.0 and nil in 21.1. That's what my code does. My original question could be formulated like this: "How can you know when a variable accepts new values, other than checking the Emacs version". Obviously there's no generic answer, so I was making do with checking the docstring. Your answer, for which I am grateful, is: "if the variable is a customization var, its custom-type *could* have the relevant info". Good idea. :) > Isn't there something like: > > (and (fboundp 'function-arity) > (> (function-arity 'list-faces-display) 0)) No, there isn't a `function-arity'. There's a `subr-arity' for builtins, the trick I use for compiled functions, and asorted other tricks for other kinds of functions or function-lookalikes (for example, `ad-arglist' for advised functions, etc.). -- /L/e/k/t/u ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-02-17 20:31 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-02-16 14:39 Test for `save-abbrevs' improvement Juanma Barranquero 2006-02-16 20:46 ` Kevin Rodgers 2006-02-17 9:41 ` Juanma Barranquero 2006-02-17 10:27 ` Juanma Barranquero 2006-02-17 17:41 ` Kevin Rodgers 2006-02-17 20:31 ` Juanma Barranquero
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.