Merge changes made in Gnus trunk.
[bpt/emacs.git] / lisp / fringe.el
index b23cea1..6f5f496 100644 (file)
@@ -136,6 +136,14 @@ See `fringe-mode' for possible values and their effect."
       ;; Otherwise impose the user-specified value of fringe-mode.
       (custom-initialize-reset symbol value))))
 
+(defconst fringe-styles
+  '(("default" . nil)
+    ("no-fringes" . 0)
+    ("right-only" . (0 . nil))
+    ("left-only" . (nil . 0))
+    ("half-width" . (4 . 4))
+    ("minimal" . (1 . 1))))
+
 (defcustom fringe-mode nil
   "Specify appearance of fringes on all frames.
 This variable can be nil (the default) meaning the fringes should have
@@ -152,16 +160,19 @@ it take real effect.
 Setting the variable with a customization buffer also takes effect.
 If you only want to modify the appearance of the fringe in one frame,
 you can use the interactive function `set-fringe-style'."
-  :type '(choice (const :tag "Default width" nil)
-                (const :tag "No fringes" 0)
-                (const :tag "Only right" (0 . nil))
-                (const :tag "Only left" (nil . 0))
-                (const :tag "Half width" (4 . 4))
-                (const :tag "Minimal" (1 . 1))
-                (integer :tag "Specific width")
-                (cons :tag "Different left/right sizes"
-                      (integer :tag "Left width")
-                      (integer :tag "Right width")))
+  :type `(choice
+          ,@ (mapcar (lambda (style)
+                      (let ((name
+                             (replace-regexp-in-string "-" " " (car style))))
+                        `(const :tag
+                                ,(concat (capitalize (substring name 0 1))
+                                         (substring name 1))
+                                ,(cdr style))))
+                    fringe-styles)
+          (integer :tag "Specific width")
+          (cons :tag "Different left/right sizes"
+                (integer :tag "Left width")
+                (integer :tag "Right width")))
   :group 'fringe
   :require 'fringe
   :initialize 'fringe-mode-initialize
@@ -178,27 +189,20 @@ If ALL-FRAMES, the negation of the fringe values in
 `default-frame-alist' is used when user enters the empty string.
 Otherwise the negation of the fringe value in the currently selected
 frame parameter is used."
-  (let ((mode (intern (completing-read
-                      (concat
-                       "Select fringe mode for "
-                       (if all-frames "all frames" "selected frame")
-                       " (type ? for list): ")
-                      '(("none") ("default") ("left-only")
-                        ("right-only") ("half") ("minimal"))
-                      nil t))))
-    (cond ((eq mode 'none) 0)
-         ((eq mode 'default) nil)
-         ((eq mode 'left-only) '(nil . 0))
-         ((eq mode 'right-only) '(0 . nil))
-         ((eq mode 'half) '(4 . 4))
-         ((eq mode 'minimal) '(1 . 1))
-         ((eq mode (intern ""))
-          (if (eq 0 (cdr (assq 'left-fringe
-                               (if all-frames
-                                   default-frame-alist
-                                 (frame-parameters (selected-frame))))))
-              nil
-            0)))))
+  (let* ((mode (completing-read
+                (concat
+                 "Select fringe mode for "
+                 (if all-frames "all frames" "selected frame")
+                 " (type ? for list): ")
+                fringe-styles nil t))
+         (style (assoc (downcase mode) fringe-styles)))
+    (if style (cdr style)
+      (if (eq 0 (cdr (assq 'left-fringe
+                           (if all-frames
+                               default-frame-alist
+                             (frame-parameters (selected-frame))))))
+          nil
+        0))))
 
 (defun fringe-mode (&optional mode)
   "Set the default appearance of fringes on all frames.