]> git.eshelyaron.com Git - emacs.git/commitdiff
ls-lisp: get rid of the dreaded "no effect until you restart Emacs".
authorGlenn Morris <rgm@gnu.org>
Thu, 11 Nov 2010 08:28:35 +0000 (00:28 -0800)
committerGlenn Morris <rgm@gnu.org>
Thu, 11 Nov 2010 08:28:35 +0000 (00:28 -0800)
* lisp/ls-lisp.el (ls-lisp-set-options): New function.
(ls-lisp-emulation): Use ls-lisp-set-options for custom :set.  Doc fix.

lisp/ChangeLog
lisp/ls-lisp.el

index eae2a294bf830a691f8036b72e5fee54beb90387..5ba650c43b004c338e2da7317ec01c5b177c92fd 100644 (file)
@@ -7,6 +7,9 @@
        (ls-lisp-verbosity, ls-lisp-use-localized-time-format): Doc fixes.
        (ls-lisp-format, ls-lisp-format-time): Don't take `now' as an argument.
        (ls-lisp-insert-directory): Update caller.
+       (ls-lisp-set-options): New function.
+       (ls-lisp-emulation): Use ls-lisp-set-options for custom :set.
+       Doc fix.
 
        * play/landmark.el (lm-prompt-for-move):
        * play/gomoku.el (gomoku-prompt-for-move): Remove nonsensical code.
index 3791f6f59786a84edd4ff5b0883c498cdca07556..5f76c1bab7fa1a80baced9a6f6dd521129766d06 100644 (file)
   :version "21.1"
   :group 'dired)
 
+(defun ls-lisp-set-options ()
+  "Reset the ls-lisp options that depend on `ls-lisp-emulation'."
+  (mapc 'custom-reevaluate-setting
+       '(ls-lisp-ignore-case ls-lisp-dirs-first ls-lisp-verbosity)))
+
 (defcustom ls-lisp-emulation
   (cond ;; ((eq system-type 'windows-nt) 'MS-Windows)
-       ((memq system-type
-              '(hpux usg-unix-v irix berkeley-unix))
-        'UNIX))                        ; very similar to GNU
+       ((memq system-type '(hpux usg-unix-v irix berkeley-unix))
+        'UNIX))        ; very similar to GNU
   ;; Anything else defaults to nil, meaning GNU.
   "Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX.
-Corresponding value is one of the atoms: nil, MacOS, MS-Windows, UNIX.
-Sets default values for: `ls-lisp-ignore-case', `ls-lisp-dirs-first',
-`ls-lisp-verbosity'.  Need not match actual platform.  Changing this
-option will have no effect until you restart Emacs."
+Corresponding value is one of: nil, `MacOS', `MS-Windows', `UNIX'.
+Set this to your preferred value; it need not match the actual platform
+you are using.
+
+This variable does not affect the behavior of ls-lisp directly.
+Rather, it controls the default values for some variables that do:
+`ls-lisp-ignore-case', `ls-lisp-dirs-first', and `ls-lisp-verbosity'.
+
+If you change this variable directly (without using customize)
+after loading `ls-lisp', you should use `ls-lisp-set-options' to
+update the dependent variables."
   :type '(choice (const :tag "GNU" nil)
                 (const MacOS)
                 (const MS-Windows)
                 (const UNIX))
+  :initialize 'custom-initialize-default
+  :set (lambda (symbol value)
+        (unless (equal value (eval symbol))
+          (custom-set-default symbol value)
+          (ls-lisp-set-options)))
   :group 'ls-lisp)
 
 (defcustom ls-lisp-ignore-case