changeset 110426:cd8d9630f156

* lisp/fringe.el (fringe-styles): New var. (fringe-mode, fringe-query-style): Use it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 19 Sep 2010 11:32:52 +0200
parents cd99c4421df9
children 1d2cc4dc816f
files lisp/ChangeLog lisp/fringe.el
diffstat 2 files changed, 41 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Sep 19 11:16:28 2010 +0200
+++ b/lisp/ChangeLog	Sun Sep 19 11:32:52 2010 +0200
@@ -1,7 +1,12 @@
+2010-09-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* fringe.el (fringe-styles): New var.
+	(fringe-mode, fringe-query-style): Use it.
+
 2010-09-18  Michael R. Mauger  <mmaug@yahoo.com>
 
 	* progmodes/sql.el: Version 2.8
-	(sql-login-params): Updated widget structure; changes still
+	(sql-login-params): Update widget structure; changes still
 	needed.
 	(sql-product-alist): Add :list-all and :list-table features for
 	SQLite, Postgres and MySQL products.
--- a/lisp/fringe.el	Sun Sep 19 11:16:28 2010 +0200
+++ b/lisp/fringe.el	Sun Sep 19 11:32:52 2010 +0200
@@ -136,6 +136,14 @@
       ;; 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 @@
 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 @@
 `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.