emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r109435: * fringe.el: Docstring and m


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109435: * fringe.el: Docstring and minor code improvements.
Date: Sun, 05 Aug 2012 11:52:02 +0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109435
fixes bug: http://debbugs.gnu.org/6480
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sun 2012-08-05 11:52:02 +0800
message:
  * fringe.el: Docstring and minor code improvements.
  (fringe-styles): Add docstring.
  (fringe--check-style): New function.
  (set-fringe-mode, set-fringe-style): Use it.
  (fringe-mode, set-fringe-style): Doc fixes.
modified:
  lisp/ChangeLog
  lisp/fringe.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-08-05 03:03:31 +0000
+++ b/lisp/ChangeLog    2012-08-05 03:52:02 +0000
@@ -1,5 +1,10 @@
 2012-08-05  Chong Yidong  <address@hidden>
 
+       * fringe.el (fringe-styles): Add docstring.
+       (fringe--check-mode): New function.
+       (set-fringe-mode, set-fringe-style): Use it.
+       (fringe-mode, set-fringe-style): Doc fixes (Bug#6480).
+
        * files.el (set-auto-mode): Fix invalid setq call.
 
 2012-08-04  Stefan Monnier  <address@hidden>

=== modified file 'lisp/fringe.el'
--- a/lisp/fringe.el    2012-07-14 11:44:39 +0000
+++ b/lisp/fringe.el    2012-08-05 03:52:02 +0000
@@ -105,8 +105,8 @@
 (defun set-fringe-mode (value)
   "Set `fringe-mode' to VALUE and put the new value into effect.
 See `fringe-mode' for possible values and their effect."
+  (fringe--check-style value)
   (setq fringe-mode value)
-
   (when fringe-mode-explicit
     (modify-all-frames-parameters
      (list (cons 'left-fringe (if (consp fringe-mode)
@@ -116,6 +116,14 @@
                                   (cdr fringe-mode)
                                 fringe-mode))))))
 
+(defun fringe--check-style (style)
+  (or (null style)
+      (integerp style)
+      (and (consp style)
+          (or (null (car style)) (integerp (car style)))
+          (or (null (cdr style)) (integerp (cdr style))))
+      (error "Invalid fringe style `%s'" style)))
+
 ;; For initialization of fringe-mode, take account of changes
 ;; made explicitly to default-frame-alist.
 (defun fringe-mode-initialize (symbol value)
@@ -141,24 +149,40 @@
     ("right-only" . (0 . nil))
     ("left-only" . (nil . 0))
     ("half-width" . (4 . 4))
-    ("minimal" . (1 . 1))))
+    ("minimal" . (1 . 1)))
+  "Alist mapping fringe mode names to fringe widths.
+Each list element has the form (NAME . WIDTH), where NAME is a
+mnemonic fringe mode name (a symbol) and WIDTH is one of the
+following:
+- nil, which means the default width (8 pixels).
+- a cons cell (LEFT . RIGHT), where LEFT and RIGHT are
+  respectively the left and right fringe widths in pixels, or
+  nil (meaning to disable that fringe).
+- a single integer, which specifies the pixel widths of both
+  fringes.")
 
 (defcustom fringe-mode nil
-  "Specify appearance of fringes on all frames.
-This variable can be nil (the default) meaning the fringes should have
-the default width (8 pixels), it can be an integer value specifying
-the width of both left and right fringe (where 0 means no fringe), or
-a cons cell where car indicates width of left fringe and cdr indicates
-width of right fringe (where again 0 can be used to indicate no
-fringe).
-Note that the actual width may be rounded up to ensure that the sum of
-the width of the left and right fringes is a multiple of the frame's
-character width.  However, a fringe width of 0 is never rounded.
-To set this variable in a Lisp program, use `set-fringe-mode' to make
-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'."
+  "Default appearance of fringes on all frames.
+The Lisp value should be one of the following:
+- nil, which means the default width (8 pixels).
+- a cons cell (LEFT . RIGHT), where LEFT and RIGHT are
+  respectively the left and right fringe widths in pixels, or
+  nil (meaning to disable that fringe).
+- a single integer, which specifies the pixel widths of both
+  fringes.
+Note that the actual width may be rounded up to ensure that the
+sum of the width of the left and right fringes is a multiple of
+the frame's character width.  However, a fringe width of 0 is
+never rounded.
+
+When setting this variable from Customize, the user can choose
+from the mnemonic fringe mode names defined in `fringe-styles'.
+
+When setting this variable in a Lisp program, call
+`set-fringe-mode' afterward to make it take real effect.
+
+To modify the appearance of the fringe in a specific frame, use
+the interactive function `set-fringe-style'."
   :type `(choice
           ,@ (mapcar (lambda (style)
                       (let ((name
@@ -195,30 +219,31 @@
                  ": ")
                 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))))
+    (cond
+     (style
+      (cdr style))
+     ((not (eq 0 (cdr (assq 'left-fringe
+                           (if all-frames
+                               default-frame-alist
+                             (frame-parameters))))))
+      0))))
 
 (defun fringe-mode (&optional mode)
   "Set the default appearance of fringes on all frames.
-
-When called interactively, query the user for MODE.  Valid values
-for MODE include `no-fringes', `default', `left-only', `right-only',
-`minimal' and `half-width'.
-
-When used in a Lisp program, MODE can be a cons cell where the
-integer in car specifies the left fringe width and the integer in
-cdr specifies the right fringe width.  MODE can also be a single
-integer that specifies both the left and the right fringe width.
-If a fringe width specification is nil, that means to use the
-default width (8 pixels).  This command may round up the left and
-right width specifications to ensure that their sum is a multiple
-of the character width of a frame.  It never rounds up a fringe
-width of 0.
+When called interactively, query the user for MODE; valid values
+are `no-fringes', `default', `left-only', `right-only', `minimal'
+and `half-width'.  See `fringe-styles'.
+
+When used in a Lisp program, MODE should be one of these:
+- nil, which means the default width (8 pixels).
+- a cons cell (LEFT . RIGHT), where LEFT and RIGHT are
+  respectively the left and right fringe widths in pixels, or
+  nil (meaning to disable that fringe).
+- a single integer, which specifies the pixel widths of both
+  fringes.
+This command may round up the left and right width specifications
+to ensure that their sum is a multiple of the character width of
+a frame.  It never rounds up a fringe width of 0.
 
 Fringe widths set by `set-window-fringes' override the default
 fringe widths set by this command.  This command applies to all
@@ -230,26 +255,27 @@
 
 (defun set-fringe-style (&optional mode)
   "Set the default appearance of fringes on the selected frame.
-
-When called interactively, query the user for MODE.  Valid values
-for MODE include `none', `default', `left-only', `right-only',
-`minimal' and `half'.
-
-When used in a Lisp program, MODE can be a cons cell where the
-integer in car specifies the left fringe width and the integer in
-cdr specifies the right fringe width.  MODE can also be a single
-integer that specifies both the left and the right fringe width.
-If a fringe width specification is nil, that means to use the
-default width (8 pixels).  This command may round up the left and
-right width specifications to ensure that their sum is a multiple
-of the character width of a frame.  It never rounds up a fringe
-width of 0.
+When called interactively, query the user for MODE; valid values
+are `no-fringes', `default', `left-only', `right-only', `minimal'
+and `half-width'.  See `fringe-styles'.
+
+When used in a Lisp program, MODE should be one of these:
+- nil, which means the default width (8 pixels).
+- a cons cell (LEFT . RIGHT), where LEFT and RIGHT are
+  respectively the left and right fringe widths in pixels, or
+  nil (meaning to disable that fringe).
+- a single integer, which specifies the pixel widths of both
+  fringes.
+This command may round up the left and right width specifications
+to ensure that their sum is a multiple of the character width of
+a frame.  It never rounds up a fringe width of 0.
 
 Fringe widths set by `set-window-fringes' override the default
 fringe widths set by this command.  If you want to set the
 default appearance of fringes on all frames, see the command
 `fringe-mode'."
   (interactive (list (fringe-query-style)))
+  (fringe--check-style mode)
   (modify-frame-parameters
    (selected-frame)
    (list (cons 'left-fringe (if (consp mode) (car mode) mode))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]