Thank you! I hope is just not being said explicitly enough, and a little reminder might push people to think what make a good package – even if they disagree with me.
It’s more complex features such custom initialisation, or variable getters/setters can’t be properly used, because too many people still prefer setq – and because it isn’t used, people don’t see the problem with setq.
I don’t think I understand this part. Do you mean that there are still people writing setq forms at the top level as part of a package? Usually for me when I see people ignoring defcustom it is in favor if defvar instead, so there is still a top-level def form, and using setq only to change the value of something that’s been defined elsewhere.
My biggest complaint with defcustom is that it seems to be created with the intention of convincing Emacs users that they can customize Emacs without learning to write elisp, which to me defeats the whole point of using Emacs. (However, I would still use defcustom for things like faces and colors, because the textual representation of those values is insufficiently expressive.)
Other than that I agreed with the rest of the article. It’s nice to see that things like dash.el are not needed any more because the built-in functions have finally caught up; when dash was first introduced, working with lists without any 3rd-party libraries was extremely tedious.
It seems I was a bit unclear. I was talking about the chicken-and-egg problem in regards to adopting customize. Developers hesitate to use :set, :get, etc. because users might not be familiar or use the customize interface. And users don’t feel the need to change their configuration, because “it’s the same anyway”.
But using these features would be helpful. Recently I was working on a package that had a prefix key for a keymap. The key was stored in a variable, and using defcustom, changing the variable would update the keys. Without customize, the user would either need to manually re-evaluate the relevant code, or call some non-standard function for this specific package.
My biggest complaint with defcustom is that it seems to be created with the intention of convincing Emacs users that they can customize Emacs without learning to write elisp, which to me defeats the whole point of using Emacs
Well, you can. You don’t need Elisp for a lot of things, such as changing a boolean or integer value. Elisp is important if you write your own logic, but when it comes to user options, using Lisp or ECI is a negligible difference. But if one insists, you can also modify customizable variables from lisp (I mentioned the csetq macro in the article).
Thank you for for writing this. You’ve done a great job at putting into words the things that bug me about the Emacs ecosystem.
Thank you! I hope is just not being said explicitly enough, and a little reminder might push people to think what make a good package – even if they disagree with me.
I don’t think I understand this part. Do you mean that there are still people writing
setq
forms at the top level as part of a package? Usually for me when I see people ignoringdefcustom
it is in favor ifdefvar
instead, so there is still a top-level def form, and usingsetq
only to change the value of something that’s been defined elsewhere.My biggest complaint with
defcustom
is that it seems to be created with the intention of convincing Emacs users that they can customize Emacs without learning to write elisp, which to me defeats the whole point of using Emacs. (However, I would still usedefcustom
for things like faces and colors, because the textual representation of those values is insufficiently expressive.)Other than that I agreed with the rest of the article. It’s nice to see that things like dash.el are not needed any more because the built-in functions have finally caught up; when dash was first introduced, working with lists without any 3rd-party libraries was extremely tedious.
It seems I was a bit unclear. I was talking about the chicken-and-egg problem in regards to adopting customize. Developers hesitate to use
:set
,:get
, etc. because users might not be familiar or use the customize interface. And users don’t feel the need to change their configuration, because “it’s the same anyway”.But using these features would be helpful. Recently I was working on a package that had a prefix key for a keymap. The key was stored in a variable, and using defcustom, changing the variable would update the keys. Without customize, the user would either need to manually re-evaluate the relevant code, or call some non-standard function for this specific package.
Well, you can. You don’t need Elisp for a lot of things, such as changing a boolean or integer value. Elisp is important if you write your own logic, but when it comes to user options, using Lisp or ECI is a negligible difference. But if one insists, you can also modify customizable variables from lisp (I mentioned the
csetq
macro in the article).