]> code.delx.au - gnu-emacs/blobdiff - lisp/fringe.el
(enum event_kind) [MAC_OS]: Update comment for MAC_APPLE_EVENT.
[gnu-emacs] / lisp / fringe.el
index 3c554f1ca55a72beb79eac28d24274095c6cd461..317fff0973c1b33197330a5c06d3cfbf24b04b18 100644 (file)
@@ -1,6 +1,6 @@
-;;; fringe.el --- change fringes appearance in various ways
+;;; fringe.el --- fringe setup and control
 
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <simon@josefsson.org>
 ;; Maintainer: FSF
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
-;; This file contains helpful functions for customizing the appearance
-;; of the fringe.
+;; This file contains code to initialize the built-in fringe bitmaps
+;; as well as helpful functions for customizing the appearance of the
+;; fringe.
 
 ;; The code is influenced by scroll-bar.el and avoid.el.  The author
 ;; gratefully acknowledge comments and suggestions made by Miles
   :version "22.1"
   :group 'frames)
 
-;; Standard fringe bitmaps
+;; Define the built-in fringe bitmaps and setup default mappings
 
-(defmacro fringe-bitmap-p (symbol)
-  "Return non-nil if SYMBOL is a fringe bitmap."
-  `(get ,symbol 'fringe))
-
-(defvar fringe-bitmaps)
-
-(unless (or (not (boundp 'fringe-bitmaps))
-           (get 'left-truncation 'fringe))
-  (let ((bitmaps '(left-truncation right-truncation
-                  up-arrow down-arrow
-                  continued-line continuation-line
-                  overlay-arrow
+(when (boundp 'fringe-bitmaps)
+  (let ((bitmaps '(question-mark
+                  left-arrow right-arrow up-arrow down-arrow
+                  left-curly-arrow right-curly-arrow
+                  left-triangle right-triangle
                   top-left-angle top-right-angle
                   bottom-left-angle bottom-right-angle
                   left-bracket right-bracket
-                  filled-box-cursor hollow-box-cursor hollow-square
-                  bar-cursor hbar-cursor
+                  filled-rectangle hollow-rectangle
+                  filled-square hollow-square
+                  vertical-bar horizontal-bar
                   empty-line))
-       (bn 2))
+       (bn 1))
     (while bitmaps
       (push (car bitmaps) fringe-bitmaps)
       (put (car bitmaps) 'fringe bn)
       (setq bitmaps (cdr bitmaps)
-           bn (1+ bn)))))
+           bn (1+ bn))))
+
+  (setq-default fringe-indicator-alist
+               '((truncation . (left-arrow right-arrow))
+                 (continuation . (left-curly-arrow right-curly-arrow))
+                 (overlay-arrow . right-triangle)
+                 (up . up-arrow)
+                 (down . down-arrow)
+                 (top . (top-left-angle top-right-angle))
+                 (bottom . (bottom-left-angle bottom-right-angle
+                            top-right-angle top-left-angle))
+                 (top-bottom . (left-bracket right-bracket
+                                top-right-angle top-left-angle))
+                 (empty-line . empty-line)
+                 (unknown . question-mark)))
+
+  (setq-default fringe-cursor-alist
+               '((box . filled-rectangle)
+                 (hollow . hollow-rectangle)
+                 (bar . vertical-bar)
+                 (hbar . horizontal-bar)
+                 (hollow-small . hollow-square))))
+
+
+(defmacro fringe-bitmap-p (symbol)
+  "Return non-nil if SYMBOL is a fringe bitmap."
+  `(get ,symbol 'fringe))
 
 
 ;; Control presence of fringes
@@ -137,7 +158,6 @@ See `fringe-mode' for possible values and their effect."
       ;; Otherwise impose the user-specified value of fringe-mode.
       (custom-initialize-reset symbol value))))
 
-;;;###autoload
 (defcustom fringe-mode nil
   "*Specify appearance of fringes on all frames.
 This variable can be nil (the default) meaning the fringes should have
@@ -150,7 +170,7 @@ 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 `toggle-fringe'"
+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))
@@ -174,7 +194,10 @@ If ALL-FRAMES, the negation of the fringe values in
 Otherwise the negation of the fringe value in the currently selected
 frame parameter is used."
   (let ((mode (intern (completing-read
-                      "Select fringe mode for all frames (type ? for list): "
+                      (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))))
@@ -192,7 +215,6 @@ frame parameter is used."
               nil
             0)))))
 
-;;;###autoload
 (defun fringe-mode (&optional mode)
   "Set the default appearance of fringes on all frames.
 
@@ -218,7 +240,6 @@ frame only, see the command `set-fringe-style'."
   (interactive (list (fringe-query-style 'all-frames)))
   (set-fringe-mode mode))
 
-;;;###autoload
 (defun set-fringe-style (&optional mode)
   "Set the default appearance of fringes on the selected frame.
 
@@ -257,43 +278,6 @@ SIDE must be the symbol `left' or `right'."
               0)
            (float (frame-char-width))))
 
-;; Fake defvar.  Real definition using defcustom is below.  The fake
-;; defvar is necessary because `fringe-indicators' and
-;; `set-fringe-indicators-1' mutually use each other.
-(defvar fringe-indicators)
-
-(defun set-fringe-indicators-1 (ignore value)
-  "Set fringe indicators according to VALUE.
-This is usually invoked when setting `fringe-indicators' via customize."
-  (setq fringe-indicators value)
-  (setq default-indicate-empty-lines nil)
-  (setq default-indicate-buffer-boundaries
-       (cond
-        ((memq value '(left right t))
-         value)
-        ((eq value 'box)
-         '((top . left) (bottom . right)))
-        ((eq value 'mixed)
-         '((top . left) (t . right)))
-        ((eq value 'empty)
-         (setq default-indicate-empty-lines t)
-         nil)
-        (t nil))))
-
-;;;###autoload
-(defcustom fringe-indicators nil
-  "Visually indicate buffer boundaries and scrolling.
-Setting this variable, changes `default-indicate-buffer-boundaries'."
-  :type '(choice (const :tag "No indicators" nil)
-                (const :tag "On left" left)
-                (const :tag "On right" right)
-                (const :tag "Opposite, no arrows" box)
-                (const :tag "Opposite, arrows right" mixed)
-                (const :tag "Empty lines" empty))
-  :group 'fringe
-  :require 'fringe
-  :set 'set-fringe-indicators-1)
-
 (provide 'fringe)
 
 ;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d