* defvar interactively, user-variable-p
@ 2015-10-18 9:48 Uwe Brauer
2015-10-18 10:39 ` David Kastrup
2015-10-18 11:52 ` Michael Heerdegen
0 siblings, 2 replies; 8+ messages in thread
From: Uwe Brauer @ 2015-10-18 9:48 UTC (permalink / raw)
To: emacs-devel
Hello
I am no friend of defcustom, but would like to define variables in what
that I can change their value interactively via set-variable.
According to the manual
,----
| Function: user-variable-p variable
|
| This function returns t if variable is a user option--a variable
| intended to be set by the user for customization--and nil otherwise.
| (Variables other than user options exist for the internal purposes
| of Lisp programs, and users need not know about them.)
|
| User option variables are distinguished from other variables either
| though being declared using defcustom(4) or by the first character
| of their variable-documentation property. If the property exists and
| is a string, and its first character is `*', then the variable is a
| user option.
`----
This is a feature I am familiar with from Xemacs.
Now look at that
(defvar latexdiff-perl nil
"*Whether to use latexdiff based on perl or not, default is NIL.")
(user-variable-p latexdiff-perl)
Returns NIL and not t. And in fact I cannot set the variable
interactively. What do I miss?
Thanks
Uwe Brauer
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 9:48 defvar interactively, user-variable-p Uwe Brauer
@ 2015-10-18 10:39 ` David Kastrup
2015-10-18 12:13 ` Uwe Brauer
2015-10-18 11:52 ` Michael Heerdegen
1 sibling, 1 reply; 8+ messages in thread
From: David Kastrup @ 2015-10-18 10:39 UTC (permalink / raw)
To: emacs-devel
Uwe Brauer <oub@mat.ucm.es> writes:
> Hello
>
> I am no friend of defcustom, but would like to define variables in what
> that I can change their value interactively via set-variable.
>
> According to the manual
>
>
>
> ,----
> | Function: user-variable-p variable
> |
> | This function returns t if variable is a user option--a variable
> | intended to be set by the user for customization--and nil otherwise.
> | (Variables other than user options exist for the internal purposes
> | of Lisp programs, and users need not know about them.)
> |
> | User option variables are distinguished from other variables either
> | though being declared using defcustom(4) or by the first character
> | of their variable-documentation property. If the property exists and
> | is a string, and its first character is `*', then the variable is a
> | user option.
> `----
>
> This is a feature I am familiar with from Xemacs.
I read
user-variable-p is an alias for ‘custom-variable-p’.
(user-variable-p VARIABLE)
This function is obsolete since 24.3;
use ‘custom-variable-p’ instead.
Return non-nil if VARIABLE is a customizable variable.
A customizable variable is either (i) a variable whose property
list contains a non-nil ‘standard-value’ or ‘custom-autoload’
property, or (ii) an alias for another customizable variable.
[back]
as the function DOC string, and in the manual
-- Function: custom-variable-p arg
This function returns non-‘nil’ if ARG is a customizable variable.
A customizable variable is either a variable that has a
‘standard-value’ or ‘custom-autoload’ property (usually meaning it
was declared with ‘defcustom’), or an alias for another
customizable variable.
while user-variable-p (understandably) is no longer documented.
So just what manual is it that you are consulting?
--
David Kastrup
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 9:48 defvar interactively, user-variable-p Uwe Brauer
2015-10-18 10:39 ` David Kastrup
@ 2015-10-18 11:52 ` Michael Heerdegen
2015-10-18 13:11 ` Uwe Brauer
1 sibling, 1 reply; 8+ messages in thread
From: Michael Heerdegen @ 2015-10-18 11:52 UTC (permalink / raw)
To: emacs-devel
Hello Uwe,
from NEWS.24:
,----------------------------------------------------------------------
| * Incompatible Lisp Changes in Emacs 24.3
|
| ** Docstrings starting with `*' no longer indicate user options.
| Only variables defined using `defcustom' are considered user options.
| The function `user-variable-p' is now an obsolete alias for
| `custom-variable-p'.
`----------------------------------------------------------------------
Could it be that your installed documentation is older than your Emacs
version?
Regards,
Michael.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 10:39 ` David Kastrup
@ 2015-10-18 12:13 ` Uwe Brauer
2015-10-18 12:25 ` David Kastrup
0 siblings, 1 reply; 8+ messages in thread
From: Uwe Brauer @ 2015-10-18 12:13 UTC (permalink / raw)
To: emacs-devel
> Uwe Brauer <oub@mat.ucm.es> writes:
> This function is obsolete since 24.3;
> use ‘custom-variable-p’ instead.
> Return non-nil if VARIABLE is a customizable variable.
> A customizable variable is either (i) a variable whose property
> list contains a non-nil ‘standard-value’ or ‘custom-autoload’
> property, or (ii) an alias for another customizable variable.
> [back]
> as the function DOC string, and in the manual
> -- Function: custom-variable-p arg
> This function returns non-‘nil’ if ARG is a customizable variable.
> A customizable variable is either a variable that has a
> ‘standard-value’ or ‘custom-autoload’ property (usually meaning it
> was declared with ‘defcustom’), or an alias for another
> customizable variable.
> while user-variable-p (understandably) is no longer documented.
> So just what manual is it that you are consulting?
Well I took the first entry google offered.
Great, I just looked into the http address:
https://ftp.gnu.org/old-gnu/Manuals/elisp-manual-21-2.8/html_node/elisp_143.html
It says *old* sigh! Sorry.
However I never really paid attention to defcustom,
so the nifty easy to use feature "*"
as in
(defvar latexdiff-perl nil
"*Whether to use latexdiff based on perl or not, default is NIL.")
Is gone?
But
https://www.gnu.org/software/emacs/manual/html_node/eintr/defvar-and-asterisk.html#defvar-and-asterisk
Suggests that I still can use it. But it does not work for me,
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 12:13 ` Uwe Brauer
@ 2015-10-18 12:25 ` David Kastrup
2015-10-18 13:59 ` Uwe Brauer
0 siblings, 1 reply; 8+ messages in thread
From: David Kastrup @ 2015-10-18 12:25 UTC (permalink / raw)
To: emacs-devel
Uwe Brauer <oub@mat.ucm.es> writes:
> > Uwe Brauer <oub@mat.ucm.es> writes:
>
>
> > This function is obsolete since 24.3;
> > use ‘custom-variable-p’ instead.
>
> > Return non-nil if VARIABLE is a customizable variable.
> > A customizable variable is either (i) a variable whose property
> > list contains a non-nil ‘standard-value’ or ‘custom-autoload’
> > property, or (ii) an alias for another customizable variable.
>
> > [back]
>
> > as the function DOC string, and in the manual
>
> > -- Function: custom-variable-p arg
> > This function returns non-‘nil’ if ARG is a customizable variable.
> > A customizable variable is either a variable that has a
> > ‘standard-value’ or ‘custom-autoload’ property (usually meaning it
> > was declared with ‘defcustom’), or an alias for another
> > customizable variable.
>
> > while user-variable-p (understandably) is no longer documented.
>
> > So just what manual is it that you are consulting?
>
> Well I took the first entry google offered.
You _are_ aware that the manuals are installed as part of Emacs?
C-h i g (elisp) RET
or the respective entry from the Help menu should get you going.
--
David Kastrup
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 11:52 ` Michael Heerdegen
@ 2015-10-18 13:11 ` Uwe Brauer
2015-10-18 15:35 ` Drew Adams
0 siblings, 1 reply; 8+ messages in thread
From: Uwe Brauer @ 2015-10-18 13:11 UTC (permalink / raw)
To: emacs-devel
>>> "Michael" == Michael Heerdegen <michael_heerdegen@web.de> writes:
> Hello Uwe,
> from NEWS.24:
> ,----------------------------------------------------------------------
> | * Incompatible Lisp Changes in Emacs 24.3
> |
> | ** Docstrings starting with `*' no longer indicate user options.
> | Only variables defined using `defcustom' are considered user options.
> | The function `user-variable-p' is now an obsolete alias for
> | `custom-variable-p'.
> `----------------------------------------------------------------------
Thanks that settles it!
> Could it be that your installed documentation is older than your Emacs
> version?
I think I trust google too much :'(
BTW pitty that this functionality is gone. Anyhow
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: defvar interactively, user-variable-p
2015-10-18 12:25 ` David Kastrup
@ 2015-10-18 13:59 ` Uwe Brauer
0 siblings, 0 replies; 8+ messages in thread
From: Uwe Brauer @ 2015-10-18 13:59 UTC (permalink / raw)
To: emacs-devel
> Uwe Brauer <oub@mat.ucm.es> writes:
> You _are_ aware that the manuals are installed as part of Emacs?
> C-h i g (elisp) RET
> or the respective entry from the Help menu should get you going.
Sigh, yes and no. I unfortunately use that sparsely and rely too much
on google.... Bad custom I suppose.
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: defvar interactively, user-variable-p
2015-10-18 13:11 ` Uwe Brauer
@ 2015-10-18 15:35 ` Drew Adams
0 siblings, 0 replies; 8+ messages in thread
From: Drew Adams @ 2015-10-18 15:35 UTC (permalink / raw)
To: Uwe Brauer, emacs-devel
> BTW pitty that this functionality is gone. Anyhow
Note, though, that you have commands `customize-set-variable'
and `customize-set-value', each of which does a part of what
`set-variable' does (a prefix arg to `set-variable' gives the
buffer-local behavior) - and more.
Those commands have the advantage that they not only type-check
your input (respecting the defcustom `:type') but they also
respect other defcustom keywords, such as `:set'.
`set-variable' respects `:type', but unfortunately not `:set':
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6578
http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg00867.html
http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg00839.html
My impression is that too few users are aware of
`customize-set-variable' and `customize-set-value'. If the
(complete) behaviors of those commands were rolled into the
single command `set-variable' then users might take more
advantage of them.
And users who today still use `setq' in their init files
to set user options might then take to using that instead,
reducing problems due to ignoring `:type', `:set', and
`:initialize'.
I would also like to see defvar allow keywords `:type' and
`:set'. That is, let you optionally specify the types of
allowable values and specify a setter function.
http://lists.gnu.org/archive/html/emacs-devel/2009-10/msg00668.html
Not only are defvar variables sometimes set by users, but
they can be set by other libraries. Letting the defining
library control the allowable types would be a definite
benefit, IMO. Use of such keywords would be optional, of
course.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-10-18 15:35 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-18 9:48 defvar interactively, user-variable-p Uwe Brauer
2015-10-18 10:39 ` David Kastrup
2015-10-18 12:13 ` Uwe Brauer
2015-10-18 12:25 ` David Kastrup
2015-10-18 13:59 ` Uwe Brauer
2015-10-18 11:52 ` Michael Heerdegen
2015-10-18 13:11 ` Uwe Brauer
2015-10-18 15:35 ` Drew Adams
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).