Mercurial > emacs
annotate lisp/nxml/nxml-glyph.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 | 1d1d5d9bd884 |
children | 376148b31b5e |
rev | line source |
---|---|
86361 | 1 ;;; nxml-glyph.el --- glyph-handling for nxml-mode |
2 | |
106815 | 3 ;; Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
86361 | 4 |
5 ;; Author: James Clark | |
6 ;; Keywords: XML | |
7 | |
86536 | 8 ;; This file is part of GNU Emacs. |
9 | |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
10 ;; GNU Emacs is free software: you can redistribute it and/or modify |
86536 | 11 ;; it under the terms of the GNU General Public License as published by |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
12 ;; the Free Software Foundation, either version 3 of the License, or |
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
13 ;; (at your option) any later version. |
86361 | 14 |
86536 | 15 ;; GNU Emacs is distributed in the hope that it will be useful, |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
86361 | 19 |
86536 | 20 ;; You should have received a copy of the GNU General Public License |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
86361 | 22 |
23 ;;; Commentary: | |
24 | |
25 ;; The entry point to this file is `nxml-glyph-display-string'. | |
26 ;; The current implementation is heuristic due to a lack of | |
27 ;; Emacs primitives necessary to implement it properly. The user | |
28 ;; can tweak the heuristics using `nxml-glyph-set-hook'. | |
29 | |
30 ;;; Code: | |
31 | |
32 (defconst nxml-ascii-glyph-set | |
33 [(#x0020 . #x007E)]) | |
34 | |
35 (defconst nxml-latin1-glyph-set | |
36 [(#x0020 . #x007E) | |
37 (#x00A0 . #x00FF)]) | |
38 | |
39 ;; These were generated by using nxml-insert-target-repertoire-glyph-set | |
40 ;; on the TARGET[123] files in | |
41 ;; http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz | |
42 | |
43 (defconst nxml-misc-fixed-1-glyph-set | |
44 [(#x0020 . #x007E) | |
45 (#x00A0 . #x00FF) | |
46 (#x0100 . #x017F) | |
47 #x018F #x0192 | |
48 (#x0218 . #x021B) | |
49 #x0259 | |
50 (#x02C6 . #x02C7) | |
51 (#x02D8 . #x02DD) | |
52 (#x0374 . #x0375) | |
53 #x037A #x037E | |
54 (#x0384 . #x038A) | |
55 #x038C | |
56 (#x038E . #x03A1) | |
57 (#x03A3 . #x03CE) | |
58 (#x0401 . #x040C) | |
59 (#x040E . #x044F) | |
60 (#x0451 . #x045C) | |
61 (#x045E . #x045F) | |
62 (#x0490 . #x0491) | |
63 (#x05D0 . #x05EA) | |
64 (#x1E02 . #x1E03) | |
65 (#x1E0A . #x1E0B) | |
66 (#x1E1E . #x1E1F) | |
67 (#x1E40 . #x1E41) | |
68 (#x1E56 . #x1E57) | |
69 (#x1E60 . #x1E61) | |
70 (#x1E6A . #x1E6B) | |
71 (#x1E80 . #x1E85) | |
72 (#x1EF2 . #x1EF3) | |
73 (#x2010 . #x2022) | |
74 #x2026 #x2030 | |
75 (#x2039 . #x203A) | |
76 #x20AC #x2116 #x2122 #x2126 | |
77 (#x215B . #x215E) | |
78 (#x2190 . #x2193) | |
79 #x2260 | |
80 (#x2264 . #x2265) | |
81 (#x23BA . #x23BD) | |
82 (#x2409 . #x240D) | |
83 #x2424 #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 #x252C #x2534 #x253C #x2592 #x25C6 #x266A #xFFFD] | |
84 "Glyph set for TARGET1 glyph repertoire of misc-fixed-* font. | |
85 This repertoire is supported for the bold and oblique fonts.") | |
86 | |
87 (defconst nxml-misc-fixed-2-glyph-set | |
88 [(#x0020 . #x007E) | |
89 (#x00A0 . #x00FF) | |
90 (#x0100 . #x017F) | |
91 #x018F #x0192 | |
92 (#x01FA . #x01FF) | |
93 (#x0218 . #x021B) | |
94 #x0259 | |
95 (#x02C6 . #x02C7) | |
96 #x02C9 | |
97 (#x02D8 . #x02DD) | |
98 (#x0300 . #x0311) | |
99 (#x0374 . #x0375) | |
100 #x037A #x037E | |
101 (#x0384 . #x038A) | |
102 #x038C | |
103 (#x038E . #x03A1) | |
104 (#x03A3 . #x03CE) | |
105 #x03D1 | |
106 (#x03D5 . #x03D6) | |
107 #x03F1 | |
108 (#x0401 . #x040C) | |
109 (#x040E . #x044F) | |
110 (#x0451 . #x045C) | |
111 (#x045E . #x045F) | |
112 (#x0490 . #x0491) | |
113 (#x05D0 . #x05EA) | |
114 (#x1E02 . #x1E03) | |
115 (#x1E0A . #x1E0B) | |
116 (#x1E1E . #x1E1F) | |
117 (#x1E40 . #x1E41) | |
118 (#x1E56 . #x1E57) | |
119 (#x1E60 . #x1E61) | |
120 (#x1E6A . #x1E6B) | |
121 (#x1E80 . #x1E85) | |
122 (#x1EF2 . #x1EF3) | |
123 (#x2010 . #x2022) | |
124 #x2026 #x2030 | |
125 (#x2032 . #x2034) | |
126 (#x2039 . #x203A) | |
127 #x203C #x203E #x2044 | |
128 (#x2070 . #x2071) | |
129 (#x2074 . #x208E) | |
130 (#x20A3 . #x20A4) | |
131 #x20A7 #x20AC | |
132 (#x20D0 . #x20D7) | |
133 #x2102 #x2105 #x2113 | |
134 (#x2115 . #x2116) | |
135 #x211A #x211D #x2122 #x2124 #x2126 #x212E | |
136 (#x215B . #x215E) | |
137 (#x2190 . #x2195) | |
138 (#x21A4 . #x21A8) | |
139 (#x21D0 . #x21D5) | |
140 (#x2200 . #x2209) | |
141 (#x220B . #x220C) | |
142 #x220F | |
143 (#x2211 . #x2213) | |
144 #x2215 | |
145 (#x2218 . #x221A) | |
146 (#x221D . #x221F) | |
147 #x2221 | |
148 (#x2224 . #x222B) | |
149 #x222E #x223C #x2243 #x2245 | |
150 (#x2248 . #x2249) | |
151 #x2259 | |
152 (#x225F . #x2262) | |
153 (#x2264 . #x2265) | |
154 (#x226A . #x226B) | |
155 (#x2282 . #x228B) | |
156 #x2295 #x2297 | |
157 (#x22A4 . #x22A7) | |
158 (#x22C2 . #x22C3) | |
159 #x22C5 #x2300 #x2302 | |
160 (#x2308 . #x230B) | |
161 #x2310 | |
162 (#x2320 . #x2321) | |
163 (#x2329 . #x232A) | |
164 (#x23BA . #x23BD) | |
165 (#x2409 . #x240D) | |
166 #x2424 #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 #x252C #x2534 #x253C | |
167 (#x254C . #x2573) | |
168 (#x2580 . #x25A1) | |
169 (#x25AA . #x25AC) | |
170 (#x25B2 . #x25B3) | |
171 #x25BA #x25BC #x25C4 #x25C6 | |
172 (#x25CA . #x25CB) | |
173 #x25CF | |
174 (#x25D8 . #x25D9) | |
175 #x25E6 | |
176 (#x263A . #x263C) | |
177 #x2640 #x2642 #x2660 #x2663 | |
178 (#x2665 . #x2666) | |
179 (#x266A . #x266B) | |
180 (#xFB01 . #xFB02) | |
181 #xFFFD] | |
182 "Glyph set for TARGET2 glyph repertoire of the misc-fixed-* fonts. | |
183 This repertoire is supported for the following fonts: | |
184 5x7.bdf 5x8.bdf 6x9.bdf 6x10.bdf 6x12.bdf 7x13.bdf 7x14.bdf clR6x12.bdf") | |
185 | |
186 (defconst nxml-misc-fixed-3-glyph-set | |
187 [(#x0020 . #x007E) | |
188 (#x00A0 . #x00FF) | |
189 (#x0100 . #x01FF) | |
190 (#x0200 . #x0220) | |
191 (#x0222 . #x0233) | |
192 (#x0250 . #x02AD) | |
193 (#x02B0 . #x02EE) | |
194 (#x0300 . #x034F) | |
195 (#x0360 . #x036F) | |
196 (#x0374 . #x0375) | |
197 #x037A #x037E | |
198 (#x0384 . #x038A) | |
199 #x038C | |
200 (#x038E . #x03A1) | |
201 (#x03A3 . #x03CE) | |
202 (#x03D0 . #x03F6) | |
203 (#x0400 . #x0486) | |
204 (#x0488 . #x04CE) | |
205 (#x04D0 . #x04F5) | |
206 (#x04F8 . #x04F9) | |
207 (#x0500 . #x050F) | |
208 (#x0531 . #x0556) | |
209 (#x0559 . #x055F) | |
210 (#x0561 . #x0587) | |
211 (#x0589 . #x058A) | |
212 (#x05B0 . #x05B9) | |
213 (#x05BB . #x05C4) | |
214 (#x05D0 . #x05EA) | |
215 (#x05F0 . #x05F4) | |
216 (#x10D0 . #x10F8) | |
217 #x10FB | |
218 (#x1E00 . #x1E9B) | |
219 (#x1EA0 . #x1EF9) | |
220 (#x1F00 . #x1F15) | |
221 (#x1F18 . #x1F1D) | |
222 (#x1F20 . #x1F45) | |
223 (#x1F48 . #x1F4D) | |
224 (#x1F50 . #x1F57) | |
225 #x1F59 #x1F5B #x1F5D | |
226 (#x1F5F . #x1F7D) | |
227 (#x1F80 . #x1FB4) | |
228 (#x1FB6 . #x1FC4) | |
229 (#x1FC6 . #x1FD3) | |
230 (#x1FD6 . #x1FDB) | |
231 (#x1FDD . #x1FEF) | |
232 (#x1FF2 . #x1FF4) | |
233 (#x1FF6 . #x1FFE) | |
234 (#x2000 . #x200A) | |
235 (#x2010 . #x2027) | |
236 (#x202F . #x2052) | |
237 #x2057 | |
238 (#x205F . #x2063) | |
239 (#x2070 . #x2071) | |
240 (#x2074 . #x208E) | |
241 (#x20A0 . #x20B1) | |
242 (#x20D0 . #x20EA) | |
243 (#x2100 . #x213A) | |
244 (#x213D . #x214B) | |
245 (#x2153 . #x2183) | |
246 (#x2190 . #x21FF) | |
247 (#x2200 . #x22FF) | |
248 (#x2300 . #x23CE) | |
249 (#x2400 . #x2426) | |
250 (#x2440 . #x244A) | |
251 (#x2500 . #x25FF) | |
252 (#x2600 . #x2613) | |
253 (#x2616 . #x2617) | |
254 (#x2619 . #x267D) | |
255 (#x2680 . #x2689) | |
256 (#x27E6 . #x27EB) | |
257 (#x27F5 . #x27FF) | |
258 (#x2A00 . #x2A06) | |
259 #x2A1D #x2A3F #x303F | |
260 (#xFB00 . #xFB06) | |
261 (#xFB13 . #xFB17) | |
262 (#xFB1D . #xFB36) | |
263 (#xFB38 . #xFB3C) | |
264 #xFB3E | |
265 (#xFB40 . #xFB41) | |
266 (#xFB43 . #xFB44) | |
267 (#xFB46 . #xFB4F) | |
268 (#xFE20 . #xFE23) | |
269 (#xFF61 . #xFF9F) | |
270 #xFFFD] | |
271 "Glyph set for TARGET3 glyph repertoire of the misc-fixed-* fonts. | |
272 This repertoire is supported for the following fonts: | |
273 6x13.bdf 8x13.bdf 9x15.bdf 9x18.bdf 10x20.bdf") | |
96496
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
274 |
86361 | 275 (defconst nxml-wgl4-glyph-set |
276 [(#x0020 . #x007E) | |
277 (#x00A0 . #x017F) | |
278 #x0192 | |
279 (#x01FA . #x01FF) | |
280 (#x02C6 . #x02C7) | |
281 #x02C9 | |
282 (#x02D8 . #x02DB) | |
283 #x02DD | |
284 (#x0384 . #x038A) | |
285 #x038C | |
286 (#x038E . #x03A1) | |
287 (#x03A3 . #x03CE) | |
288 (#x0401 . #x040C) | |
289 (#x040E . #x044F) | |
290 (#x0451 . #x045C) | |
291 (#x045E . #x045F) | |
292 (#x0490 . #x0491) | |
293 (#x1E80 . #x1E85) | |
294 (#x1EF2 . #x1EF3) | |
295 (#x2013 . #x2015) | |
296 (#x2017 . #x201E) | |
297 (#x2020 . #x2022) | |
298 #x2026 #x2030 | |
299 (#x2032 . #x2033) | |
300 (#x2039 . #x203A) | |
301 #x203C #x203E #x2044 #x207F | |
302 (#x20A3 . #x20A4) | |
303 #x20A7 #x20AC #x2105 #x2113 #x2116 #x2122 #x2126 #x212E | |
304 (#x215B . #x215E) | |
305 (#x2190 . #x2195) | |
306 #x21A8 #x2202 #x2206 #x220F | |
307 (#x2211 . #x2212) | |
308 #x2215 | |
309 (#x2219 . #x221A) | |
310 (#x221E . #x221F) | |
311 #x2229 #x222B #x2248 | |
312 (#x2260 . #x2261) | |
313 (#x2264 . #x2265) | |
314 #x2302 #x2310 | |
315 (#x2320 . #x2321) | |
316 #x2500 #x2502 #x250C #x2510 #x2514 #x2518 #x251C #x2524 | |
317 #x252C #x2534 #x253C | |
318 (#x2550 . #x256C) | |
319 #x2580 #x2584 #x2588 #x258C | |
320 (#x2590 . #x2593) | |
321 (#x25A0 . #x25A1) | |
322 (#x25AA . #x25AC) | |
323 #x25B2 #x25BA #x25BC #x25C4 | |
324 (#x25CA . #x25CB) | |
325 #x25CF | |
326 (#x25D8 . #x25D9) | |
327 #x25E6 | |
328 (#x263A . #x263C) | |
329 #x2640 #x2642 #x2660 #x2663 | |
330 (#x2665 . #x2666) | |
331 (#x266A . #x266B) | |
332 (#xFB01 . #xFB02)] | |
333 "Glyph set corresponding to Windows Glyph List 4.") | |
334 | |
335 (defvar nxml-glyph-set-hook nil | |
336 "*Hook for determining the set of glyphs in a face. | |
96496
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
337 The hook will receive a single argument FACE. If it can determine |
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
338 the set of glyphs representable by FACE, it must set the variable |
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
339 `nxml-glyph-set' and return non-nil. Otherwise, it must return nil. |
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
340 The hook will be run until success. The constants |
86361 | 341 `nxml-ascii-glyph-set', `nxml-latin1-glyph-set', |
342 `nxml-misc-fixed-1-glyph-set', `nxml-misc-fixed-2-glyph-set', | |
96496
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
343 `nxml-misc-fixed-3-glyph-set' and `nxml-wgl4-glyph-set' are |
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
344 predefined for use by `nxml-glyph-set-hook'.") |
86361 | 345 |
346 (defvar nxml-glyph-set nil | |
347 "Used by `nxml-glyph-set-hook' to return set of glyphs in a FACE. | |
348 This should dynamically bound by any function that runs | |
349 `nxml-glyph-set-hook'. The value must be either nil representing an | |
350 empty set or a vector. Each member of the vector is either a single | |
351 integer or a cons (FIRST . LAST) representing the range of integers | |
352 from FIRST to LAST. An integer represents a glyph with that Unicode | |
353 code-point. The vector must be ordered.") | |
354 | |
355 (defun nxml-x-set-glyph-set (face) | |
356 (setq nxml-glyph-set | |
357 (if (equal (face-attribute face :family) "misc-fixed") | |
358 nxml-misc-fixed-3-glyph-set | |
359 nxml-wgl4-glyph-set))) | |
360 | |
361 (defun nxml-w32-set-glyph-set (face) | |
362 (setq nxml-glyph-set nxml-wgl4-glyph-set)) | |
363 | |
364 (defun nxml-window-system-set-glyph-set (face) | |
365 (setq nxml-glyph-set nxml-latin1-glyph-set)) | |
366 | |
367 (defun nxml-terminal-set-glyph-set (face) | |
368 (setq nxml-glyph-set nxml-ascii-glyph-set)) | |
369 | |
370 (add-hook 'nxml-glyph-set-hook | |
371 (or (cdr (assq window-system | |
372 '((x . nxml-x-set-glyph-set) | |
373 (w32 . nxml-w32-set-glyph-set) | |
374 (nil . nxml-terminal-set-glyph-set)))) | |
375 'nxml-window-system-set-glyph-set) | |
376 t) | |
377 | |
378 ;;;###autoload | |
379 (defun nxml-glyph-display-string (n face) | |
380 "Return a string that can display a glyph for Unicode code-point N. | |
381 FACE gives the face that will be used for displaying the string. | |
382 Return nil if the face cannot display a glyph for N." | |
383 (let ((nxml-glyph-set nil)) | |
384 (run-hook-with-args-until-success 'nxml-glyph-set-hook face) | |
385 (and nxml-glyph-set | |
386 (nxml-glyph-set-contains-p n nxml-glyph-set) | |
387 (let ((ch (decode-char 'ucs n))) | |
388 (and ch (string ch)))))) | |
96496
e374c747704b
Fix typos, and general docstring cleanup.
Juanma Barranquero <lekktu@gmail.com>
parents:
94666
diff
changeset
|
389 |
86361 | 390 (defun nxml-glyph-set-contains-p (n v) |
391 (let ((start 0) | |
392 (end (length v)) | |
393 found mid mid-val mid-start-val mid-end-val) | |
394 (while (> end start) | |
395 (setq mid (+ start | |
396 (/ (- end start) 2))) | |
397 (setq mid-val (aref v mid)) | |
398 (if (consp mid-val) | |
399 (setq mid-start-val (car mid-val) | |
400 mid-end-val (cdr mid-val)) | |
401 (setq mid-start-val mid-val | |
402 mid-end-val mid-val)) | |
403 (cond ((and (<= mid-start-val n) | |
404 (<= n mid-end-val)) | |
405 (setq found t) | |
406 (setq start end)) | |
407 ((< n mid-start-val) | |
408 (setq end mid)) | |
409 (t | |
410 (setq start | |
411 (if (eq start mid) | |
412 end | |
413 mid))))) | |
414 found)) | |
415 | |
416 (provide 'nxml-glyph) | |
417 | |
86379 | 418 ;; arch-tag: 50985104-27c6-4241-8625-b11aa5685633 |
86361 | 419 ;;; nxml-glyph.el ends here |