summaryrefslogtreecommitdiff
path: root/lisp/fringe.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2010-09-19 11:32:52 +0200
committerStefan Monnier <monnier@iro.umontreal.ca>2010-09-19 11:32:52 +0200
commit37c0347eb5a2e197c747a6a11e452041acbe28b3 (patch)
tree3d146ad43f835e8241b35317f81dba2357be2e92 /lisp/fringe.el
parent149caf54c79b771d16f4ce56c5c98a4750ec327f (diff)
downloademacs-37c0347eb5a2e197c747a6a11e452041acbe28b3.tar.gz
* lisp/fringe.el (fringe-styles): New var.
(fringe-mode, fringe-query-style): Use it.
Diffstat (limited to 'lisp/fringe.el')
-rw-r--r--lisp/fringe.el66
1 files changed, 35 insertions, 31 deletions
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.