annotate lisp/fringe.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 42d133e002e5
children cd8d9630f156
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
103479
a441edf4d939 Add coding: utf-8 cookie.
Kenichi Handa <handa@m17n.org>
parents: 100908
diff changeset
1 ;;; fringe.el --- fringe setup and control -*- coding: utf-8 -*-
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
2
100908
a9dc0e7c3f2b Add 2009 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
3 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 103479
diff changeset
4 ;; 2009, 2010 Free Software Foundation, Inc.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
5
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
6 ;; Author: Simon Josefsson <simon@josefsson.org>
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
7 ;; Maintainer: FSF
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
8 ;; Keywords: frames
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
9 ;; Package: emacs
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
10
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; (at your option) any later version.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
17
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
22
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
25
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
26 ;;; Commentary:
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
27
69070
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
28 ;; This file contains code to initialize the built-in fringe bitmaps
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
29 ;; as well as helpful functions for customizing the appearance of the
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
30 ;; fringe.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
31
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
32 ;; The code is influenced by scroll-bar.el and avoid.el. The author
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
33 ;; gratefully acknowledge comments and suggestions made by Miles
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
34 ;; Bader, Eli Zaretski, Richard Stallman, Pavel Janík and others which
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
35 ;; improved this package.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
36
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
37 ;;; Code:
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
38
58597
fa269b651143 (fringe): New defgroup.
Kim F. Storm <storm@cua.dk>
parents: 57538
diff changeset
39 (defgroup fringe nil
fa269b651143 (fringe): New defgroup.
Kim F. Storm <storm@cua.dk>
parents: 57538
diff changeset
40 "Window fringes."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 58599
diff changeset
41 :version "22.1"
58597
fa269b651143 (fringe): New defgroup.
Kim F. Storm <storm@cua.dk>
parents: 57538
diff changeset
42 :group 'frames)
fa269b651143 (fringe): New defgroup.
Kim F. Storm <storm@cua.dk>
parents: 57538
diff changeset
43
69070
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
44 ;; Define the built-in fringe bitmaps and setup default mappings
57261
075de3b1e798 (fringe-bitmap-p): New macro.
Kim F. Storm <storm@cua.dk>
parents: 54399
diff changeset
45
69072
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
46 (when (boundp 'fringe-bitmaps)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
47 (let ((bitmaps '(question-mark
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
48 left-arrow right-arrow up-arrow down-arrow
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
49 left-curly-arrow right-curly-arrow
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
50 left-triangle right-triangle
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
51 top-left-angle top-right-angle
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
52 bottom-left-angle bottom-right-angle
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
53 left-bracket right-bracket
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
54 filled-rectangle hollow-rectangle
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
55 filled-square hollow-square
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
56 vertical-bar horizontal-bar
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
57 empty-line))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
58 (bn 1))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
59 (while bitmaps
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
60 (push (car bitmaps) fringe-bitmaps)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
61 (put (car bitmaps) 'fringe bn)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
62 (setq bitmaps (cdr bitmaps)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
63 bn (1+ bn))))
53890
5588b6cc6fba (no-fringe-bitmap, undef-fringe-bitmap)
Kim F. Storm <storm@cua.dk>
parents: 53257
diff changeset
64
69072
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
65 (setq-default fringe-indicator-alist
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
66 '((truncation . (left-arrow right-arrow))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
67 (continuation . (left-curly-arrow right-curly-arrow))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
68 (overlay-arrow . right-triangle)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
69 (up . up-arrow)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
70 (down . down-arrow)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
71 (top . (top-left-angle top-right-angle))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
72 (bottom . (bottom-left-angle bottom-right-angle
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
73 top-right-angle top-left-angle))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
74 (top-bottom . (left-bracket right-bracket
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
75 top-right-angle top-left-angle))
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
76 (empty-line . empty-line)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
77 (unknown . question-mark)))
69050
c0e9f855475e (fringe-bitmaps): Update to new bitmap names.
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
78
69072
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
79 (setq-default fringe-cursor-alist
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
80 '((box . filled-rectangle)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
81 (hollow . hollow-rectangle)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
82 (bar . vertical-bar)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
83 (hbar . horizontal-bar)
64b2a2990f41 Fix last change.
Kim F. Storm <storm@cua.dk>
parents: 69070
diff changeset
84 (hollow-small . hollow-square))))
53890
5588b6cc6fba (no-fringe-bitmap, undef-fringe-bitmap)
Kim F. Storm <storm@cua.dk>
parents: 53257
diff changeset
85
69070
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
86
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
87 (defmacro fringe-bitmap-p (symbol)
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
88 "Return non-nil if SYMBOL is a fringe bitmap."
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
89 `(get ,symbol 'fringe))
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
90
efaafdfc3b2c *** empty log message ***
Kim F. Storm <storm@cua.dk>
parents: 69066
diff changeset
91
53890
5588b6cc6fba (no-fringe-bitmap, undef-fringe-bitmap)
Kim F. Storm <storm@cua.dk>
parents: 53257
diff changeset
92 ;; Control presence of fringes
5588b6cc6fba (no-fringe-bitmap, undef-fringe-bitmap)
Kim F. Storm <storm@cua.dk>
parents: 53257
diff changeset
93
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
94 (defvar fringe-mode)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
95
87702
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
96 (defvar fringe-mode-explicit nil
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
97 "Non-nil means `set-fringe-mode' should really do something.
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
98 This is nil while loading `fringe.el', and t afterward.")
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
99
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
100 (defun set-fringe-mode-1 (ignore value)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
101 "Call `set-fringe-mode' with VALUE.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
102 See `fringe-mode' for valid values and their effect.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
103 This is usually invoked when setting `fringe-mode' via customize."
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
104 (set-fringe-mode value))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
105
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
106 (defun set-fringe-mode (value)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
107 "Set `fringe-mode' to VALUE and put the new value into effect.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
108 See `fringe-mode' for possible values and their effect."
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
109 (setq fringe-mode value)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
110
87702
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
111 (when fringe-mode-explicit
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
112 (modify-all-frames-parameters
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
113 (list (cons 'left-fringe (if (consp fringe-mode)
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
114 (car fringe-mode)
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
115 fringe-mode))
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
116 (cons 'right-fringe (if (consp fringe-mode)
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
117 (cdr fringe-mode)
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
118 fringe-mode))))))
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
119
57538
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
120 ;; For initialization of fringe-mode, take account of changes
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
121 ;; made explicitly to default-frame-alist.
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
122 (defun fringe-mode-initialize (symbol value)
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
123 (let* ((left-pair (assq 'left-fringe default-frame-alist))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
124 (right-pair (assq 'right-fringe default-frame-alist))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
125 (left (cdr left-pair))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
126 (right (cdr right-pair)))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
127 (if (or left-pair right-pair)
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
128 ;; If there's something in default-frame-alist for fringes,
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
129 ;; don't change it, but reflect that into the value of fringe-mode.
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
130 (progn
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
131 (setq fringe-mode (cons left right))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
132 (if (equal fringe-mode '(nil . nil))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
133 (setq fringe-mode nil))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
134 (if (equal fringe-mode '(0 . 0))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
135 (setq fringe-mode 0)))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
136 ;; Otherwise impose the user-specified value of fringe-mode.
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
137 (custom-initialize-reset symbol value))))
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
138
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
139 (defcustom fringe-mode nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
140 "Specify appearance of fringes on all frames.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
141 This variable can be nil (the default) meaning the fringes should have
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
142 the default width (8 pixels), it can be an integer value specifying
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
143 the width of both left and right fringe (where 0 means no fringe), or
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
144 a cons cell where car indicates width of left fringe and cdr indicates
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
145 width of right fringe (where again 0 can be used to indicate no
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
146 fringe).
110409
42d133e002e5 Mention rounding of fringe width in the doc string of fringe-mode.
Eli Zaretskii <eliz@gnu.org>
parents: 110399
diff changeset
147 Note that the actual width may be rounded up to ensure that the sum of
42d133e002e5 Mention rounding of fringe width in the doc string of fringe-mode.
Eli Zaretskii <eliz@gnu.org>
parents: 110399
diff changeset
148 the width of the left and right fringes is a multiple of the frame's
42d133e002e5 Mention rounding of fringe width in the doc string of fringe-mode.
Eli Zaretskii <eliz@gnu.org>
parents: 110399
diff changeset
149 character width. However, a fringe width of 0 is never rounded.
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
150 To set this variable in a Lisp program, use `set-fringe-mode' to make
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
151 it take real effect.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
152 Setting the variable with a customization buffer also takes effect.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
153 If you only want to modify the appearance of the fringe in one frame,
64192
258eefd93f5c (fringe-mode): Add period in docstring.
Juri Linkov <juri@jurta.org>
parents: 64180
diff changeset
154 you can use the interactive function `set-fringe-style'."
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
155 :type '(choice (const :tag "Default width" nil)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
156 (const :tag "No fringes" 0)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
157 (const :tag "Only right" (0 . nil))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
158 (const :tag "Only left" (nil . 0))
110399
e4c19190baef Fix bug #6933 regarding `half' width fringes.
Eli Zaretskii <eliz@gnu.org>
parents: 110015
diff changeset
159 (const :tag "Half width" (4 . 4))
45518
182c7dd36ef1 Fix :type of `fringe-mode' for last modification.
Simon Josefsson <jas@extundo.com>
parents: 45516
diff changeset
160 (const :tag "Minimal" (1 . 1))
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
161 (integer :tag "Specific width")
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
162 (cons :tag "Different left/right sizes"
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
163 (integer :tag "Left width")
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
164 (integer :tag "Right width")))
58597
fa269b651143 (fringe): New defgroup.
Kim F. Storm <storm@cua.dk>
parents: 57538
diff changeset
165 :group 'fringe
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
166 :require 'fringe
57538
6f85a547ab10 (fringe-mode-initialize): New function.
Richard M. Stallman <rms@gnu.org>
parents: 57507
diff changeset
167 :initialize 'fringe-mode-initialize
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
168 :set 'set-fringe-mode-1)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
169
87702
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
170 ;; We just set fringe-mode, but that was the default.
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
171 ;; If it is set again, that is for real.
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
172 (setq fringe-mode-explicit t)
7ebe288dfbd0 (fringe-mode-explicit): New variable.
Martin Rudalics <rudalics@gmx.at>
parents: 87649
diff changeset
173
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
174 (defun fringe-query-style (&optional all-frames)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
175 "Query user for fringe style.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
176 Returns values suitable for left-fringe and right-fringe frame parameters.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
177 If ALL-FRAMES, the negation of the fringe values in
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
178 `default-frame-alist' is used when user enters the empty string.
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
179 Otherwise the negation of the fringe value in the currently selected
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
180 frame parameter is used."
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
181 (let ((mode (intern (completing-read
64192
258eefd93f5c (fringe-mode): Add period in docstring.
Juri Linkov <juri@jurta.org>
parents: 64180
diff changeset
182 (concat
258eefd93f5c (fringe-mode): Add period in docstring.
Juri Linkov <juri@jurta.org>
parents: 64180
diff changeset
183 "Select fringe mode for "
258eefd93f5c (fringe-mode): Add period in docstring.
Juri Linkov <juri@jurta.org>
parents: 64180
diff changeset
184 (if all-frames "all frames" "selected frame")
258eefd93f5c (fringe-mode): Add period in docstring.
Juri Linkov <juri@jurta.org>
parents: 64180
diff changeset
185 " (type ? for list): ")
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
186 '(("none") ("default") ("left-only")
45516
6b848a738ec6 (fringe-query-style): New fringe style "minimal".
Simon Josefsson <jas@extundo.com>
parents: 45493
diff changeset
187 ("right-only") ("half") ("minimal"))
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
188 nil t))))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
189 (cond ((eq mode 'none) 0)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
190 ((eq mode 'default) nil)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
191 ((eq mode 'left-only) '(nil . 0))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
192 ((eq mode 'right-only) '(0 . nil))
110399
e4c19190baef Fix bug #6933 regarding `half' width fringes.
Eli Zaretskii <eliz@gnu.org>
parents: 110015
diff changeset
193 ((eq mode 'half) '(4 . 4))
45516
6b848a738ec6 (fringe-query-style): New fringe style "minimal".
Simon Josefsson <jas@extundo.com>
parents: 45493
diff changeset
194 ((eq mode 'minimal) '(1 . 1))
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
195 ((eq mode (intern ""))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
196 (if (eq 0 (cdr (assq 'left-fringe
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
197 (if all-frames
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
198 default-frame-alist
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
199 (frame-parameters (selected-frame))))))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
200 nil
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
201 0)))))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
202
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
203 (defun fringe-mode (&optional mode)
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
204 "Set the default appearance of fringes on all frames.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
205
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
206 When called interactively, query the user for MODE. Valid values
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
207 for MODE include `none', `default', `left-only', `right-only',
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
208 `minimal' and `half'.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
209
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
210 When used in a Lisp program, MODE can be a cons cell where the
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
211 integer in car specifies the left fringe width and the integer in
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
212 cdr specifies the right fringe width. MODE can also be a single
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
213 integer that specifies both the left and the right fringe width.
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
214 If a fringe width specification is nil, that means to use the
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
215 default width (8 pixels). This command may round up the left and
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
216 right width specifications to ensure that their sum is a multiple
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
217 of the character width of a frame. It never rounds up a fringe
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
218 width of 0.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
219
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
220 Fringe widths set by `set-window-fringes' override the default
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
221 fringe widths set by this command. This command applies to all
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
222 frames that exist and frames to be created in the future. If you
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
223 want to set the default appearance of fringes on the selected
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
224 frame only, see the command `set-fringe-style'."
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
225 (interactive (list (fringe-query-style 'all-frames)))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
226 (set-fringe-mode mode))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
227
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
228 (defun set-fringe-style (&optional mode)
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
229 "Set the default appearance of fringes on the selected frame.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
230
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
231 When called interactively, query the user for MODE. Valid values
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
232 for MODE include `none', `default', `left-only', `right-only',
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
233 `minimal' and `half'.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
234
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
235 When used in a Lisp program, MODE can be a cons cell where the
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
236 integer in car specifies the left fringe width and the integer in
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
237 cdr specifies the right fringe width. MODE can also be a single
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
238 integer that specifies both the left and the right fringe width.
52854
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
239 If a fringe width specification is nil, that means to use the
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
240 default width (8 pixels). This command may round up the left and
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
241 right width specifications to ensure that their sum is a multiple
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
242 of the character width of a frame. It never rounds up a fringe
f6ac1fc587f8 (fringe-mode): Use active voice in docstring.
Lute Kamstra <lute@gnu.org>
parents: 52832
diff changeset
243 width of 0.
52832
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
244
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
245 Fringe widths set by `set-window-fringes' override the default
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
246 fringe widths set by this command. If you want to set the
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
247 default appearance of fringes on all frames, see the command
43bad0db6791 (fringe-mode): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
248 `fringe-mode'."
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
249 (interactive (list (fringe-query-style)))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
250 (modify-frame-parameters
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
251 (selected-frame)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
252 (list (cons 'left-fringe (if (consp mode) (car mode) mode))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
253 (cons 'right-fringe (if (consp mode) (cdr mode) mode)))))
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
254
54399
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
255 (defsubst fringe-columns (side &optional real)
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
256 "Return the width, measured in columns, of the fringe area on SIDE.
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
257 If optional argument REAL is non-nil, return a real floating point
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
258 number instead of a rounded integer value.
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
259 SIDE must be the symbol `left' or `right'."
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
260 (funcall (if real '/ 'ceiling)
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
261 (or (funcall (if (eq side 'left) 'car 'cadr)
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
262 (window-fringes))
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
263 0)
ad02f6299e9a 2004-03-15 Masatake YAMATO <jet@gyve.org>
Masatake YAMATO <jet@gyve.org>
parents: 53890
diff changeset
264 (float (frame-char-width))))
57261
075de3b1e798 (fringe-bitmap-p): New macro.
Kim F. Storm <storm@cua.dk>
parents: 54399
diff changeset
265
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
266 (provide 'fringe)
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
267
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87702
diff changeset
268 ;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d
45493
6d49cede6000 Initial version.
Simon Josefsson <jas@extundo.com>
parents:
diff changeset
269 ;;; fringe.el ends here