emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Rant - Elisp terminology is deceptive


From: Kelly Dean
Subject: Rant - Elisp terminology is deceptive
Date: Fri, 23 Jan 2015 02:59:12 +0000

I wasted an hour today re-discovering the fact that (eval (car (get 'foo 
'standard-value))), not (default-value 'foo), returns the default value of 
'foo. I learned this lesson before, but the word ‟default” is so suggestive of 
meaning «default» that I forgot that it doesn't actually mean «default» in 
Emacs. I even remembered setq-default, but cognitive dissonance from the 
absurdity of its name prevented me from remembering that default-value has the 
same problem.

For the value of a symbol in the global context, how about using the word 
‟global”?

Ask any normal English-speaker for an antonym of ‟local”. He won't say 
‟default”. He'll say ‟remote” or ‟global” or some such.

Ask him for an antonym of ‟default”. He won't say ‟local”. He'll say 
‟non-standard” or ‟customized” or some such.

Inflict Emacs upon him for a few months, then ask him what's the difference 
between a ‟standard value” and a ‟default value”. He won't know. Even after 
writing a thousand lines of Elisp.

Tell him that the default value of shift-select-mode is t. Then do (setq 
shift-select-mode nil), and ask him what the default value is. He'll say ‟t”, 
not ‟nil”. Ask him what changed, and he'll say shift-select-mode is no longer 
set to the default value. Then show him what (default-value shift-select-mode) 
returns, and he'll tell you it must be a bug.

Since ‟default” is already misused to mean «global», it can't be changed to 
mean «standard», since that would cause even more confusion. ‟Standard” can 
stay the way it is. ‟Buffer-local” can too. But please stop using the word 
‟default” for «global»; use ‟global”. There's already precedence in Emacs: 
describe-variable calls it ‟global”.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]