From 37c0347eb5a2e197c747a6a11e452041acbe28b3 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 19 Sep 2010 11:32:52 +0200 Subject: [PATCH] * lisp/fringe.el (fringe-styles): New var. (fringe-mode, fringe-query-style): Use it. --- lisp/ChangeLog | 7 +++++- lisp/fringe.el | 66 ++++++++++++++++++++++++++------------------------ 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a3bc6f5baba..f53ca2b8f3c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,12 @@ +2010-09-19 Stefan Monnier + + * fringe.el (fringe-styles): New var. + (fringe-mode, fringe-query-style): Use it. + 2010-09-18 Michael R. Mauger * 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. diff --git a/lisp/fringe.el b/lisp/fringe.el index b23cea1c0e7..6f5f496e907 100644 --- a/lisp/fringe.el +++ b/lisp/fringe.el @@ -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. -- 2.39.2