unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: help-gnu-emacs@gnu.org
Subject: (1) defcustom :set,  (2) similar for defvar
Date: Fri, 11 Aug 2017 15:12:52 -0700 (PDT)	[thread overview]
Message-ID: <b70e8128-b4d0-4917-b1dd-875d94af492c@default> (raw)
In-Reply-To: <dc709973-15fe-4450-a594-670a8bbda20f@default>

1. Q: What's a use case for a `defcustom' `:set' function?
  A1: Add/remove a hook function, depending on the new option value.
  A2: Perform some updating or synchronizing, after a value change.

   ;; hooking/unhooking
   (lambda (sym val)
     (custom-set-default sym val)
     (if val
         (add-hook 'isearch-update-post-hook
                   'isearchp-repeat-search-if-fail)
       (remove-hook 'isearch-update-post-hook
                    'isearchp-repeat-search-if-fail)))

   ;; updating
   (lambda (sym val)
     (custom-set-default sym val)
     (echo-bell-update))

   ;; synchronizing
   (lambda (sym val)   ; Synchronize an associated variable.
     (custom-set-default sym val)
     (setq isearchp-current-filter-preds-alist
           isearchp-filter-predicates-alist))
   
2. Q: Wouldn't some `defcustom' features (`:set', :type', `:group',
      etc.) be useful also for other, non-option Lisp variables?

   A: Yes, I think so.  (But it seems I'm a minority of one, here.)

   See bug #27348, which provides a patch to let you do the same
   things with `defvar' that you can do with `defcustom'.

   (Actually, it provides a new macro, `defvarc', which is
   `defcustom' with, by default, no interactive Customizing).

   Here's the blurb motivating this feature (from bug #27348):

     The ability to type-check, provide :set and :initialize
     trigger functions, automatically :require libraries, add
     links to doc, associate with one or more :groups, etc. -
     these are useful things to be able to do with at least
     some defvars, not just with defcustoms.  Similarly, the
     ability to persist non-option variables in a user's
     custom file can be useful.

     In sum, this enhancement makes it possible to uncouple
     interactive customization from the other features that
     `custom.el' offers, in particular, type-checking and
     persistence, and to provide the latter for non-option
     variables.

   https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27348



  reply	other threads:[~2017-08-11 22:12 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-10 13:51 Using "Emacs Configure" **and** modifying .emacs Ronald Fischer
2017-08-10 15:59 ` Drew Adams
2017-08-10 16:58   ` Emanuel Berg
2017-08-12 17:24     ` John Ankarström
2017-08-13 20:16       ` Emanuel Berg
2017-08-12 17:32     ` John Ankarström
2017-08-10 16:00 ` Óscar Fuentes
2017-08-10 16:56 ` Emanuel Berg
2017-08-11  7:21   ` Ronald Fischer
2017-08-11 13:51     ` Emanuel Berg
2017-08-11 14:11       ` Tomas Nordin
     [not found]       ` <mailman.12937.1502460691.21957.help-gnu-emacs@gnu.org>
2017-08-11 15:20         ` notbob
2017-08-11 15:31           ` Emanuel Berg
2017-08-11 16:54             ` Drew Adams
2017-08-11 19:07               ` Emanuel Berg
2017-08-11 19:15                 ` Drew Adams
2017-08-12 15:53                   ` ken
2017-08-12 16:11                     ` Emanuel Berg
2017-08-12 16:24                       ` ken
2017-08-13 20:19                         ` Emanuel Berg
     [not found]           ` <mailman.12941.1502465490.21957.help-gnu-emacs@gnu.org>
2017-08-11 15:57             ` notbob
2017-08-11 16:37               ` Emanuel Berg
     [not found]     ` <mailman.12935.1502459723.21957.help-gnu-emacs@gnu.org>
2017-08-11 14:09       ` HASM
2017-08-11 15:20         ` Emanuel Berg
     [not found]         ` <mailman.12940.1502464872.21957.help-gnu-emacs@gnu.org>
2017-08-11 18:55           ` Alan Mackenzie
2017-08-11 20:08             ` HASM
2017-08-11 20:29             ` Emanuel Berg
2017-08-11 20:46               ` Drew Adams
2017-08-11 22:12                 ` Drew Adams [this message]
2017-08-12  0:15                 ` Emanuel Berg
2017-08-12  7:30                   ` tomas
2017-08-12  7:43                     ` Emanuel Berg
2017-08-12  8:02                       ` tomas
2017-08-12 10:03                         ` Emanuel Berg
2017-08-12 10:38                           ` Tomas Nordin
2017-08-12 11:38                             ` Emanuel Berg
2017-08-15 22:10                             ` Emanuel Berg
2017-08-15 22:18                               ` Drew Adams
2017-08-15 22:27                                 ` Emanuel Berg
2017-08-15 23:38                                   ` Drew Adams
2017-08-16  0:09                                     ` John Mastro
2017-08-16  0:37                                       ` Robert Thorpe
2017-08-16  1:20                                         ` Emanuel Berg
2017-08-16  0:09                                     ` Emanuel Berg
2017-08-15 22:25                               ` John Mastro
2017-08-15 22:41                                 ` Emanuel Berg
2017-08-15 23:09                                 ` Drew Adams
2017-08-16  0:07                                   ` John Mastro
2017-08-16  0:13                                     ` Emanuel Berg
2017-08-12 12:50                         ` Emanuel Berg
2017-08-12 16:04                       ` Drew Adams
2017-08-12 16:20                         ` Emanuel Berg
2017-08-12 16:04                     ` Drew Adams
2017-08-12  0:32                 ` Emanuel Berg
2017-08-14 16:33                 ` Emanuel Berg
2017-08-14 18:15                   ` Emanuel Berg
2017-08-14 21:41                     ` Emanuel Berg
2017-08-14 23:17                     ` John Mastro
2017-08-15  0:24                       ` Emanuel Berg
2017-08-15  2:20                         ` Emanuel Berg
     [not found] ` <mailman.12888.1502380810.21957.help-gnu-emacs@gnu.org>
2017-08-10 17:47   ` Dan Espen
2017-08-10 18:06     ` Drew Adams
2017-08-10 18:10       ` Drew Adams
     [not found]     ` <mailman.12897.1502388423.21957.help-gnu-emacs@gnu.org>
2017-08-10 19:08       ` Dan Espen
2017-08-10 19:14         ` Emanuel Berg
     [not found]         ` <mailman.12899.1502392471.21957.help-gnu-emacs@gnu.org>
2017-08-11 12:03           ` Dan Espen
2017-08-11 13:46             ` Emanuel Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b70e8128-b4d0-4917-b1dd-875d94af492c@default \
    --to=drew.adams@oracle.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).