diff options
| author | Karoly Lorentey | 2005-04-04 16:43:15 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2005-04-04 16:43:15 +0000 |
| commit | ee00ea6e18c2aeae86e262fae703f67f4705032a (patch) | |
| tree | 9e7fc6bfb33de2b2f861589a2f7674ad35de85a8 | |
| parent | 4a932511428a2b61ec51deebd6e16ec1efbda800 (diff) | |
| parent | 8c6ef2ca34c444c1dea1f11b999b4b2ec16cdea3 (diff) | |
| download | emacs-ee00ea6e18c2aeae86e262fae703f67f4705032a.tar.gz emacs-ee00ea6e18c2aeae86e262fae703f67f4705032a.zip | |
Merged from miles@gnu.org--gnu-2005 (patch 45-55, 214-231)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-214
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-215
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-216
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-217
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-218
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-219
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-220
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-221
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-222
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-223
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-224
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-225
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-226
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-227
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-228
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-229
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-230
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-231
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-45
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-46
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-47
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-48
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-49
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-50
Update from CVS: texi Makefile.in CVS keyw cruft
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-51
Update from CVS: ChangeLog tweaks
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-52
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-53
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-54
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-55
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-324
173 files changed, 9539 insertions, 4031 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog index efcd9b2d5e5..c3c65379a16 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog | |||
| @@ -1,3 +1,16 @@ | |||
| 1 | 2005-03-30 Marcelo Toledo <marcelo@marcelotoledo.org> | ||
| 2 | |||
| 3 | * FOR-RELEASE (Documentation): Added check the Emacs Tutorial. The | ||
| 4 | first line of every tutorial must begin with a sentence saying | ||
| 5 | "Emacs Tutorial" in the respective language. This should be | ||
| 6 | followed by "See end for copying conditions", likewise in the | ||
| 7 | respective language. | ||
| 8 | |||
| 9 | 2005-03-29 Luc Teirlinck <teirllm@auburn.edu> | ||
| 10 | |||
| 11 | * FOR-RELEASE (TO BE DONE SHORTLY BEFORE RELEASE): New section. | ||
| 12 | Add `undo-ask-before-discard' to it. | ||
| 13 | |||
| 1 | 2005-03-02 Miles Bader <miles@gnu.org> | 14 | 2005-03-02 Miles Bader <miles@gnu.org> |
| 2 | 15 | ||
| 3 | * quick-install-emacs: Only use the mkdir --verbose option if the | 16 | * quick-install-emacs: Only use the mkdir --verbose option if the |
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index e182242276b..ff6b4c7e73e 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE | |||
| @@ -1,5 +1,10 @@ | |||
| 1 | Tasks needed before the next release. | 1 | Tasks needed before the next release. |
| 2 | 2 | ||
| 3 | * TO BE DONE SHORTLY BEFORE RELEASE | ||
| 4 | |||
| 5 | ** `undo-ask-before-discard', currently set to t for debugging purposes | ||
| 6 | has to be set to nil: when t, it can leak memory and cause other problems. | ||
| 7 | |||
| 3 | * NEW FEATURES | 8 | * NEW FEATURES |
| 4 | 9 | ||
| 5 | ** Face remapping. | 10 | ** Face remapping. |
| @@ -18,6 +23,8 @@ See msg from rms to emacs-devel on 21 Dec. | |||
| 18 | 23 | ||
| 19 | * FATAL ERRORS | 24 | * FATAL ERRORS |
| 20 | 25 | ||
| 26 | ** Make unexec handle memory mapping policy of the latest versions of Linux. | ||
| 27 | |||
| 21 | ** Investigate reported crashes in compact_small_strings. | 28 | ** Investigate reported crashes in compact_small_strings. |
| 22 | 29 | ||
| 23 | ** Investigate reported crashes related to using an | 30 | ** Investigate reported crashes related to using an |
| @@ -145,7 +152,7 @@ man/basic.texi "Luc Teirlinck" Chong Yidong | |||
| 145 | man/buffers.texi "Luc Teirlinck" Chong Yidong | 152 | man/buffers.texi "Luc Teirlinck" Chong Yidong |
| 146 | man/building.texi "Ted Zlatanov" <tzz@lifelogs.com> | 153 | man/building.texi "Ted Zlatanov" <tzz@lifelogs.com> |
| 147 | man/calendar.texi joakim@verona.se Chong Yidong | 154 | man/calendar.texi joakim@verona.se Chong Yidong |
| 148 | man/cmdargs.texi Chong Yidong | 155 | man/cmdargs.texi Chong Yidong "Luc Teirlinck" |
| 149 | man/commands.texi "Luc Teirlinck" Chong Yidong | 156 | man/commands.texi "Luc Teirlinck" Chong Yidong |
| 150 | man/custom.texi Chong Yidong | 157 | man/custom.texi Chong Yidong |
| 151 | man/dired.texi Chong Yidong joakim@verona.se | 158 | man/dired.texi Chong Yidong joakim@verona.se |
| @@ -211,7 +218,7 @@ lispref/frames.texi "Luc Teirlinck" Chong Yidong | |||
| 211 | lispref/functions.texi "Luc Teirlinck" Chong Yidong | 218 | lispref/functions.texi "Luc Teirlinck" Chong Yidong |
| 212 | lispref/hash.texi "Luc Teirlinck" Chong Yidong | 219 | lispref/hash.texi "Luc Teirlinck" Chong Yidong |
| 213 | lispref/help.texi "Luc Teirlinck" Chong Yidong | 220 | lispref/help.texi "Luc Teirlinck" Chong Yidong |
| 214 | lispref/hooks.texi | 221 | lispref/hooks.texi Lute Kamstra |
| 215 | lispref/internals.texi "Luc Teirlinck" Chong Yidong | 222 | lispref/internals.texi "Luc Teirlinck" Chong Yidong |
| 216 | lispref/intro.texi "Luc Teirlinck" | 223 | lispref/intro.texi "Luc Teirlinck" |
| 217 | lispref/keymaps.texi "Luc Teirlinck" Chong Yidong | 224 | lispref/keymaps.texi "Luc Teirlinck" Chong Yidong |
| @@ -240,6 +247,42 @@ lispref/tips.texi "Luc Teirlinck" Chong Yidong | |||
| 240 | lispref/variables.texi "Luc Teirlinck" Chong Yidong | 247 | lispref/variables.texi "Luc Teirlinck" Chong Yidong |
| 241 | lispref/windows.texi "Luc Teirlinck" Chong Yidong | 248 | lispref/windows.texi "Luc Teirlinck" Chong Yidong |
| 242 | 249 | ||
| 250 | ** Check the Emacs Tutorial. | ||
| 251 | |||
| 252 | The first line of every tutorial must begin with a sentence saying | ||
| 253 | "Emacs Tutorial" in the respective language. This should be followed | ||
| 254 | by "See end for copying conditions", likewise in the respective | ||
| 255 | language. | ||
| 256 | |||
| 257 | After each file name, on the same line or the following line, come the | ||
| 258 | names of the people who have checked it. | ||
| 259 | |||
| 260 | |||
| 261 | SECTION READERS | ||
| 262 | ---------------------------------- | ||
| 263 | etc/TUTORIAL rms | ||
| 264 | etc/TUTORIAL.bg Ognyan Kulev <ogi@fmi.uni-sofia.bg> | ||
| 265 | etc/TUTORIAL.cn | ||
| 266 | etc/TUTORIAL.cs | ||
| 267 | etc/TUTORIAL.de | ||
| 268 | etc/TUTORIAL.es Marcelo Toledo | ||
| 269 | etc/TUTORIAL.fr | ||
| 270 | etc/TUTORIAL.it | ||
| 271 | etc/TUTORIAL.ja | ||
| 272 | etc/TUTORIAL.ko | ||
| 273 | etc/TUTORIAL.nl Lute Kamstra | ||
| 274 | etc/TUTORIAL.pl | ||
| 275 | etc/TUTORIAL.pt_BR Marcelo Toledo | ||
| 276 | etc/TUTORIAL.ro | ||
| 277 | etc/TUTORIAL.ru | ||
| 278 | etc/TUTORIAL.sk | ||
| 279 | etc/TUTORIAL.sl | ||
| 280 | etc/TUTORIAL.sv Mats Lidell <matsl@contactor.se> | ||
| 281 | etc/TUTORIAL.th | ||
| 282 | etc/TUTORIAL.zh | ||
| 283 | |||
| 284 | |||
| 285 | |||
| 243 | 286 | ||
| 244 | Local variables: | 287 | Local variables: |
| 245 | mode: outline | 288 | mode: outline |
diff --git a/etc/ChangeLog b/etc/ChangeLog index 5632e1aaf12..71ec47c3d96 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,48 @@ | |||
| 1 | 2005-04-04 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 2 | |||
| 3 | * TUTORIAL.ja: Update text before first period. | ||
| 4 | Reported by Kenichi Handa. | ||
| 5 | |||
| 6 | 2005-04-02 Richard M. Stallman <rms@gnu.org> | ||
| 7 | |||
| 8 | * TUTORIAL.ja, TUTORIAL.cn, TUTORIAL.ru, TUTORIAL.zh: Remove the | ||
| 9 | old intro line that apparently was a longer version of "Emacs | ||
| 10 | tutorial". | ||
| 11 | |||
| 12 | * TUTORIAL.es: Clean up line breaks. | ||
| 13 | |||
| 14 | 2005-04-01 Marcelo Toledo <marcelo@marcelotoledo.org> | ||
| 15 | |||
| 16 | * TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de, | ||
| 17 | * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko, | ||
| 18 | * TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru, | ||
| 19 | * TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title | ||
| 20 | line. | ||
| 21 | |||
| 22 | * TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in | ||
| 23 | 2005-02-08T14:20:54Z!lute@gnu.org, "Emacs" is not transliterated to cyrillic anymore; | ||
| 24 | Minor fixes; by Ognyan Kulev <ogi@fmi.uni-sofia.bg>. | ||
| 25 | |||
| 26 | * TUTORIAL.sv: Sync some other changes with the TUTORIAL version | ||
| 27 | 2005-04-01T00:31:25Z!rms@gnu.org by Mats Lidell <matsl@contactor.se>. | ||
| 28 | |||
| 29 | 2005-04-01 Lute Kamstra <lute@gnu.org> | ||
| 30 | |||
| 31 | * TUTORIAL.nl: Fix title line. | ||
| 32 | |||
| 33 | 2005-03-30 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 34 | |||
| 35 | * TUTORIAL: Add title line. | ||
| 36 | * TUTORIAL.bg, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de, | ||
| 37 | * TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, | ||
| 38 | * TUTORIAL.ko, TUTORIAL.nl, TUTORIAL.pl, TUTORIAL.pt_BR, | ||
| 39 | * TUTORIAL.ro, TUTORIAL.ru, TUTORIAL.sk, TUTORIAL.sl | ||
| 40 | * TUTORIAL.sv, TUTORIAL.th, TUTORIAL.zh: Likewise. | ||
| 41 | |||
| 42 | 2005-03-29 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 43 | |||
| 44 | * gnus-refcard.tex, gnus-logo.eps: New files. | ||
| 45 | |||
| 1 | 2005-03-23 David Ponce <david@dponce.com> | 46 | 2005-03-23 David Ponce <david@dponce.com> |
| 2 | 47 | ||
| 3 | * NEWS: Mention recentf-keep. | 48 | * NEWS: Mention recentf-keep. |
| @@ -107,6 +107,20 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. | |||
| 107 | 107 | ||
| 108 | * Changes in Emacs 22.1 | 108 | * Changes in Emacs 22.1 |
| 109 | 109 | ||
| 110 | ** Improved Thai support. A new minor mode `thai-word-mode' (which is | ||
| 111 | automatically activated if you select Thai as a language | ||
| 112 | environment) changes key bindings of most word-oriented commands to | ||
| 113 | versions which recognize Thai words. Affected commands are | ||
| 114 | M-f (forward-word) | ||
| 115 | M-b (backward-word) | ||
| 116 | M-d (kill-word) | ||
| 117 | M-DEL (backward-kill-word) | ||
| 118 | M-t (transpose-words) | ||
| 119 | M-q (fill-paragraph) | ||
| 120 | |||
| 121 | ** iso-acc.el is now obsolete. Use one of the latin input methods instead. | ||
| 122 | |||
| 123 | --- | ||
| 110 | ** Languange environment and various default coding systems are setup | 124 | ** Languange environment and various default coding systems are setup |
| 111 | more correctly according to the current locale name. If the locale | 125 | more correctly according to the current locale name. If the locale |
| 112 | name doesn't specify a charset, the default is what glibc defines. | 126 | name doesn't specify a charset, the default is what glibc defines. |
| @@ -254,7 +268,10 @@ in the region, rather than on all complete lines in the region. | |||
| 254 | for matching the beginning and end of a symbol. A symbol is a | 268 | for matching the beginning and end of a symbol. A symbol is a |
| 255 | non-empty sequence of either word or symbol constituent characters, as | 269 | non-empty sequence of either word or symbol constituent characters, as |
| 256 | specified by the syntax table. | 270 | specified by the syntax table. |
| 271 | --- | ||
| 272 | *** rx.el has new corresponding `symbol-end' and `symbol-start' elements. | ||
| 257 | 273 | ||
| 274 | +++ | ||
| 258 | ** Passing resources on the command line now works on MS Windows. | 275 | ** Passing resources on the command line now works on MS Windows. |
| 259 | You can use --xrm to pass resource settings to Emacs, overriding any | 276 | You can use --xrm to pass resource settings to Emacs, overriding any |
| 260 | existing values. For example: | 277 | existing values. For example: |
| @@ -837,6 +854,7 @@ possible matches. | |||
| 837 | the current Info node name into the kill ring. With a zero prefix | 854 | the current Info node name into the kill ring. With a zero prefix |
| 838 | arg, puts the node name inside the `info' function call. | 855 | arg, puts the node name inside the `info' function call. |
| 839 | 856 | ||
| 857 | --- | ||
| 840 | *** New face `info-xref-visited' distinguishes visited nodes from unvisited | 858 | *** New face `info-xref-visited' distinguishes visited nodes from unvisited |
| 841 | and a new option `Info-fontify-visited-nodes' to control this. | 859 | and a new option `Info-fontify-visited-nodes' to control this. |
| 842 | 860 | ||
| @@ -848,6 +866,7 @@ references and following them calls `browse-url'. | |||
| 848 | If you prefer the old behavior, you can set the new user option | 866 | If you prefer the old behavior, you can set the new user option |
| 849 | `Info-hide-note-references' to nil. | 867 | `Info-hide-note-references' to nil. |
| 850 | 868 | ||
| 869 | --- | ||
| 851 | *** Images in Info pages are supported. | 870 | *** Images in Info pages are supported. |
| 852 | Info pages show embedded images, in Emacs frames with image support. | 871 | Info pages show embedded images, in Emacs frames with image support. |
| 853 | Info documentation that includes images, processed with makeinfo | 872 | Info documentation that includes images, processed with makeinfo |
| @@ -934,6 +953,7 @@ horizontal scroll bars in a frame or window. | |||
| 934 | +++ | 953 | +++ |
| 935 | ** Under X, mouse-wheel-mode is turned on by default. | 954 | ** Under X, mouse-wheel-mode is turned on by default. |
| 936 | 955 | ||
| 956 | +++ | ||
| 937 | ** The X resource useXIM can be used to turn off use of XIM, which may | 957 | ** The X resource useXIM can be used to turn off use of XIM, which may |
| 938 | speed up Emacs with slow networking to the X server. | 958 | speed up Emacs with slow networking to the X server. |
| 939 | 959 | ||
| @@ -999,6 +1019,7 @@ You can now put the init files .emacs and .emacs_SHELL under | |||
| 999 | instead. The updated skeleton-insert docstring explains these new | 1019 | instead. The updated skeleton-insert docstring explains these new |
| 1000 | features along with other details of skeleton construction. | 1020 | features along with other details of skeleton construction. |
| 1001 | 1021 | ||
| 1022 | --- | ||
| 1002 | ** MH-E changes. | 1023 | ** MH-E changes. |
| 1003 | 1024 | ||
| 1004 | Upgraded to MH-E version 7.82. There have been major changes since | 1025 | Upgraded to MH-E version 7.82. There have been major changes since |
| @@ -1232,6 +1253,7 @@ when Emacs visits them. | |||
| 1232 | default, all trivial operations involving whole lines are performed | 1253 | default, all trivial operations involving whole lines are performed |
| 1233 | automatically. The game uses faces for better visual feedback. | 1254 | automatically. The game uses faces for better visual feedback. |
| 1234 | 1255 | ||
| 1256 | --- | ||
| 1235 | ** The new variable `x-select-request-type' controls how Emacs | 1257 | ** The new variable `x-select-request-type' controls how Emacs |
| 1236 | requests X selection. The default value is nil, which means that | 1258 | requests X selection. The default value is nil, which means that |
| 1237 | Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, | 1259 | Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, |
| @@ -2237,17 +2259,23 @@ from the file name or buffer contents. | |||
| 2237 | --- | 2259 | --- |
| 2238 | ** Perl mode has a new variable `perl-indent-continued-arguments'. | 2260 | ** Perl mode has a new variable `perl-indent-continued-arguments'. |
| 2239 | 2261 | ||
| 2262 | --- | ||
| 2263 | ** Fortran mode does more font-locking by default. Use level 3 | ||
| 2264 | highlighting for the old default. | ||
| 2265 | |||
| 2240 | +++ | 2266 | +++ |
| 2241 | ** Fortran mode has a new variable `fortran-directive-re'. | 2267 | ** Fortran mode has a new variable `fortran-directive-re'. |
| 2242 | Adapt this to match the format of any compiler directives you use. | 2268 | Adapt this to match the format of any compiler directives you use. |
| 2243 | Lines that match are never indented, and are given distinctive font-locking. | 2269 | Lines that match are never indented, and are given distinctive font-locking. |
| 2244 | 2270 | ||
| 2245 | +++ | 2271 | +++ |
| 2246 | ** F90 mode has new navigation commands `f90-end-of-block', | 2272 | ** F90 mode and Fortran mode have new navigation commands |
| 2247 | `f90-beginning-of-block', `f90-next-block', `f90-previous-block'. | 2273 | `f90-end-of-block', `f90-beginning-of-block', `f90-next-block', |
| 2274 | `f90-previous-block', `fortran-end-of-block', | ||
| 2275 | `fortran-beginning-of-block'. | ||
| 2248 | 2276 | ||
| 2249 | --- | 2277 | --- |
| 2250 | ** F90 mode now has support for hs-minor-mode (hideshow). | 2278 | ** F90 mode and Fortran mode have support for hs-minor-mode (hideshow). |
| 2251 | It cannot deal with every code format, but ought to handle a sizeable | 2279 | It cannot deal with every code format, but ought to handle a sizeable |
| 2252 | majority. | 2280 | majority. |
| 2253 | 2281 | ||
| @@ -2407,6 +2435,7 @@ used to effect hiding for hideshow minor mode. Integration with isearch | |||
| 2407 | handles the overlay property `display' specially, preserving it during | 2435 | handles the overlay property `display' specially, preserving it during |
| 2408 | temporary overlay showing in the course of an isearch operation. | 2436 | temporary overlay showing in the course of an isearch operation. |
| 2409 | 2437 | ||
| 2438 | +++ | ||
| 2410 | ** New command `recode-region' decodes the region again by a specified | 2439 | ** New command `recode-region' decodes the region again by a specified |
| 2411 | coding system. | 2440 | coding system. |
| 2412 | 2441 | ||
| @@ -2414,6 +2443,17 @@ coding system. | |||
| 2414 | * New modes and packages in Emacs 22.1 | 2443 | * New modes and packages in Emacs 22.1 |
| 2415 | 2444 | ||
| 2416 | +++ | 2445 | +++ |
| 2446 | ** The new package longlines.el provides a minor mode for editing text | ||
| 2447 | files composed of long lines, based on the `use-hard-newlines' | ||
| 2448 | mechanism. The long lines are broken up by inserting soft newlines, | ||
| 2449 | which are automatically removed when saving the file to disk or | ||
| 2450 | copying into the kill ring, clipboard, etc. By default, Longlines | ||
| 2451 | mode inserts soft newlines automatically during editing, a behavior | ||
| 2452 | referred to as "soft word wrap" in other text editors. This is | ||
| 2453 | similar to Refill mode, but more reliable. To turn the word wrap | ||
| 2454 | feature off, set `longlines-auto-wrap' to nil. | ||
| 2455 | |||
| 2456 | +++ | ||
| 2417 | ** The new package conf-mode.el handles thousands of configuration files, with | 2457 | ** The new package conf-mode.el handles thousands of configuration files, with |
| 2418 | varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, | 2458 | varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, |
| 2419 | var : value, var value or keyword var value) and sections ([section] or | 2459 | var : value, var value or keyword var value) and sections ([section] or |
| @@ -2421,10 +2461,12 @@ section { }). Many files under /etc/, or with suffixes like .cf through | |||
| 2421 | .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are | 2461 | .config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are |
| 2422 | recognized. | 2462 | recognized. |
| 2423 | 2463 | ||
| 2464 | +++ | ||
| 2424 | ** The new package dns-mode.el add syntax highlight of DNS master files. | 2465 | ** The new package dns-mode.el add syntax highlight of DNS master files. |
| 2425 | The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used | 2466 | The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used |
| 2426 | to increment the SOA serial. | 2467 | to increment the SOA serial. |
| 2427 | 2468 | ||
| 2469 | +++ | ||
| 2428 | ** The new package flymake.el does on-the-fly syntax checking of program | 2470 | ** The new package flymake.el does on-the-fly syntax checking of program |
| 2429 | source files. See the Flymake's Info manual for more details. | 2471 | source files. See the Flymake's Info manual for more details. |
| 2430 | 2472 | ||
| @@ -2432,9 +2474,11 @@ source files. See the Flymake's Info manual for more details. | |||
| 2432 | of hierarchical data as an outline. For example, the tree-widget is | 2474 | of hierarchical data as an outline. For example, the tree-widget is |
| 2433 | well suited to display a hierarchy of directories and files. | 2475 | well suited to display a hierarchy of directories and files. |
| 2434 | 2476 | ||
| 2477 | +++ | ||
| 2435 | ** The wdired.el package allows you to use normal editing commands on Dired | 2478 | ** The wdired.el package allows you to use normal editing commands on Dired |
| 2436 | buffers to change filenames, permissions, etc... | 2479 | buffers to change filenames, permissions, etc... |
| 2437 | 2480 | ||
| 2481 | +++ | ||
| 2438 | ** The thumbs.el package allows you to preview image files as thumbnails | 2482 | ** The thumbs.el package allows you to preview image files as thumbnails |
| 2439 | and can be invoked from a Dired buffer. | 2483 | and can be invoked from a Dired buffer. |
| 2440 | 2484 | ||
| @@ -2447,6 +2491,7 @@ and can be invoked from a Dired buffer. | |||
| 2447 | ** The new global minor mode `size-indication-mode' (off by default) | 2491 | ** The new global minor mode `size-indication-mode' (off by default) |
| 2448 | shows the size of accessible part of the buffer on the mode line. | 2492 | shows the size of accessible part of the buffer on the mode line. |
| 2449 | 2493 | ||
| 2494 | --- | ||
| 2450 | ** GDB-Script-mode is used for files like .gdbinit. | 2495 | ** GDB-Script-mode is used for files like .gdbinit. |
| 2451 | 2496 | ||
| 2452 | --- | 2497 | --- |
| @@ -2502,6 +2547,7 @@ versions of cua.el and cua-mode.el. To ensure proper operation, you | |||
| 2502 | must remove older versions of cua.el or cua-mode.el as well as the | 2547 | must remove older versions of cua.el or cua-mode.el as well as the |
| 2503 | loading and customization of those packages from the .emacs file. | 2548 | loading and customization of those packages from the .emacs file. |
| 2504 | 2549 | ||
| 2550 | +++ | ||
| 2505 | ** The new keypad setup package provides several common bindings for | 2551 | ** The new keypad setup package provides several common bindings for |
| 2506 | the numeric keypad which is available on most keyboards. The numeric | 2552 | the numeric keypad which is available on most keyboards. The numeric |
| 2507 | keypad typically has the digits 0 to 9, a decimal point, keys marked | 2553 | keypad typically has the digits 0 to 9, a decimal point, keys marked |
| @@ -2629,6 +2675,7 @@ There is also Global Reveal mode which affects all buffers. | |||
| 2629 | ** The new package ibuffer provides a powerful, completely | 2675 | ** The new package ibuffer provides a powerful, completely |
| 2630 | customizable replacement for buff-menu.el. | 2676 | customizable replacement for buff-menu.el. |
| 2631 | 2677 | ||
| 2678 | +++ | ||
| 2632 | ** The new package table.el implements editable, WYSIWYG, embedded | 2679 | ** The new package table.el implements editable, WYSIWYG, embedded |
| 2633 | `text tables' in Emacs buffers. It simulates the effect of putting | 2680 | `text tables' in Emacs buffers. It simulates the effect of putting |
| 2634 | these tables in a special major mode. The package emulates WYSIWYG | 2681 | these tables in a special major mode. The package emulates WYSIWYG |
| @@ -2651,17 +2698,20 @@ mode-lines in inverse-video. | |||
| 2651 | --- | 2698 | --- |
| 2652 | ** cplus-md.el has been removed to avoid problems with Custom. | 2699 | ** cplus-md.el has been removed to avoid problems with Custom. |
| 2653 | 2700 | ||
| 2701 | +++ | ||
| 2654 | ** New package benchmark.el contains simple support for convenient | 2702 | ** New package benchmark.el contains simple support for convenient |
| 2655 | timing measurements of code (including the garbage collection component). | 2703 | timing measurements of code (including the garbage collection component). |
| 2656 | 2704 | ||
| 2657 | --- | 2705 | --- |
| 2658 | ** The new Lisp library fringe.el controls the appearance of fringes. | 2706 | ** The new Lisp library fringe.el controls the appearance of fringes. |
| 2659 | 2707 | ||
| 2708 | --- | ||
| 2660 | ** `cfengine-mode' is a major mode for editing GNU Cfengine | 2709 | ** `cfengine-mode' is a major mode for editing GNU Cfengine |
| 2661 | configuration files. | 2710 | configuration files. |
| 2662 | 2711 | ||
| 2663 | * Incompatible Lisp Changes in Emacs 22.1 | 2712 | * Incompatible Lisp Changes in Emacs 22.1 |
| 2664 | 2713 | ||
| 2714 | +++ | ||
| 2665 | ** The new interactive-specification `G' reads a file name | 2715 | ** The new interactive-specification `G' reads a file name |
| 2666 | much like `F', but if the input is a directory name (even defaulted), | 2716 | much like `F', but if the input is a directory name (even defaulted), |
| 2667 | it returns just the directory name. | 2717 | it returns just the directory name. |
| @@ -2679,6 +2729,21 @@ the command `undefined'. (In earlier Emacs versions, it used | |||
| 2679 | 2729 | ||
| 2680 | * Lisp Changes in Emacs 22.1 | 2730 | * Lisp Changes in Emacs 22.1 |
| 2681 | 2731 | ||
| 2732 | --- | ||
| 2733 | ** easy-mmode-define-global-mode has been renamed to | ||
| 2734 | define-global-minor-mode. The old name remains as an alias. | ||
| 2735 | |||
| 2736 | +++ | ||
| 2737 | ** The new function `filter-buffer-substring' extracts a buffer | ||
| 2738 | substring, passes it through a set of filter functions, and returns | ||
| 2739 | the filtered substring. It is used instead of `buffer-substring' or | ||
| 2740 | `delete-and-extract-region' when copying text into a user-accessible | ||
| 2741 | data structure, like the kill-ring, X clipboard, or a register. The | ||
| 2742 | list of filter function is specified by the new variable | ||
| 2743 | `buffer-substring-filters'. For example, Longlines mode uses | ||
| 2744 | `buffer-substring-filters' to remove soft newlines from the copied | ||
| 2745 | text. | ||
| 2746 | |||
| 2682 | +++ | 2747 | +++ |
| 2683 | ** An element of buffer-undo-list can now have the form (apply FUNNAME | 2748 | ** An element of buffer-undo-list can now have the form (apply FUNNAME |
| 2684 | . ARGS), where FUNNAME is a symbol other than t or nil. That stands | 2749 | . ARGS), where FUNNAME is a symbol other than t or nil. That stands |
| @@ -3201,6 +3266,7 @@ contents are detected automatically. However, certain implicit | |||
| 3201 | changes to mode lines, header lines, or display properties may require | 3266 | changes to mode lines, header lines, or display properties may require |
| 3202 | forcing an explicit window update. | 3267 | forcing an explicit window update. |
| 3203 | 3268 | ||
| 3269 | --- | ||
| 3204 | ** New function `redirect-debugging-output' can be used to redirect | 3270 | ** New function `redirect-debugging-output' can be used to redirect |
| 3205 | debugging output on the stderr file handle to a file. | 3271 | debugging output on the stderr file handle to a file. |
| 3206 | 3272 | ||
| @@ -4401,6 +4467,7 @@ formerly used for that purpose is now an alias for locale-coding-system. | |||
| 4401 | display a prompt but don't use the minibuffer, now display the prompt | 4467 | display a prompt but don't use the minibuffer, now display the prompt |
| 4402 | using the text properties (esp. the face) of the prompt string. | 4468 | using the text properties (esp. the face) of the prompt string. |
| 4403 | 4469 | ||
| 4470 | --- | ||
| 4404 | ** New function x-send-client-message sends a client message when | 4471 | ** New function x-send-client-message sends a client message when |
| 4405 | running under X. | 4472 | running under X. |
| 4406 | 4473 | ||
| @@ -4410,6 +4477,7 @@ all overlays in the buffer by just calling (remove-overlay). | |||
| 4410 | 4477 | ||
| 4411 | ** New packages: | 4478 | ** New packages: |
| 4412 | 4479 | ||
| 4480 | +++ | ||
| 4413 | *** The new package gdb-ui.el provides an enhanced graphical interface to | 4481 | *** The new package gdb-ui.el provides an enhanced graphical interface to |
| 4414 | GDB. You can interact with GDB through the GUD buffer in the usual way, but | 4482 | GDB. You can interact with GDB through the GUD buffer in the usual way, but |
| 4415 | there are also further buffers which control the execution and describe the | 4483 | there are also further buffers which control the execution and describe the |
| @@ -4426,6 +4494,7 @@ current syntactic context (as returned by parse-partial-sexp). | |||
| 4426 | binary data structures, such as network packets, to and from Lisp | 4494 | binary data structures, such as network packets, to and from Lisp |
| 4427 | data structures. | 4495 | data structures. |
| 4428 | 4496 | ||
| 4497 | --- | ||
| 4429 | *** The TCL package tcl-mode.el was replaced by tcl.el. | 4498 | *** The TCL package tcl-mode.el was replaced by tcl.el. |
| 4430 | This was actually done in Emacs-21.1, and was not documented. | 4499 | This was actually done in Emacs-21.1, and was not documented. |
| 4431 | 4500 | ||
diff --git a/etc/TUTORIAL b/etc/TUTORIAL index b5632ae707b..48fa02f93d9 100644 --- a/etc/TUTORIAL +++ b/etc/TUTORIAL | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | You are looking at the Emacs tutorial. See end for copying conditions. | 1 | Emacs tutorial. See end for copying conditions. |
| 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation. | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Emacs commands generally involve the CONTROL key (sometimes labeled | 4 | Emacs commands generally involve the CONTROL key (sometimes labeled |
diff --git a/etc/TUTORIAL.bg b/etc/TUTORIAL.bg index 8bd4b2a19ad..239d3d58c19 100644 --- a/etc/TUTORIAL.bg +++ b/etc/TUTORIAL.bg | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | Âèå ãëåäàòå âúâåäåíèåòî íà Åìàêñ. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà. | 1 | Âúâåäåíèå â Emacs. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà. |
| 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2003 Free Software Foundation. | 2 | Copyright (c) 1985,1996,1998,2001,2002,2003,2005 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Êîìàíäèòå íà Åìàêñ íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà | 4 | Êîìàíäèòå íà Emacs íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà |
| 5 | îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè | 5 | îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè |
| 6 | ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå | 6 | ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå |
| 7 | ñëåäíèòå ñúêðàùåíèÿ: | 7 | ñëåäíèòå ñúêðàùåíèÿ: |
| @@ -15,7 +15,7 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå | |||
| 15 | êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå | 15 | êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå |
| 16 | çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC. | 16 | çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC. |
| 17 | 17 | ||
| 18 | Âàæíà áåëåæêà: â êðàÿ íà Åìàêñ ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c. | 18 | Âàæíà áåëåæêà: â êðàÿ íà Emacs ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c. |
| 19 | Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð: | 19 | Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð: |
| 20 | <<Blank lines inserted here by startup of help-with-tutorial>> | 20 | <<Blank lines inserted here by startup of help-with-tutorial>> |
| 21 | >> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì | 21 | >> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì |
| @@ -93,7 +93,7 @@ Next (ñëåäâàù), B çà Backward (íàçàä) è F çà Forward (íàïðåä). Âèå ùå | |||
| 93 | 93 | ||
| 94 | Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà | 94 | Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà |
| 95 | îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë | 95 | îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë |
| 96 | òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Åìàêñ íå èçèñêâà òàêúâ, | 96 | òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Emacs íå èçèñêâà òàêúâ, |
| 97 | êîãàòî ïðî÷èòà ôàéëà). | 97 | êîãàòî ïðî÷èòà ôàéëà). |
| 98 | 98 | ||
| 99 | >> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ | 99 | >> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ |
| @@ -109,7 +109,7 @@ C-f ìîæå äà ïðèäâèæâà ïðåç çíàê çà íîâ ðåä òî÷íî êàêòî C-b. | |||
| 109 | 109 | ||
| 110 | Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò | 110 | Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò |
| 111 | îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à "ñêðîëèðàíå". Òî | 111 | îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à "ñêðîëèðàíå". Òî |
| 112 | ïîçâîëÿâà íà Åìàêñ äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà, | 112 | ïîçâîëÿâà íà Emacs äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà, |
| 113 | áåç äà ãî èçêàðâà èçâúí åêðàíà. | 113 | áåç äà ãî èçêàðâà èçâúí åêðàíà. |
| 114 | 114 | ||
| 115 | >> Îïèòàéòå ñå äà ïðèäâèæèòå êóðñîðà ñëåä äîëíèÿ êðàé íà åêðàíà ñ C-n | 115 | >> Îïèòàéòå ñå äà ïðèäâèæèòå êóðñîðà ñëåä äîëíèÿ êðàé íà åêðàíà ñ C-n |
| @@ -192,7 +192,7 @@ Shift áèõòå âúâåëè M-çàïåòàÿ. | |||
| 192 | Âèå ìîæåòå ñúùî äà ñå ïðèäâèæâàòå ñ êëàâèøèòå-ñòðåëêè, àêî âàøèÿò | 192 | Âèå ìîæåòå ñúùî äà ñå ïðèäâèæâàòå ñ êëàâèøèòå-ñòðåëêè, àêî âàøèÿò |
| 193 | òåðìèíàë èìà òàêèâà. Íèå ïðåïîðú÷âàìå äà íàó÷èòå C-b, C-f, C-n è C-p | 193 | òåðìèíàë èìà òàêèâà. Íèå ïðåïîðú÷âàìå äà íàó÷èòå C-b, C-f, C-n è C-p |
| 194 | ïî òðè ïðè÷èíè. Ïúðâî, òå ðàáîòÿò íà âñè÷êè âèäîâå òåðìèíàëè. Âòîðî, | 194 | ïî òðè ïðè÷èíè. Ïúðâî, òå ðàáîòÿò íà âñè÷êè âèäîâå òåðìèíàëè. Âòîðî, |
| 195 | âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Åìàêñ, ùå | 195 | âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Emacs, ùå |
| 196 | îòêðèåòå, ÷å âúâåæäàíåòî íà òåçè Control-çíàöè å ïî-áúðçî îò | 196 | îòêðèåòå, ÷å âúâåæäàíåòî íà òåçè Control-çíàöè å ïî-áúðçî îò |
| 197 | âúâåæäàíåòî íà êëàâèøèòå ñòðåëêè, çàùîòî íå òðÿáâà äà ïðåìåñòâàòå | 197 | âúâåæäàíåòî íà êëàâèøèòå ñòðåëêè, çàùîòî íå òðÿáâà äà ïðåìåñòâàòå |
| 198 | ðúêàòà ñè äàëå÷ îò îáëàñòòà íà êëàâèøèòå ñ áóêâè. Òðåòî, âåäíúæ ñëåä | 198 | ðúêàòà ñè äàëå÷ îò îáëàñòòà íà êëàâèøèòå ñ áóêâè. Òðåòî, âåäíúæ ñëåä |
| @@ -200,7 +200,7 @@ Shift áèõòå âúâåëè M-çàïåòàÿ. | |||
| 200 | ìîæåòå ñúùî òàêà ëåñíî äà íàó÷èòå ïî-íàïðåäíàëèòå êîìàíäè çà äâèæåíèå | 200 | ìîæåòå ñúùî òàêà ëåñíî äà íàó÷èòå ïî-íàïðåäíàëèòå êîìàíäè çà äâèæåíèå |
| 201 | íà êóðñîðà. | 201 | íà êóðñîðà. |
| 202 | 202 | ||
| 203 | Ïîâå÷åòî Åìàêñ êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé | 203 | Ïîâå÷åòî Emacs êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé |
| 204 | ñëóæè êàòî áðîÿ÷ íà ïîâòîðåíèÿ. Íà÷èíúò, ïî êîéòî äàâàòå ÷èñëîâ | 204 | ñëóæè êàòî áðîÿ÷ íà ïîâòîðåíèÿ. Íà÷èíúò, ïî êîéòî äàâàòå ÷èñëîâ |
| 205 | áðîÿ÷, å ñ âúâåæäàíå íà C-u, ïîñëåäâàíî îò âúâåæäàíå íà öèôðèòå, è | 205 | áðîÿ÷, å ñ âúâåæäàíå íà C-u, ïîñëåäâàíî îò âúâåæäàíå íà öèôðèòå, è |
| 206 | âñè÷êî òîâà ïðåäè âúâåæäàíå íà ñàìàòà êîìàíäà. Àêî èìàòå êëàâèø META | 206 | âñè÷êî òîâà ïðåäè âúâåæäàíå íà ñàìàòà êîìàíäà. Àêî èìàòå êëàâèø META |
| @@ -232,7 +232,7 @@ C-v è M-v ñà äðóã âèä èçêëþ÷åíèå. Êîãàòî èì å äàäåí àðãóìåíò, òå | |||
| 232 | 232 | ||
| 233 | Àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, êàòî X11 èëè MS-Windows, áè | 233 | Àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, êàòî X11 èëè MS-Windows, áè |
| 234 | òðÿáâàëî äà èìà òúíêà ïðàâîúãúëíà îáëàñò, íàðå÷åíà ïëúçãà÷ (scroll | 234 | òðÿáâàëî äà èìà òúíêà ïðàâîúãúëíà îáëàñò, íàðå÷åíà ïëúçãà÷ (scroll |
| 235 | bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | 235 | bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs. Âèå ìîæåòå äà ñêðîëèðàòå |
| 236 | òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à. | 236 | òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à. |
| 237 | 237 | ||
| 238 | >> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò | 238 | >> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò |
| @@ -244,10 +244,10 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | |||
| 244 | íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà. | 244 | íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà. |
| 245 | 245 | ||
| 246 | 246 | ||
| 247 | * ÊÎÃÀÒÎ ÅÌÀÊÑ Å ÁËÎÊÈÐÀË | 247 | * ÊÎÃÀÒÎ EMACS Å ÁËÎÊÈÐÀË |
| 248 | ------------------------- | 248 | ------------------------- |
| 249 | 249 | ||
| 250 | Àêî Åìàêñ ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå | 250 | Àêî Emacs ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå |
| 251 | áåçîïàñíî, êàòî âúâåäåòå C-g. Ìîæå äà èçïîëçâàòå C-g, çà äà ñïðåòå | 251 | áåçîïàñíî, êàòî âúâåäåòå C-g. Ìîæå äà èçïîëçâàòå C-g, çà äà ñïðåòå |
| 252 | êîìàíäà, êîÿòî ñå èçïúëíÿâà òâúðäå äúëãî. | 252 | êîìàíäà, êîÿòî ñå èçïúëíÿâà òâúðäå äúëãî. |
| 253 | 253 | ||
| @@ -264,15 +264,15 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | |||
| 264 | * ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ | 264 | * ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ |
| 265 | ------------------- | 265 | ------------------- |
| 266 | 266 | ||
| 267 | Íÿêîè êîìàíäè íà Åìàêñ ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè | 267 | Íÿêîè êîìàíäè íà Emacs ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè |
| 268 | äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà. | 268 | äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà. |
| 269 | 269 | ||
| 270 | Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Åìàêñ èçâåæäà ñúîáùåíèå, | 270 | Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Emacs èçâåæäà ñúîáùåíèå, |
| 271 | êàçâàéêè êàêâà å áèëà êîìàíäàòà è ïèòàéêè âè äàëè èñêàòå äà ïðîäúëæèòå | 271 | êàçâàéêè êàêâà å áèëà êîìàíäàòà è ïèòàéêè âè äàëè èñêàòå äà ïðîäúëæèòå |
| 272 | íàïðåä è äà èçïúëíèòå êîìàíäàòà. | 272 | íàïðåä è äà èçïúëíèòå êîìàíäàòà. |
| 273 | 273 | ||
| 274 | Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå êëàâèøà èíòåðâàë | 274 | Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå <SPC> (êëàâèøà |
| 275 | â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå | 275 | èíòåðâàë) â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå |
| 276 | çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n". | 276 | çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n". |
| 277 | 277 | ||
| 278 | >> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå | 278 | >> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå |
| @@ -282,7 +282,7 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | |||
| 282 | * ÏÐÎÇÎÐÖÈ | 282 | * ÏÐÎÇÎÐÖÈ |
| 283 | ---------- | 283 | ---------- |
| 284 | 284 | ||
| 285 | Åìàêñ ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé | 285 | Emacs ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé |
| 286 | ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî | 286 | ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî |
| 287 | ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò | 287 | ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò |
| 288 | äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí | 288 | äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí |
| @@ -312,13 +312,13 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | |||
| 312 | ---------------------- | 312 | ---------------------- |
| 313 | 313 | ||
| 314 | Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî | 314 | Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî |
| 315 | ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Åìàêñ êàòî | 315 | ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Emacs êàòî |
| 316 | òåêñò è ñå âìúêâàò âåäíàãà. Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â | 316 | òåêñò è ñå âìúêâàò âåäíàãà. Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â |
| 317 | íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä. | 317 | íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä. |
| 318 | 318 | ||
| 319 | Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà | 319 | Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà |
| 320 | <Delback>. <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî | 320 | <Delback>. <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî |
| 321 | îáèêíîâåíî èçïîëçâàòå èçâúí Åìàêñ, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò | 321 | îáèêíîâåíî èçïîëçâàòå èçâúí Emacs, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò |
| 322 | âàñ çíàê. Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò | 322 | âàñ çíàê. Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò |
| 323 | êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè | 323 | êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè |
| 324 | "Backspace". | 324 | "Backspace". |
| @@ -358,24 +358,24 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå | |||
| 358 | >> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî | 358 | >> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî |
| 359 | èçòðèõòå. | 359 | èçòðèõòå. |
| 360 | 360 | ||
| 361 | Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Åìàêñ ìîæå äà áúäå çàäàäåí áðîÿ÷ | 361 | Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Emacs ìîæå äà áúäå çàäàäåí áðîÿ÷ |
| 362 | íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè. | 362 | íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè. |
| 363 | Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè. | 363 | Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè. |
| 364 | 364 | ||
| 365 | >> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********. | 365 | >> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********. |
| 366 | 366 | ||
| 367 | Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Åìàêñ | 367 | Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Emacs |
| 368 | è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå. | 368 | è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå. |
| 369 | Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ: | 369 | Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ: |
| 370 | 370 | ||
| 371 | <Delback> èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà | 371 | <Delback> Èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà |
| 372 | C-d èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà | 372 | C-d Èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà |
| 373 | 373 | ||
| 374 | M-<Delback> èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà | 374 | M-<Delback> Èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà |
| 375 | M-d èçòðèâàíå íà äóìàòà ñëåä êóðñîðà | 375 | M-d Èçòðèâàíå íà äóìàòà ñëåä êóðñîðà |
| 376 | 376 | ||
| 377 | C-k èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà | 377 | C-k Èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà |
| 378 | M-k èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå | 378 | M-k Èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå |
| 379 | 379 | ||
| 380 | Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d, | 380 | Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d, |
| 381 | ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å | 381 | ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å |
| @@ -385,12 +385,12 @@ M-k ñà ïîäîáíè íà C-e è M-e â ñìèñúë, ÷å åäíèòå ñà çà ðåäîâå, à | |||
| 385 | 385 | ||
| 386 | Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí | 386 | Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí |
| 387 | íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè | 387 | íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè |
| 388 | C-èíòåðâàë (êîåòî è äà å îò äâåòå). Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà | 388 | C-<SPC> (êîåòî è äà å îò äâåòå). (<SPC> å êëàâèøúò èíòåðâàë.) |
| 389 | ÷àñòòà è âúâåäåòå C-w. Òîâà ùå èçðåæå öåëèÿ òåêñò ìåæäó òåçè äâà | 389 | Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà ÷àñòòà è âúâåäåòå C-w. Òîâà ùå èçðåæå |
| 390 | êðàÿ. | 390 | öåëèÿ òåêñò ìåæäó òåçè äâà êðàÿ. |
| 391 | 391 | ||
| 392 | >> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö. | 392 | >> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö. |
| 393 | >> Âúâåäåòå C-èíòåðâàë. Åìàêñ òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â | 393 | >> Âúâåäåòå C-<SPC>. Emacs òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â |
| 394 | äîëíèÿ êðàé íà åêðàíà. | 394 | äîëíèÿ êðàé íà åêðàíà. |
| 395 | >> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà. | 395 | >> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà. |
| 396 | >> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù | 396 | >> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù |
| @@ -420,9 +420,9 @@ C-k îáðàáîòâà ÷èñëîâèòå àðãóìåíòè ïî ñïåöèàëåí íà÷èí: ïðåìàõâàò ñå | |||
| 420 | Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå". (Ìèñëåòå çà íåãî | 420 | Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå". (Ìèñëåòå çà íåãî |
| 421 | êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë | 421 | êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë |
| 422 | èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî, | 422 | èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî, |
| 423 | îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â áóôåðà, äàæå è â | 423 | îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â ðåäàêòèðàíèÿ òåêñò, |
| 424 | ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî ïúòè; òîâà | 424 | äàæå è â ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî |
| 425 | ïðàâè íÿêîëêî êîïèÿ îò íåãî. | 425 | ïúòè; òîâà ïðàâè íÿêîëêî êîïèÿ îò íåãî. |
| 426 | 426 | ||
| 427 | Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò | 427 | Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò |
| 428 | â òåêóùîòî ìÿñòî íà êóðñîðà. | 428 | â òåêóùîòî ìÿñòî íà êóðñîðà. |
| @@ -501,25 +501,25 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå. | |||
| 501 | --------- | 501 | --------- |
| 502 | 502 | ||
| 503 | Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî | 503 | Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî |
| 504 | ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Åìàêñ | 504 | ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Emacs |
| 505 | ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå" | 505 | ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå" |
| 506 | ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà | 506 | ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà |
| 507 | ôàéëà.) | 507 | ôàéëà.) |
| 508 | 508 | ||
| 509 | Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Åìàêñ.  | 509 | Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Emacs.  |
| 510 | ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå, | 510 | ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå, |
| 511 | êîèòî ïðàâèòå, èçïîëçâàéêè Åìàêñ, íå îñòàâàò ïîñòîÿííè, äîêàòî íå | 511 | êîèòî ïðàâèòå, èçïîëçâàéêè Emacs, íå îñòàâàò ïîñòîÿííè, äîêàòî íå |
| 512 | "çàïèøåòå" ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà | 512 | "çàïèøåòå" ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà |
| 513 | ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî | 513 | ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî |
| 514 | çàïèñâàòå, Åìàêñ îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å | 514 | çàïèñâàòå, Emacs îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å |
| 515 | ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà. | 515 | ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà. |
| 516 | 516 | ||
| 517 | Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è | 517 | Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è |
| 518 | çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-R:-- TUTORIAL.bg" èëè íåùî ïîäîáíî. | 518 | çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-R:-- TUTORIAL.bg" èëè íåùî ïîäîáíî. |
| 519 | Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî | 519 | Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî |
| 520 | ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî | 520 | ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî |
| 521 | ëè÷íî êîïèå-÷åðíîâà íà Åìàêñ âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â | 521 | ëè÷íî êîïèå-÷åðíîâà íà Emacs âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â |
| 522 | Åìàêñ, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî. | 522 | Emacs, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî. |
| 523 | 523 | ||
| 524 | Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå | 524 | Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå |
| 525 | èìåòî íà ôàéëà, êîéòî èñêàòå. Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò | 525 | èìåòî íà ôàéëà, êîéòî èñêàòå. Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò |
| @@ -528,10 +528,10 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå. | |||
| 528 | 528 | ||
| 529 | C-x C-f Íàìèðàíå íà ôàéë | 529 | C-x C-f Íàìèðàíå íà ôàéë |
| 530 | 530 | ||
| 531 | Åìàêñ âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî | 531 | Emacs âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî |
| 532 | íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå | 532 | íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå |
| 533 | íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä. Ìîæåòå äà | 533 | íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä. Ìîæåòå äà |
| 534 | èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Åìàêñ, çà äà | 534 | èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Emacs, çà äà |
| 535 | ðåäàêòèðàòå èìåòî íà ôàéëà. | 535 | ðåäàêòèðàòå èìåòî íà ôàéëà. |
| 536 | 536 | ||
| 537 | Êîãàòî âúâåæäàòå èìåòî íà ôàéëà (èëè êàêúâòî è äà å âõîä â | 537 | Êîãàòî âúâåæäàòå èìåòî íà ôàéëà (èëè êàêúâòî è äà å âõîä â |
| @@ -552,12 +552,12 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå. | |||
| 552 | 552 | ||
| 553 | C-x C-s Çàïàçâàíå íà ôàéëà | 553 | C-x C-s Çàïàçâàíå íà ôàéëà |
| 554 | 554 | ||
| 555 | Òîâà êîïèðà òåêñòà îò Åìàêñ âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå | 555 | Òîâà êîïèðà òåêñòà îò Emacs âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå |
| 556 | íàïðàâè, Åìàêñ ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå | 556 | íàïðàâè, Emacs ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå |
| 557 | ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî | 557 | ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî |
| 558 | íà íà÷àëíèÿ ôàéë. | 558 | íà íà÷àëíèÿ ôàéë. |
| 559 | 559 | ||
| 560 | Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Åìàêñ èçâåæäà èìåòî íà ôàéëà, êîéòî å | 560 | Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Emacs èçâåæäà èìåòî íà ôàéëà, êîéòî å |
| 561 | áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå | 561 | áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå |
| 562 | èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà. | 562 | èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà. |
| 563 | 563 | ||
| @@ -565,19 +565,19 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå. | |||
| 565 | Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà. | 565 | Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà. |
| 566 | 566 | ||
| 567 | ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-x C-s ùå çàìðúçè åêðàíà è | 567 | ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-x C-s ùå çàìðúçè åêðàíà è |
| 568 | âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Åìàêñ. Òîâà ïîêàçâà, ÷å åäíà | 568 | âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Emacs. Òîâà ïîêàçâà, ÷å åäíà |
| 569 | "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðè÷àíà "óïðàâëåíèå íà ïîòîêà" | 569 | "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðè÷àíà "óïðàâëåíèå íà ïîòîêà" |
| 570 | (flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Åìàêñ. Çà äà | 570 | (flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Emacs. Çà äà |
| 571 | ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî | 571 | ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî |
| 572 | âêëþ÷âàíå íà ïîñòúïêîâî òúðñåíå" (Spontaneous Entry to Incremental | 572 | âêëþ÷âàíå íà ïîñòúïêîâî òúðñåíå" (Spontaneous Entry to Incremental |
| 573 | Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè | 573 | Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè |
| 574 | "ñïîñîáíîñò". | 574 | "ñïîñîáíîñò". |
| 575 | 575 | ||
| 576 | Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî | 576 | Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî |
| 577 | ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà | 577 | ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà |
| 578 | å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Åìàêñ: íàìèðàòå ôàéëà, êîéòî | 578 | å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Emacs: íàìèðàòå ôàéëà, êîéòî |
| 579 | ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà | 579 | ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà |
| 580 | ôàéëà. Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Åìàêñ âñúùíîñò ùå | 580 | ôàéëà. Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Emacs âñúùíîñò ùå |
| 581 | ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà | 581 | ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà |
| 582 | ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë. | 582 | ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë. |
| 583 | 583 | ||
| @@ -585,9 +585,9 @@ Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè | |||
| 585 | * ÁÓÔÅÐÈ | 585 | * ÁÓÔÅÐÈ |
| 586 | -------- | 586 | -------- |
| 587 | 587 | ||
| 588 | Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Åìàêñ. | 588 | Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Emacs. |
| 589 | Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x | 589 | Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x |
| 590 | C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ. | 590 | C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Emacs. |
| 591 | 591 | ||
| 592 | >> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>. | 592 | >> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>. |
| 593 | Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå | 593 | Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå |
| @@ -595,16 +595,16 @@ C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ. | |||
| 595 | Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå | 595 | Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå |
| 596 | îáðàòíî âúâ âúâåäåíèåòî. | 596 | îáðàòíî âúâ âúâåäåíèåòî. |
| 597 | 597 | ||
| 598 | Åìàêñ çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð". | 598 | Emacs çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð". |
| 599 | Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Åìàêñ. Çà äà âèäèòå ñïèñúê íà | 599 | Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Emacs. Çà äà âèäèòå ñïèñúê íà |
| 600 | áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Åìàêñ, âúâåäåòå | 600 | áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Emacs, âúâåäåòå |
| 601 | 601 | ||
| 602 | C-x C-b Ïîêàçâàíå íà áóôåðèòå | 602 | C-x C-b Ïîêàçâàíå íà áóôåðèòå |
| 603 | 603 | ||
| 604 | >> Îïèòàéòå C-x C-b ñåãà. | 604 | >> Îïèòàéòå C-x C-b ñåãà. |
| 605 | 605 | ||
| 606 | Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà, | 606 | Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà, |
| 607 | ÷èåòî ñúäúðæàíèå äúðæè. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, | 607 | ÷èåòî ñúäúðæàíèå äúðæè. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö, |
| 608 | å âèíàãè ÷àñò îò íÿêàêúâ áóôåð. | 608 | å âèíàãè ÷àñò îò íÿêàêúâ áóôåð. |
| 609 | 609 | ||
| 610 | >> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå. | 610 | >> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå. |
| @@ -626,13 +626,13 @@ C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ. | |||
| 626 | Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî | 626 | Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî |
| 627 | íà âñåêè áóôåð. | 627 | íà âñåêè áóôåð. |
| 628 | 628 | ||
| 629 | ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ | 629 | ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ |
| 630 | áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Íàïðèìåð áóôåðúò, | 630 | áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Íàïðèìåð áóôåðúò, |
| 631 | èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë. Òîâà å áóôåðúò, | 631 | èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë. Òîâà å áóôåðúò, |
| 632 | êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b. | 632 | êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b. |
| 633 | Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé | 633 | Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé |
| 634 | ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà | 634 | ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà |
| 635 | Åìàêñ ñåñèÿòà. | 635 | Emacs ñåñèÿòà. |
| 636 | 636 | ||
| 637 | >> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ | 637 | >> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ |
| 638 | ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x C-b TUTORIAL <Return>, çà äà | 638 | ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x C-b TUTORIAL <Return>, çà äà |
| @@ -640,7 +640,7 @@ C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ. | |||
| 640 | 640 | ||
| 641 | Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã | 641 | Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã |
| 642 | ôàéë, òîâà íÿìà äà çàïèøå ïúðâèÿ ôàéë. Íåãîâèòå ïðîìåíè îñòàâàò âúòðå | 642 | ôàéë, òîâà íÿìà äà çàïèøå ïúðâèÿ ôàéë. Íåãîâèòå ïðîìåíè îñòàâàò âúòðå |
| 643 | â Åìàêñ, â áóôåðà íà ôàéëà. Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà | 643 | â Emacs, â áóôåðà íà ôàéëà. Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà |
| 644 | íà âòîðèÿ ôàéë íÿìà åôåêò âúðõó áóôåðà íà ïúðâèÿ ôàéë. Òîâà å ìíîãî | 644 | íà âòîðèÿ ôàéë íÿìà åôåêò âúðõó áóôåðà íà ïúðâèÿ ôàéë. Òîâà å ìíîãî |
| 645 | ïîëåçíî, íî ñúùî îçíà÷àâà, ÷å ñå íóæäàåòå îò óäîáåí íà÷èí äà çàïàçèòå | 645 | ïîëåçíî, íî ñúùî îçíà÷àâà, ÷å ñå íóæäàåòå îò óäîáåí íà÷èí äà çàïàçèòå |
| 646 | áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x | 646 | áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x |
| @@ -659,8 +659,8 @@ C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå | |||
| 659 | * ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ | 659 | * ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ |
| 660 | ------------------------------- | 660 | ------------------------------- |
| 661 | 661 | ||
| 662 | Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Åìàêñ, îòêîëêîòî ìîãàò äà ñå ñëîæàò | 662 | Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Emacs, îòêîëêîòî ìîãàò äà ñå ñëîæàò |
| 663 | íà âñè÷êè êîíòðîëíè è ìåòà çíàöè. Åìàêñ çàîáèêàëÿ òîâà ñ X (eXtended) | 663 | íà âñè÷êè êîíòðîëíè è ìåòà çíàöè. Emacs çàîáèêàëÿ òîâà ñ X (eXtended) |
| 664 | êîìàíäàòà. Òîâà ñòàâà ïî äâà íà÷èíà: | 664 | êîìàíäàòà. Òîâà ñòàâà ïî äâà íà÷èíà: |
| 665 | 665 | ||
| 666 | C-x Çíàêîâî ðàçøèðÿâàíå. Ïîñëåäâàíî îò åäèí çíàê. | 666 | C-x Çíàêîâî ðàçøèðÿâàíå. Ïîñëåäâàíî îò åäèí çíàê. |
| @@ -668,49 +668,49 @@ C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå | |||
| 668 | èìå. | 668 | èìå. |
| 669 | 669 | ||
| 670 | Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå, | 670 | Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå, |
| 671 | êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå äâå îò òÿõ: êîìàíäèòå âúðõó | 671 | êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå íÿêîëêî îò òÿõ: íàïðèìåð |
| 672 | ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà çàïàçâàíå (Save). | 672 | êîìàíäèòå âúðõó ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà |
| 673 | Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Åìàêñ ñåñèÿòà -- òîâà å êîìàíäàòà | 673 | çàïàçâàíå (Save). Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Emacs ñåñèÿòà -- |
| 674 | C-x C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå âñè÷êè ïðîìåíè, êîèòî | 674 | òîâà å êîìàíäàòà C-x C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå |
| 675 | ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè ïðîìåíåí ôàéë, ïðåäè | 675 | âñè÷êè ïðîìåíè, êîèòî ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè |
| 676 | äà ïðåìàõíå Åìàêñ.) | 676 | ïðîìåíåí ôàéë, ïðåäè äà ïðåìàõíå Emacs.) |
| 677 | 677 | ||
| 678 | C-z å êîìàíäàòà çà èçëèçàíå îò Åìàêñ *âðåìåííî* -- òàêà ÷å äà ìîæåòå | 678 | C-z å êîìàíäàòà çà èçëèçàíå îò Emacs *âðåìåííî* -- òàêà ÷å äà ìîæåòå |
| 679 | äà ñå âúðíåòå êúì ñúùàòà Åìàêñ ñåñèÿ ïî-êúñíî. | 679 | äà ñå âúðíåòå êúì ñúùàòà Emacs ñåñèÿ ïî-êúñíî. |
| 680 | 680 | ||
| 681 | Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Åìàêñ, | 681 | Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Emacs, |
| 682 | ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Åìàêñ.  ïîâå÷åòî îáâèâêè | 682 | ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Emacs.  ïîâå÷åòî îáâèâêè |
| 683 | ìîæåòå äà ïðîäúëæèòå Åìàêñ ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs". | 683 | ìîæåòå äà ïðîäúëæèòå Emacs ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs". |
| 684 | 684 | ||
| 685 | Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà | 685 | Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà |
| 686 | ïîäîáâèâêà, êîÿòî âúðâè ïîä Åìàêñ, çà äà âè äàäå øàíñ äà ñòàðòèðàòå | 686 | ïîäîáâèâêà, êîÿòî âúðâè ïîä Emacs, çà äà âè äàäå øàíñ äà ñòàðòèðàòå |
| 687 | äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Åìàêñ ñëåä òîâà; òîâà íå å èñòèíñêî | 687 | äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Emacs ñëåä òîâà; òîâà íå å èñòèíñêî |
| 688 | "èçëèçàíå" îò Åìàêñ.  òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å | 688 | "èçëèçàíå" îò Emacs.  òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å |
| 689 | îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Åìàêñ îò ïîäîáâèâêàòà. | 689 | îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Emacs îò ïîäîáâèâêàòà. |
| 690 | 690 | ||
| 691 | Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò | 691 | Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò |
| 692 | ñèñòåìàòà. Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Åìàêñ å | 692 | ñèñòåìàòà. Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Emacs å |
| 693 | èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå | 693 | èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå |
| 694 | ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Åìàêñ. Ïðè | 694 | ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Emacs. Ïðè |
| 695 | îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò | 695 | îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò |
| 696 | ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Åìàêñ ñ C-z, âìåñòî äà èçëèçàòå îò | 696 | ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Emacs ñ C-z, âìåñòî äà èçëèçàòå îò |
| 697 | Åìàêñ. | 697 | Emacs. |
| 698 | 698 | ||
| 699 | Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè: | 699 | Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè: |
| 700 | 700 | ||
| 701 | C-x C-f Íàìèðàíå íà ôàéë. | 701 | C-x C-f Íàìèðàíå íà ôàéë |
| 702 | C-x C-s Çàïàçâàíå íà ôàéë. | 702 | C-x C-s Çàïàçâàíå íà ôàéë |
| 703 | C-x C-b Ñïèñúê íà áóôåðèòå. | 703 | C-x C-b Ñïèñúê íà áóôåðèòå |
| 704 | C-x C-c Èçëèçàíå îò Åìàêñ. | 704 | C-x C-c Èçëèçàíå îò Emacs |
| 705 | C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè îñâåí åäèí. | 705 | C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè, îñâåí åäèí |
| 706 | C-x u Îòìÿíà. | 706 | C-x u Îòìÿíà |
| 707 | 707 | ||
| 708 | Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå | 708 | Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå |
| 709 | ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè. | 709 | ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè. |
| 710 | Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ | 710 | Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ |
| 711 | äðóã. Êîãàòî âúâåäåòå M-x, Åìàêñ âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ | 711 | äðóã. Êîãàòî âúâåäåòå M-x, Emacs âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ |
| 712 | M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé | 712 | M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé |
| 713 | "replace-string". Ïðîñòî âúâåäåòå "repl s<TAB>" è Åìàêñ ùå çàâúðøè | 713 | "replace-string". Ïðîñòî âúâåäåòå "repl s<TAB>" è Emacs ùå çàâúðøè |
| 714 | èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà | 714 | èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà |
| 715 | CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.) | 715 | CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.) |
| 716 | Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>. | 716 | Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>. |
| @@ -734,11 +734,11 @@ CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.) | |||
| 734 | 734 | ||
| 735 | Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå | 735 | Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå |
| 736 | ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè | 736 | ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè |
| 737 | ïðåäïàçè îò òàêèâà ñèòóàöèè, Åìàêñ ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî | 737 | ïðåäïàçè îò òàêèâà ñèòóàöèè, Emacs ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî |
| 738 | çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî | 738 | çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî |
| 739 | çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å | 739 | çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å |
| 740 | ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå | 740 | ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå |
| 741 | "#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Åìàêñ | 741 | "#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Emacs |
| 742 | èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë. | 742 | èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë. |
| 743 | 743 | ||
| 744 | Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî | 744 | Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî |
| @@ -752,7 +752,7 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå, | |||
| 752 | * ÅÕÎ ÎÁËÀÑÒÒÀ | 752 | * ÅÕÎ ÎÁËÀÑÒÒÀ |
| 753 | -------------- | 753 | -------------- |
| 754 | 754 | ||
| 755 | Àêî Åìàêñ âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè | 755 | Àêî Emacs âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè |
| 756 | ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò". Åõî | 756 | ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò". Åõî |
| 757 | îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà. | 757 | îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà. |
| 758 | 758 | ||
| @@ -763,18 +763,18 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå, | |||
| 763 | Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line). | 763 | Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line). |
| 764 | Òîé ïîêàçâà íåùî êàòî: | 764 | Òîé ïîêàçâà íåùî êàòî: |
| 765 | 765 | ||
| 766 | -R:** TUTORIAL.bg (Fundamental)--L670--58%---------------- | 766 | -D:** TUTORIAL.bg 63% L749 (Fundamental)--------------------- |
| 767 | 767 | ||
| 768 | Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Åìàêñ è òåêñòà, | 768 | Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Emacs è òåêñòà, |
| 769 | êîéòî ðåäàêòèðàòå. | 769 | êîéòî ðåäàêòèðàòå. |
| 770 | 770 | ||
| 771 | Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå | 771 | Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå |
| 772 | íàìåðèëè. -NN%-- ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà | 772 | íàìåðèëè. NN% ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà îçíà÷àâà, |
| 773 | îçíà÷àâà, ÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî | 773 | ÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî íà÷àëîòî íà ôàéëà |
| 774 | íà÷àëîòî íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî | 774 | å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî --00%--. Àêî êðàÿò |
| 775 | --00%--. Àêî êðàÿ íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî). | 775 | íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî). Àêî ãëåäàòå |
| 776 | Àêî ãëåäàòå òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà | 776 | òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà åêðàíà, ðåäúò íà |
| 777 | åêðàíà, ðåäúò íà ðåæèìà ùå èçâåäå --All--. | 777 | ðåæèìà ùå èçâåäå --All--. |
| 778 | 778 | ||
| 779 | Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà | 779 | Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà |
| 780 | òåêóùèÿ ðåä íà òî÷êàòà. | 780 | òåêóùèÿ ðåä íà òî÷êàòà. |
| @@ -788,7 +788,7 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå, | |||
| 788 | Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà | 788 | Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà |
| 789 | "ãëàâåí ðåæèì" (major mode). | 789 | "ãëàâåí ðåæèì" (major mode). |
| 790 | 790 | ||
| 791 | Åìàêñ èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà | 791 | Emacs èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà |
| 792 | ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì | 792 | ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì |
| 793 | Ëèñï, ðåæèì Òåêñò è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí | 793 | Ëèñï, ðåæèì Òåêñò è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí |
| 794 | ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â | 794 | ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â |
| @@ -807,7 +807,7 @@ Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà | |||
| 807 | 807 | ||
| 808 | >> Âúâåäåòå M-x text mode<Return>. | 808 | >> Âúâåäåòå M-x text mode<Return>. |
| 809 | 809 | ||
| 810 | Íå ñå áåçïîêîéòå, íèêîÿ îò Åìàêñ êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà | 810 | Íå ñå áåçïîêîéòå, íèêîÿ îò Emacs êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà |
| 811 | ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f | 811 | ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f |
| 812 | è M-b ñåãà âúçïðèåìàò àïîñòðîôèòå (') êàòî ÷àñò îò äóìèòå. Ïðåäè | 812 | è M-b ñåãà âúçïðèåìàò àïîñòðîôèòå (') êàòî ÷àñò îò äóìèòå. Ïðåäè |
| 813 | òîâà, â îñíîâíèÿ ðåæèì (Fundamental), M-f è M-b ñå âúçïðèåìàõà êàòî | 813 | òîâà, â îñíîâíèÿ ðåæèì (Fundamental), M-f è M-b ñå âúçïðèåìàõà êàòî |
| @@ -836,7 +836,7 @@ m. | |||
| 836 | 836 | ||
| 837 | Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà | 837 | Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà |
| 838 | òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill | 838 | òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill |
| 839 | mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Åìàêñ àâòîìàòè÷íî ðàçäåëÿ ðåäà | 839 | mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Emacs àâòîìàòè÷íî ðàçäåëÿ ðåäà |
| 840 | ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî | 840 | ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî |
| 841 | å òâúðäå äúëúã. | 841 | å òâúðäå äúëúã. |
| 842 | 842 | ||
| @@ -856,7 +856,7 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî | |||
| 856 | àðãóìåíò íà êîìàíäàòà. | 856 | àðãóìåíò íà êîìàíäàòà. |
| 857 | 857 | ||
| 858 | >> Âúâåäåòå C-x f ñ àðãóìåíò 20. (C-u 2 0 C-x f). | 858 | >> Âúâåäåòå C-x f ñ àðãóìåíò 20. (C-u 2 0 C-x f). |
| 859 | Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Åìàêñ çàïúëâà ðåäîâåòå ñ ïî | 859 | Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Emacs çàïúëâà ðåäîâåòå ñ ïî |
| 860 | íå ïîâå÷å îò 20 çíàêà. Ïîñëå âúðíåòå îáðàòíî ãðàíèöàòà íà 70, | 860 | íå ïîâå÷å îò 20 çíàêà. Ïîñëå âúðíåòå îáðàòíî ãðàíèöàòà íà 70, |
| 861 | èçïîëçâàéêè C-x f îòíîâî. | 861 | èçïîëçâàéêè C-x f îòíîâî. |
| 862 | 862 | ||
| @@ -871,12 +871,12 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî | |||
| 871 | * ÒÚÐÑÅÍÅ | 871 | * ÒÚÐÑÅÍÅ |
| 872 | --------- | 872 | --------- |
| 873 | 873 | ||
| 874 | Åìàêñ ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè | 874 | Emacs ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè |
| 875 | îò çíàöè èëè äóìè) èëè íàïðåä â òåêñòà, èëè íàçàä â íåãî. Òúðñåíåòî | 875 | îò çíàöè èëè äóìè) èëè íàïðåä â òåêñòà, èëè íàçàä â íåãî. Òúðñåíåòî |
| 876 | íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà | 876 | íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà |
| 877 | ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò. | 877 | ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò. |
| 878 | 878 | ||
| 879 | Êîìàíäàòà çà òúðñåíå íà Åìàêñ ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà | 879 | Êîìàíäàòà çà òúðñåíå íà Emacs ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà |
| 880 | ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà". Òîâà îçíà÷àâà, ÷å | 880 | ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà". Òîâà îçíà÷àâà, ÷å |
| 881 | òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå. | 881 | òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå. |
| 882 | 882 | ||
| @@ -884,7 +884,7 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî | |||
| 884 | òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà. | 884 | òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà. |
| 885 | 885 | ||
| 886 | Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà | 886 | Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà |
| 887 | êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Åìàêñ å â òîâà, | 887 | êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Emacs å â òîâà, |
| 888 | êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà, | 888 | êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà, |
| 889 | êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî. | 889 | êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî. |
| 890 | 890 | ||
| @@ -896,19 +896,19 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî | |||
| 896 | >> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà. | 896 | >> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà. |
| 897 | >> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî. | 897 | >> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî. |
| 898 | 898 | ||
| 899 | Çàáåëÿçàõòå ëè êàêâî ñòàíà? Åìàêñ, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà | 899 | Çàáåëÿçàõòå ëè êàêâî ñòàíà? Emacs, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà |
| 900 | äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà | 900 | äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà |
| 901 | îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå | 901 | îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå |
| 902 | C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Åìàêñ áèáèïâà è âè êàçâà, ÷å | 902 | C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Emacs áèáèïâà è âè êàçâà, ÷å |
| 903 | òúðñåíåòî å "ïðîâàëåíî" (failing). C-g ñúùî ïðåêðàòÿâà òúðñåíåòî. | 903 | òúðñåíåòî å "ïðîâàëåíî" (failing). C-g ñúùî ïðåêðàòÿâà òúðñåíåòî. |
| 904 | 904 | ||
| 905 | ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå | 905 | ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå |
| 906 | íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Åìàêñ. Òîâà ïîêàçâà, ÷å | 906 | íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Emacs. Òîâà ïîêàçâà, ÷å |
| 907 | "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà" | 907 | "ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà" |
| 908 | (flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Åìàêñ. Çà äà | 908 | (flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Emacs. Çà äà |
| 909 | ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî | 909 | ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî |
| 910 | âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental | 910 | âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental |
| 911 | Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè | 911 | Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè |
| 912 | "ñïîñîáíîñò". | 912 | "ñïîñîáíîñò". |
| 913 | 913 | ||
| 914 | Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå | 914 | Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå |
| @@ -930,9 +930,9 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà | |||
| 930 | 930 | ||
| 931 | 931 | ||
| 932 | * ÌÍÎÆÅÑÒÂÎ ÏÐÎÇÎÐÖÈ | 932 | * ÌÍÎÆÅÑÒÂÎ ÏÐÎÇÎÐÖÈ |
| 933 | ---------------- | 933 | -------------------- |
| 934 | 934 | ||
| 935 | Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Åìàêñ å òàçè, ÷å ìîæå äà | 935 | Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Emacs å òàçè, ÷å ìîæå äà |
| 936 | ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå. | 936 | ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå. |
| 937 | 937 | ||
| 938 | >> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å | 938 | >> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å |
| @@ -943,7 +943,7 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà | |||
| 943 | îñòàâà íà ïî-ãîðíèÿ ïðîçîðåö. | 943 | îñòàâà íà ïî-ãîðíèÿ ïðîçîðåö. |
| 944 | 944 | ||
| 945 | >> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå | 945 | >> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå |
| 946 | èñòèíñêè êëàâèø META, âúâåäåòå ESC C-v.) | 946 | èñòèíñêè êëàâèø META, âúâåäåòå <ESC> C-v.) |
| 947 | 947 | ||
| 948 | >> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå | 948 | >> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå |
| 949 | êóðñîðà â äîëíèÿ ïðîçîðåö. | 949 | êóðñîðà â äîëíèÿ ïðîçîðåö. |
| @@ -972,10 +972,10 @@ C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META, | |||
| 972 | ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî | 972 | ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî |
| 973 | ñòå âúâåëè. | 973 | ñòå âúâåëè. |
| 974 | 974 | ||
| 975 | Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå ESC âìåñòî òîâà, ðåäúò | 975 | Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå <ESC> âìåñòî òîâà, ðåäúò |
| 976 | èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå ESC, ïîñëåäâàí îò CONTROL-v, çàùîòî | 976 | èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå <ESC>, ïîñëåäâàí îò CONTROL-v, |
| 977 | CONTROL-ESC v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí | 977 | çàùîòî CONTROL-<ESC> v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî <ESC> å |
| 978 | çíàê, à íå ìîäèôèêàòîð. | 978 | ñîáñòâåí çíàê, à íå ìîäèôèêàòîð. |
| 979 | 979 | ||
| 980 | >> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö. | 980 | >> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö. |
| 981 | 981 | ||
| @@ -1008,13 +1008,13 @@ CONTROL-ESC v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí | |||
| 1008 | íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî | 1008 | íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî |
| 1009 | (Fundamental). | 1009 | (Fundamental). |
| 1010 | 1010 | ||
| 1011 | Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå ESC ESC | 1011 | Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå <ESC> |
| 1012 | ESC. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ èçïîëçâàòå çà | 1012 | <ESC> <ESC>. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ |
| 1013 | ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà äà ñå ìàõíåòå | 1013 | èçïîëçâàòå çà ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà |
| 1014 | îò ìèíèáóôåðà. | 1014 | äà ñå ìàõíåòå îò ìèíèáóôåðà. |
| 1015 | 1015 | ||
| 1016 | >> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå ESC ESC | 1016 | >> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå <ESC> <ESC> |
| 1017 | ESC, çà äà èçëåçåòå. | 1017 | <ESC>, çà äà èçëåçåòå. |
| 1018 | 1018 | ||
| 1019 | Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà | 1019 | Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà |
| 1020 | ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà | 1020 | ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà |
| @@ -1025,16 +1025,16 @@ ESC. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ èçïîëçâàòå çà | |||
| 1025 | ---------------------------------- | 1025 | ---------------------------------- |
| 1026 | 1026 | ||
| 1027 |  òîâà âúâåäåíèå ñå îïèòàõìå äà îñèãóðèì äîñòàòú÷íî èíôîðìàöèÿ, çà äà | 1027 |  òîâà âúâåäåíèå ñå îïèòàõìå äà îñèãóðèì äîñòàòú÷íî èíôîðìàöèÿ, çà äà |
| 1028 | çàïî÷íåòå äà èçïîëçâàòå Åìàêñ. Èìà òîëêîâà ìíîãî îùå â Åìàêñ, ÷å íå å | 1028 | çàïî÷íåòå äà èçïîëçâàòå Emacs. Èìà òîëêîâà ìíîãî îùå â Emacs, ÷å íå å |
| 1029 | âúçìîæíî òî äà áúäå îáÿñíåíî âñè÷êîòî òóê. Îáà÷å ìîæå äà ïîèñêàòå äà | 1029 | âúçìîæíî òî äà áúäå îáÿñíåíî âñè÷êîòî òóê. Îáà÷å ìîæå äà ïîèñêàòå äà |
| 1030 | íàó÷èòå ïîâå÷å çà Åìàêñ, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè | 1030 | íàó÷èòå ïîâå÷å çà Emacs, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè |
| 1031 | ñïîñîáíîñòè. Åìàêñ èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Åìàêñ | 1031 | ñïîñîáíîñòè. Emacs èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Emacs |
| 1032 | êîìàíäèòå. Òåçè "ïîìîùíè" êîìàíäè âñè÷êè çàïî÷âàò ñúñ çíàêà | 1032 | êîìàíäèòå. Òåçè "ïîìîùíè" êîìàíäè âñè÷êè çàïî÷âàò ñúñ çíàêà |
| 1033 | CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù". | 1033 | CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù". |
| 1034 | 1034 | ||
| 1035 | Çà äà èçïîëçâàòå âúçìîæíîñòèòå íà òàçè ïîìîù, âúâåäåòå çíàêà C-h è | 1035 | Çà äà èçïîëçâàòå âúçìîæíîñòèòå íà òàçè ïîìîù, âúâåäåòå çíàêà C-h è |
| 1036 | ñëåä òîâà çíàêà, êàçâàù êàêúâ âèä ïîìîù èñêàòå. Àêî ÍÀÈÑÒÈÍÀ ñòå ñå | 1036 | ñëåä òîâà çíàêà, êàçâàù êàêúâ âèä ïîìîù èñêàòå. Àêî ÍÀÈÑÒÈÍÀ ñòå ñå |
| 1037 | èçãóáèëè, âúâåäåòå C-h ? è Åìàêñ ùå âè êàæå ñ êàêâî ìîæå äà âè | 1037 | èçãóáèëè, âúâåäåòå C-h ? è Emacs ùå âè êàæå ñ êàêâî ìîæå äà âè |
| 1038 | ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù, | 1038 | ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù, |
| 1039 | ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå. | 1039 | ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå. |
| 1040 | 1040 | ||
| @@ -1046,7 +1046,7 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù". | |||
| 1046 | 1046 | ||
| 1047 | Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è | 1047 | Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è |
| 1048 | êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà; | 1048 | êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà; |
| 1049 | òîãàâà Åìàêñ ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà. | 1049 | òîãàâà Emacs ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà. |
| 1050 | 1050 | ||
| 1051 | >> Type C-h c C-p. | 1051 | >> Type C-h c C-p. |
| 1052 | 1052 | ||
| @@ -1056,7 +1056,7 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù". | |||
| 1056 | (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä) | 1056 | (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä) |
| 1057 | 1057 | ||
| 1058 | Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà". Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò | 1058 | Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà". Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò |
| 1059 | íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Åìàêñ. Íî òúé êàòî èìåíàòà | 1059 | íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Emacs. Íî òúé êàòî èìåíàòà |
| 1060 | íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå | 1060 | íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå |
| 1061 | ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè | 1061 | ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè |
| 1062 | ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè. | 1062 | ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè. |
| @@ -1070,7 +1070,7 @@ c. | |||
| 1070 | >> Âúâåäåòå C-h k C-p. | 1070 | >> Âúâåäåòå C-h k C-p. |
| 1071 | 1071 | ||
| 1072 | Òîâà èçâåæäà äîêóìåíòàöèÿòà íà ôóíêöèÿòà, êàêòî è íåéíîòî èìå, â | 1072 | Òîâà èçâåæäà äîêóìåíòàöèÿòà íà ôóíêöèÿòà, êàêòî è íåéíîòî èìå, â |
| 1073 | îòäåëåí Åìàêñ ïðîçîðåö. Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà | 1073 | îòäåëåí Emacs ïðîçîðåö. Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà |
| 1074 | ìàõíåòå ïîìîùíèÿ òåêñò. Íå å íóæíî äà ïðàâèòå òîâà òî÷íî ñåãà. Ìîæå | 1074 | ìàõíåòå ïîìîùíèÿ òåêñò. Íå å íóæíî äà ïðàâèòå òîâà òî÷íî ñåãà. Ìîæå |
| 1075 | äà ðåäàêòèðàòå, äîêàòî ñå îáðúùàòå êúì ïîìîùíèÿ òåêñò çà ñïðàâêà, è | 1075 | äà ðåäàêòèðàòå, äîêàòî ñå îáðúùàòå êúì ïîìîùíèÿ òåêñò çà ñïðàâêà, è |
| 1076 | ñëåä òîâà äà âúâåäåòå C-x 1. | 1076 | ñëåä òîâà äà âúâåäåòå C-x 1. |
| @@ -1081,14 +1081,14 @@ c. | |||
| 1081 | ôóíêöèÿòà. | 1081 | ôóíêöèÿòà. |
| 1082 | 1082 | ||
| 1083 | >> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>. | 1083 | >> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>. |
| 1084 | Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Åìàêñ çíàå çà ôóíêöèÿòà, | 1084 | Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Emacs çíàå çà ôóíêöèÿòà, |
| 1085 | êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p. | 1085 | êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p. |
| 1086 | 1086 | ||
| 1087 | Ïîäîáíà êîìàíäà, C-h v, èçâåæäà äîêóìåíòàöèÿòà íà ïðîìåíëèâèòå, êîèòî | 1087 | Ïîäîáíà êîìàíäà, C-h v, èçâåæäà äîêóìåíòàöèÿòà íà ïðîìåíëèâèòå, êîèòî |
| 1088 | ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Åìàêñ. Òðÿáâà äà | 1088 | ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Emacs. Òðÿáâà äà |
| 1089 | âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Åìàêñ âè ïîäñêàæå òîâà. | 1089 | âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Emacs âè ïîäñêàæå òîâà. |
| 1090 | 1090 | ||
| 1091 | C-h a Êîìàíäà Àïðîïîñ. Âúâåäåòå êëþ÷îâà äóìà è Åìàêñ ùå | 1091 | C-h a Êîìàíäà Àïðîïîñ. Âúâåäåòå êëþ÷îâà äóìà è Emacs ùå |
| 1092 | ïîêàæå ñïèñúê íà âñè÷êè êîìàíäè, ÷èåòî èìå ñúäúðæà | 1092 | ïîêàæå ñïèñúê íà âñè÷êè êîìàíäè, ÷èåòî èìå ñúäúðæà |
| 1093 | òàçè êëþ÷îâà äóìà. Òåçè êîìàíäè ìîãàò âñè÷êè äà áúäàò | 1093 | òàçè êëþ÷îâà äóìà. Òåçè êîìàíäè ìîãàò âñè÷êè äà áúäàò |
| 1094 | èçâèêàíè ÷ðåç META-x. Çà íÿêîè êîìàíäè êîìàíäàòà | 1094 | èçâèêàíè ÷ðåç META-x. Çà íÿêîè êîìàíäè êîìàíäàòà |
| @@ -1111,18 +1111,18 @@ C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî find-file. | |||
| 1111 | ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà | 1111 | ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà |
| 1112 | ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà | 1112 | ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà |
| 1113 | ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà | 1113 | ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà |
| 1114 | ÷åòåòå ðúêîâîäñòâîòî íà Åìàêñ. Àêî íèêîãà ïðåäè òîâà | 1114 | ÷åòåòå ðúêîâîäñòâîòî íà Emacs. Àêî íèêîãà ïðåäè òîâà |
| 1115 | íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Åìàêñ ùå âêëþ÷è | 1115 | íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Emacs ùå âêëþ÷è |
| 1116 | âúâåäåíèå âúâ âúçìîæíîñòèòå íà ðåæèìà Èíôî. Âåäíúæ | 1116 | âúâåäåíèå âúâ âúçìîæíîñòèòå íà ðåæèìà Èíôî. Âåäíúæ |
| 1117 | ñëåä êàòî ñòå ïðåìèíàëè òîâà âúâåäåíèå, òðÿáâà äà ñå | 1117 | ñëåä êàòî ñòå ïðåìèíàëè òîâà âúâåäåíèå, òðÿáâà äà ñå |
| 1118 | êîíñóëòèðàòå ñ Åìàêñ Èíôî ðúêîâîäñòâîòî êàòî âàøà | 1118 | êîíñóëòèðàòå ñ Emacs Èíôî ðúêîâîäñòâîòî êàòî âàøà |
| 1119 | îñíîâíà äîêóìåíòàöèÿ. | 1119 | îñíîâíà äîêóìåíòàöèÿ. |
| 1120 | 1120 | ||
| 1121 | 1121 | ||
| 1122 | * ÎÙÅ ÂÚÇÌÎÆÍÎÑÒÈ | 1122 | * ÎÙÅ ÂÚÇÌÎÆÍÎÑÒÈ |
| 1123 | ----------------- | 1123 | ----------------- |
| 1124 | 1124 | ||
| 1125 | Ìîæå äà íàó÷èòå ïîâå÷å çà Åìàêñ ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè | 1125 | Ìîæå äà íàó÷èòå ïîâå÷å çà Emacs ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè |
| 1126 | êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå | 1126 | êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå |
| 1127 | F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà | 1127 | F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà |
| 1128 | äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî | 1128 | äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî |
| @@ -1130,26 +1130,26 @@ F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà | |||
| 1130 | 1130 | ||
| 1131 | Äîâúðøâàíåòî å íà÷èí äà èçáÿãâàòå íåíóæíî ïèñàíå. Íàïðèìåð, àêî | 1131 | Äîâúðøâàíåòî å íà÷èí äà èçáÿãâàòå íåíóæíî ïèñàíå. Íàïðèìåð, àêî |
| 1132 | èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b | 1132 | èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b |
| 1133 | *M<Tab> è Åìàêñ ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà, | 1133 | *M<Tab> è Emacs ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà, |
| 1134 | äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî | 1134 | äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî |
| 1135 | å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà "Äîâúðøâàíå" | 1135 | å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà "Äîâúðøâàíå" |
| 1136 | ("Completion"). | 1136 | ("Completion"). |
| 1137 | 1137 | ||
| 1138 | Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî | 1138 | Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî |
| 1139 | âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê, | 1139 | âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê, |
| 1140 | äà ïîñåùàâàòå, ïðåèìåíóâàòå, èçòðèâàòå è èçîáùî äåéñòâàòå âúðõó | 1140 | äà ïîñåùàâàòå, ïðåèìåíóâàòå, èçòðèâàòå è èçîáùî äåéñòâàòå âúðõó |
| 1141 | ôàéëîâåòå. Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà | 1141 | ôàéëîâåòå. Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà |
| 1142 | "Dired". | 1142 | "Dired". |
| 1143 | 1143 | ||
| 1144 | Ðúêîâîäñòâîòî íà Åìàêñ îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà | 1144 | Ðúêîâîäñòâîòî íà Emacs îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà |
| 1145 | ðåäàêòîðà. | 1145 | ðåäàêòîðà. |
| 1146 | 1146 | ||
| 1147 | 1147 | ||
| 1148 | * ÇÀÊËÞ×ÅÍÈÅ | 1148 | * ÇÀÊËÞ×ÅÍÈÅ |
| 1149 | ------------ | 1149 | ------------ |
| 1150 | 1150 | ||
| 1151 | Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Åìàêñ, èçïîëçâàéòå C-x C-c. | 1151 | Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Emacs, èçïîëçâàéòå C-x C-c. |
| 1152 | Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Åìàêñ | 1152 | Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Emacs |
| 1153 | ïî-êúñíî, èçïîëçâàéòå C-z. | 1153 | ïî-êúñíî, èçïîëçâàéòå C-z. |
| 1154 | 1154 | ||
| 1155 | Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè | 1155 | Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè |
| @@ -1160,17 +1160,17 @@ Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî | |||
| 1160 | * ÊÎÏÈÐÀÍÅ | 1160 | * ÊÎÏÈÐÀÍÅ |
| 1161 | ---------- | 1161 | ---------- |
| 1162 | 1162 | ||
| 1163 | Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Åìàêñ, | 1163 | Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Emacs, |
| 1164 | çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Åìàêñ. | 1164 | çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Emacs. |
| 1165 | 1165 | ||
| 1166 | Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è ÃÍÓ Åìàêñ, å çàùèòåíà ñ àâòîðñêè | 1166 | Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è GNU Emacs, å çàùèòåíà ñ àâòîðñêè |
| 1167 | ïðàâà è èäâà ñ ðàçðåøåíèå äà ðàçïðîñòðàíÿâàòå êîïèÿ ïðè ñëåäíèòå | 1167 | ïðàâà è èäâà ñ ðàçðåøåíèå äà ðàçïðîñòðàíÿâàòå êîïèÿ ïðè ñëåäíèòå |
| 1168 | óñëîâèÿ: | 1168 | óñëîâèÿ: |
| 1169 | 1169 | ||
| 1170 | This version of the tutorial, like GNU Emacs, is copyrighted, and | 1170 | This version of the tutorial, like GNU Emacs, is copyrighted, and |
| 1171 | comes with permission to distribute copies on certain conditions: | 1171 | comes with permission to distribute copies on certain conditions: |
| 1172 | 1172 | ||
| 1173 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation | 1173 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation |
| 1174 | 1174 | ||
| 1175 | Permission is granted to anyone to make or distribute verbatim copies | 1175 | Permission is granted to anyone to make or distribute verbatim copies |
| 1176 | of this document as received, in any medium, provided that the | 1176 | of this document as received, in any medium, provided that the |
| @@ -1183,8 +1183,8 @@ Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation | |||
| 1183 | under the above conditions, provided also that they | 1183 | under the above conditions, provided also that they |
| 1184 | carry prominent notices stating who last altered them. | 1184 | carry prominent notices stating who last altered them. |
| 1185 | 1185 | ||
| 1186 | Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Åìàêñ ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ. | 1186 | Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Emacs ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ. |
| 1187 | Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà ÃÍÓ Åìàêñ íà | 1187 | Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà GNU Emacs íà |
| 1188 | ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå | 1188 | ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå |
| 1189 | ("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð! | 1189 | ("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð! |
| 1190 | 1190 | ||
diff --git a/etc/TUTORIAL.cn b/etc/TUTORIAL.cn index cb3e93d956a..1b30b6e909a 100644 --- a/etc/TUTORIAL.cn +++ b/etc/TUTORIAL.cn | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ÄúÕýÔÚÔĶÁ Emacs ¿ìËÙÖ¸ÄÏ£¨ Emacs tutorial £©¡£Çë¼ûҳβÓйظ´ÖÆÌõ¼þ¡£ | 1 | Emacs ¿ìËÙÖ¸ÄÏ. |
| 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Emacs Ö¸Áîͨ³£°üº¬ÓÐ CONTROL ¼ü£¨ÓÐʱºòÒÔ CTRL »ò CTL À´±êʾ£©»òÊÇ | 4 | Emacs Ö¸Áîͨ³£°üº¬ÓÐ CONTROL ¼ü£¨ÓÐʱºòÒÔ CTRL »ò CTL À´±êʾ£©»òÊÇ |
diff --git a/etc/TUTORIAL.cs b/etc/TUTORIAL.cs index 525e481d3db..f8945b89e36 100644 --- a/etc/TUTORIAL.cs +++ b/etc/TUTORIAL.cs | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | tutoriál k Emacsu. | ||
| 1 | Copyright (c) 1985 Free Software Foundation, Inc; podmínky viz na konci. | 2 | Copyright (c) 1985 Free Software Foundation, Inc; podmínky viz na konci. |
| 2 | Do èe¹tiny pøelo¾il Milan Zamazal <pdm@zamazal.org>. | 3 | Do èe¹tiny pøelo¾il Milan Zamazal <pdm@zamazal.org>. |
| 3 | 4 | ||
diff --git a/etc/TUTORIAL.es b/etc/TUTORIAL.es index e4850649c7d..ed55cc5ca41 100644 --- a/etc/TUTORIAL.es +++ b/etc/TUTORIAL.es | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | Usted esta viendo el tutorial de Emacs. Vea al final las condiciones | 1 | Tutorial de Emacs. Vea al final las condiciones de copiado. |
| 2 | de copiado. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. |
| 3 | Foundation. | ||
| 4 | 3 | ||
| 5 | Generalmente los comandos de Emacs involucran la tecla CONTROL | 4 | Generalmente los comandos de Emacs involucran la tecla CONTROL |
| 6 | (algunas veces llamada CTRL O CTL) o la tecla meta (algunas veces | 5 | (algunas veces llamada CTRL O CTL) o la tecla meta (algunas veces |
diff --git a/etc/TUTORIAL.ja b/etc/TUTORIAL.ja index ad25a0a31cc..683a4f485c8 100644 --- a/etc/TUTORIAL.ja +++ b/etc/TUTORIAL.ja | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | $B$"$J$?$,8=:_8+$F$$$k$N$O(B Emacs $BF~Lg%,%$%I$G$9!#%U%!%$%k:G8e$r;2>H$N$3$H!#(B | 1 | Emacs $BF~Lg%,%$%I(B. |
| 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Emacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K(B | 4 | Emacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K(B |
diff --git a/etc/TUTORIAL.ko b/etc/TUTORIAL.ko index 72782dc330a..8e94db3c658 100644 --- a/etc/TUTORIAL.ko +++ b/etc/TUTORIAL.ko | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | $(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B. | ||
| 1 | $(C@z@[1G(B (c) 1985, 2001 Free Software Foundation, Inc; $(C3!?!4B(B $(C:9;g(B $(CA60G@L(B | 2 | $(C@z@[1G(B (c) 1985, 2001 Free Software Foundation, Inc; $(C3!?!4B(B $(C:9;g(B $(CA60G@L(B |
| 2 | $(C@V=@4O4Y(B. $(CAv1](B $(C@P0m(B $(C@V4B(B $(C@L(B $(C1[@:(B $(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B. | 3 | $(C@V=@4O4Y(B. $(CAv1](B $(C@P0m(B $(C@V4B(B $(C@L(B $(C1[@:(B $(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B. |
| 3 | 4 | ||
diff --git a/etc/TUTORIAL.nl b/etc/TUTORIAL.nl index b4849dd73a1..6b6a20a1bba 100644 --- a/etc/TUTORIAL.nl +++ b/etc/TUTORIAL.nl | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | Je leest nu de Emacs-inleiding. De kopieervoorwaarden staan onderaan. | 1 | Emacs-inleiding. De kopieervoorwaarden staan onderaan. |
| 2 | Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation | 2 | Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation |
| 3 | 3 | ||
| 4 | De meeste Emacs-commando's gebruiken de CONTROL-toets (soms CTRL of CTL | 4 | De meeste Emacs-commando's gebruiken de CONTROL-toets (soms CTRL of CTL |
diff --git a/etc/TUTORIAL.pl b/etc/TUTORIAL.pl index 501df8f6521..c3bcb8047c8 100644 --- a/etc/TUTORIAL.pl +++ b/etc/TUTORIAL.pl | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | Czytasz w³a¶nie krótki samouczek Emacsa. Copyright (c) 1985, 2001 | 1 | krótki samouczek Emacsa. Copyright (c) 1985, 2001 |
| 2 | Free Software Foundation, Inc. Szczegó³y na koñcu pliku. | 2 | Free Software Foundation, Inc. Szczegó³y na koñcu pliku. |
| 3 | 3 | ||
| 4 | Polecenia Emacsa wymagaj± na ogó³ wci¶niêcia klawisza CONTROL (oznaczanego | 4 | Polecenia Emacsa wymagaj± na ogó³ wci¶niêcia klawisza CONTROL (oznaczanego |
diff --git a/etc/TUTORIAL.pt_BR b/etc/TUTORIAL.pt_BR index 58101c28edb..a7a50804ca0 100644 --- a/etc/TUTORIAL.pt_BR +++ b/etc/TUTORIAL.pt_BR | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | Copyright (c) 2004 Free Software Foundation, Inc; Veja no fim as | 1 | Tutorial do Emacs. Veja no fim as condições para cópia. |
| 2 | condições. | 2 | Copyright (c) 2004, 2005 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezes | 4 | Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezes |
| 5 | nomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ou | 5 | nomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ou |
| @@ -130,8 +130,8 @@ jeito na direção contraria. | |||
| 130 | você pode observar a ação do M-f e M-b de varias lugares dentro e no | 130 | você pode observar a ação do M-f e M-b de varias lugares dentro e no |
| 131 | meio de palavras. | 131 | meio de palavras. |
| 132 | 132 | ||
| 133 | Observe o paralelismo entre C-f e C-b em uma mão, e M-f e M-b na | 133 | Observe o paralelismo entre C-f e C-b por um lado, e M-f e M-b por outro |
| 134 | outra. Muito freqüentemente os caracteres Meta são usados para operações | 134 | lado. Muito freqüentemente os caracteres Meta são usados para operações |
| 135 | relacionadas com as unidades definidas pela linguagem (palavras, | 135 | relacionadas com as unidades definidas pela linguagem (palavras, |
| 136 | sentenças, parágrafos), enquanto caracteres Control operam nas unidades | 136 | sentenças, parágrafos), enquanto caracteres Control operam nas unidades |
| 137 | básicas que são independente do que você está editando (caracteres, | 137 | básicas que são independente do que você está editando (caracteres, |
| @@ -859,7 +859,7 @@ manual do Emacs para uma dica de como lhe dar com esse "recurso". | |||
| 859 | 859 | ||
| 860 | Se você estiver no meio de uma pesquisa incremental e digitar <Delete>, | 860 | Se você estiver no meio de uma pesquisa incremental e digitar <Delete>, |
| 861 | você percebera que o ultimo caractere da pesquisa será apagado e a | 861 | você percebera que o ultimo caractere da pesquisa será apagado e a |
| 862 | pesquisa voltara para o ultimo lugar da pesquisa. Por instancia, imagine | 862 | pesquisa voltara para o ultimo lugar da pesquisa. Por exemplo, imagine |
| 863 | que você tenha digitado "c", para pesquisar a primeira ocorrência de | 863 | que você tenha digitado "c", para pesquisar a primeira ocorrência de |
| 864 | "c". Agora se você digitar "u", o cursor ira mover para a primeira | 864 | "c". Agora se você digitar "u", o cursor ira mover para a primeira |
| 865 | ocorrência de "cu". Agora digite <Delete>. Isso ira apagar o "u" da | 865 | ocorrência de "cu". Agora digite <Delete>. Isso ira apagar o "u" da |
diff --git a/etc/TUTORIAL.ro b/etc/TUTORIAL.ro index 670c39bc454..459d3726cee 100644 --- a/etc/TUTORIAL.ro +++ b/etc/TUTORIAL.ro | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | tutorialului de Emacs. | ||
| 1 | Copyright (c) 1998 Free Software Foundation -*-coding: latin-2;-*- | 2 | Copyright (c) 1998 Free Software Foundation -*-coding: latin-2;-*- |
| 2 | Traducere din englezã de Tudor Hulubei <tudor@gnu.org>. | 3 | Traducere din englezã de Tudor Hulubei <tudor@gnu.org>. |
| 3 | Mulþumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi ºi sugestii. | 4 | Mulþumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi ºi sugestii. |
diff --git a/etc/TUTORIAL.ru b/etc/TUTORIAL.ru index 84f4b4c6c82..f1deaf6c89f 100644 --- a/etc/TUTORIAL.ru +++ b/etc/TUTORIAL.ru | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ÷Ù ÞÉÔÁÅÔÅ ÕÞÅÂÎÉË Emacs. õÓÌÏ×ÉÑ ËÏÐÉÒÏ×ÁÎÉÑ × ËÏÎÃÅ ÆÁÊÌÁ. | 1 | ÕÞÅÂÎÉË Emacs. |
| 2 | Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc. | 2 | Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | äÌÑ ÕÐÒÁ×ÌÅÎÉÑ Emacs ÏÂÙÞÎÏ ÉÓÐÏÌØÚÕÅÔÓÑ ËÌÀÞ (ÓÏÞÅÔÁÎÉÅ ËÌÁ×ÉÛ ËÌÁ×ÉÁÔÕÒÙ | 4 | äÌÑ ÕÐÒÁ×ÌÅÎÉÑ Emacs ÏÂÙÞÎÏ ÉÓÐÏÌØÚÕÅÔÓÑ ËÌÀÞ (ÓÏÞÅÔÁÎÉÅ ËÌÁ×ÉÛ ËÌÁ×ÉÁÔÕÒÙ |
diff --git a/etc/TUTORIAL.sk b/etc/TUTORIAL.sk index f294088aba9..465a3805a62 100644 --- a/etc/TUTORIAL.sk +++ b/etc/TUTORIAL.sk | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | tútorial k Emacsu. | ||
| 1 | Copyright (c) 1985 Free Software Foundation, Inc; podmienky pozri na konci. | 2 | Copyright (c) 1985 Free Software Foundation, Inc; podmienky pozri na konci. |
| 2 | Do èe¹tiny prelo¾il Milan Zamazal <pdm@zamazal.org>, do slovenèiny Miroslav | 3 | Do èe¹tiny prelo¾il Milan Zamazal <pdm@zamazal.org>, do slovenèiny Miroslav |
| 3 | Va¹ko <zemiak@zoznam.sk>. | 4 | Va¹ko <zemiak@zoznam.sk>. |
diff --git a/etc/TUTORIAL.sv b/etc/TUTORIAL.sv index 65d1548c378..e4a86cabada 100644 --- a/etc/TUTORIAL.sv +++ b/etc/TUTORIAL.sv | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | Detta är den Svenska användarhandledningen till Emacs. I slutet finns | 1 | Emacs användarhandledning. I slutet finns kopieringsvillkoren. |
| 2 | kopieringsvillkoren. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software |
| 3 | Software Foundation, Inc. | 3 | Foundation, Inc. |
| 4 | 4 | ||
| 5 | Emacs-kommandon innebär ofta användning av kontrolltangenten (vanligen | 5 | Emacs-kommandon innebär ofta användning av kontrolltangenten (vanligen |
| 6 | märkt CTRL eller CTL) eller META-tangenten (på vissa tangentbord märkt | 6 | märkt CTRL eller CTL) eller META-tangenten (på vissa tangentbord märkt |
| @@ -49,6 +49,10 @@ Följande kommandon är bra för att se hela skärmbilder: | |||
| 49 | Hitta markören igen och notera att det är samma text som står kring | 49 | Hitta markören igen och notera att det är samma text som står kring |
| 50 | markören nu. | 50 | markören nu. |
| 51 | 51 | ||
| 52 | Du kan också använda PageUp och PageDn tangenterna, om din terminal | ||
| 53 | har dem, för att flytta en hel skärmbild åt gången, men du redigerar | ||
| 54 | effektivare om du använder C-v och M-v. | ||
| 55 | |||
| 52 | 56 | ||
| 53 | * GRUNDLÄGGANDE MARKÖRRÖRELSER | 57 | * GRUNDLÄGGANDE MARKÖRRÖRELSER |
| 54 | ------------------------------ | 58 | ------------------------------ |
| @@ -56,12 +60,10 @@ Följande kommandon är bra för att se hela skärmbilder: | |||
| 56 | Att flytta sig från skärmbild till skärmbild kan vara bra, men hur | 60 | Att flytta sig från skärmbild till skärmbild kan vara bra, men hur |
| 57 | förflyttar man sig till en speciell plats på skärmen? | 61 | förflyttar man sig till en speciell plats på skärmen? |
| 58 | 62 | ||
| 59 | Det finns flera sätt att göra detta på. Det vanligaste är att använda | 63 | Det finns flera sätt att göra detta. Du kan använda piltangenterna, |
| 60 | kommandona C-p, C-b, C-f och C-n. Vart och ett av dessa kommandon | 64 | men det är mer effektivt att ha händerna i standardläget och använda |
| 61 | flyttar markören en rad eller en kolumn i en bestämd riktning på | 65 | kommandona C-p, C-b, C-f och C-n. Dessa tecken är likvärdiga med de |
| 62 | skärmen. Här visas dessa fyra kommandon och i vilken riktning de | 66 | fyra piltangenterna. Så här: |
| 63 | flyttar markören: | ||
| 64 | |||
| 65 | 67 | ||
| 66 | Föregående rad, C-p | 68 | Föregående rad, C-p |
| 67 | : | 69 | : |
| @@ -75,11 +77,10 @@ flyttar markören: | |||
| 75 | och C-p. Använd sedan C-l för att centrera diagrammet på | 77 | och C-p. Använd sedan C-l för att centrera diagrammet på |
| 76 | skärmbilden. | 78 | skärmbilden. |
| 77 | 79 | ||
| 78 | Detta är säkert lite enklare att förstå om du tänker på dessa | 80 | Detta är enklare att komma ihåg om du tänker på dessa förkortningar: P |
| 79 | förkortningar: P för föregående (previous), N för nästa (next), B för | 81 | för föregående (previous), N för nästa (next), B för bakåt (backward) |
| 80 | bakåt (backward) och F för framåt (forward). Detta är de grundläggande | 82 | och F för framåt (forward). Dessa är de grundläggande kommandona för |
| 81 | kommandona för att flytta markören och du kommer säkert att använda | 83 | att flytta markören och du kommer att använda dem hela tiden. |
| 82 | dem hela tiden, så det är en stor fördel om du lär dig dem nu. | ||
| 83 | 84 | ||
| 84 | >> Gör några C-n så att du kommer ned till den här raden. | 85 | >> Gör några C-n så att du kommer ned till den här raden. |
| 85 | 86 | ||
| @@ -309,17 +310,23 @@ texten. Tecken som du kan se, så som A, 7, *, etc. tolkas som text och | |||
| 309 | sätts in direkt. Skriv <Return> (retur-tangenten) för att sätta in en | 310 | sätts in direkt. Skriv <Return> (retur-tangenten) för att sätta in en |
| 310 | radbrytning. | 311 | radbrytning. |
| 311 | 312 | ||
| 312 | Du kan radera det sista tecknet du skrev genom att trycka <Delete>. | 313 | Du kan radera det sista tecknet du skrev genom att trycka <Delback>. |
| 313 | <Delete> är en tangent på tangentbordet, som kan vara märkt "Del". I | 314 | <Delback> är en tangent på tangentbordet -- samma som du normalt |
| 314 | några fall fungerar också "backsteg" som <Delete> men inte alltid! | 315 | använder utanför Emacs för att ta bort det senaste tecknet du skrivit. |
| 316 | Det är vanligen en stor tangent några rader ovanför retur-tangenten, | ||
| 317 | och den är vanligtvis märkt "Delete, "Del" eller "Backspace". | ||
| 315 | 318 | ||
| 316 | Generellt raderar <Delete> tecknet precis före den aktuella | 319 | Om den stora tangenten är märkt med "Backspace" så är det den du |
| 320 | använder för <Delback>. Det kan finnas en annan tangent som är märkt | ||
| 321 | med "Delete" men det är inte <Delback>. | ||
| 322 | |||
| 323 | Generellt raderar <Delback> tecknet precis före den aktuella | ||
| 317 | markörspositionen. | 324 | markörspositionen. |
| 318 | 325 | ||
| 319 | >> Gör detta nu: Skriv in några tecken och ta bort dem genom att | 326 | >> Gör detta nu: Skriv in några tecken och ta bort dem genom att |
| 320 | använda <Delete>. Var inte rädd för att skriva i den här filen, du | 327 | använda <Delback>. Var inte rädd för att skriva i den här filen, |
| 321 | kommer inte att kunna förändra originalet till vägledningen. Detta | 328 | du kommer inte att kunna förändra originalet till vägledningen. |
| 322 | är bara en lokal kopia. | 329 | Detta är bara en lokal kopia. |
| 323 | 330 | ||
| 324 | När en rad blir för lång för att rymmas på en skärmbredd så fortsätter | 331 | När en rad blir för lång för att rymmas på en skärmbredd så fortsätter |
| 325 | den på raden under. Ett bakstreck ("\") (eller om du kör under ett | 332 | den på raden under. Ett bakstreck ("\") (eller om du kör under ett |
| @@ -330,7 +337,7 @@ indikerar att raden fortsätter. | |||
| 330 | fortsätt att skriva lite till. Du kommer då att se hur | 337 | fortsätt att skriva lite till. Du kommer då att se hur |
| 331 | fortsättningstecknet ser ut. | 338 | fortsättningstecknet ser ut. |
| 332 | 339 | ||
| 333 | >> Använd <Delete> för att radera texten tills raden ryms på en | 340 | >> Använd <Delback> för att radera texten tills raden ryms på en |
| 334 | skärmbredd igen. Fortsättningstecknet kommer då att försvinna. | 341 | skärmbredd igen. Fortsättningstecknet kommer då att försvinna. |
| 335 | 342 | ||
| 336 | Du kan radera radbrytning precis som andra tecken. Genom att radera | 343 | Du kan radera radbrytning precis som andra tecken. Genom att radera |
| @@ -338,7 +345,7 @@ radbrytningen mellan två rader slås dessa samman till en. Om | |||
| 338 | resultatet av denna sammanslagning blir för stor för att passa inom en | 345 | resultatet av denna sammanslagning blir för stor för att passa inom en |
| 339 | skärmbredd, så kommer den att visas med ett fortsättningstecken. | 346 | skärmbredd, så kommer den att visas med ett fortsättningstecken. |
| 340 | 347 | ||
| 341 | >> Flytta markören till början av en rad och tryck <Delete>. | 348 | >> Flytta markören till början av en rad och tryck <Delback>. |
| 342 | Detta kommer att klistra ihop raden med raden över. | 349 | Detta kommer att klistra ihop raden med raden över. |
| 343 | 350 | ||
| 344 | >> Tryck <Return> för att sätta in radbrytningen du tog bort. | 351 | >> Tryck <Return> för att sätta in radbrytningen du tog bort. |
| @@ -353,21 +360,21 @@ Du har nu lärt dig de mest grundläggande sätten att skriva något i | |||
| 353 | Emacs och att rätta fel. Du kan radera ord och rader också. Här är en | 360 | Emacs och att rätta fel. Du kan radera ord och rader också. Här är en |
| 354 | översikt över kommandon för radering: | 361 | översikt över kommandon för radering: |
| 355 | 362 | ||
| 356 | <Delete> raderar tecknet som står precis före markören | 363 | <Delback> Raderar tecknet som står precis före markören |
| 357 | C-d raderar tecknet som står precis under markören | 364 | C-d Raderar tecknet som står precis under markören |
| 358 | 365 | ||
| 359 | M-<Delete> raderar ordet precis före markören | 366 | M-<Delback> Raderar ordet precis före markören |
| 360 | M-d raderar ordet precis efter markören | 367 | M-d Raderar ordet precis efter markören |
| 361 | 368 | ||
| 362 | C-k raderar från markören till slutet av raden | 369 | C-k Raderar från markören till slutet av raden |
| 363 | M-k raderar till slutet av stycket | 370 | M-k Raderar till slutet av stycket |
| 364 | 371 | ||
| 365 | Lägg märke till att <Delete> och C-d kontra M-<Delete> och M-d följer | 372 | Lägg märke till att <Delback> och C-d kontra M-<Delback> och M-d |
| 366 | mönstret som började med C-f och M-f. (<Delete> är inte precis | 373 | följer mönstret som började med C-f och M-f. (<Delback> är inte precis |
| 367 | ett kontrolltecken men låt oss inte bry oss om det.) C-k och M-k | 374 | ett kontrolltecken men låt oss inte bry oss om det.) C-k och M-k |
| 368 | fungerar på samma sätt som C-e och M-e (nästan). | 375 | fungerar på samma sätt som C-e och M-e (nästan). |
| 369 | 376 | ||
| 370 | Du kan också ta bort vilken del som helst av bufferten med hjälp av | 377 | Du kan också ta bort vilken del som helst av texten med hjälp av |
| 371 | följande allmänna metod. Flytta till ena änden av det område du vill | 378 | följande allmänna metod. Flytta till ena änden av det område du vill |
| 372 | ta bort och tryck C-@ eller C-mellanslag. Flytta till andra änden av | 379 | ta bort och tryck C-@ eller C-mellanslag. Flytta till andra änden av |
| 373 | området och tryck C-w. Detta tar bort all text mellan de två | 380 | området och tryck C-w. Detta tar bort all text mellan de två |
| @@ -401,13 +408,13 @@ raderar så många rader OCH innehållet i dem. Detta är alltså inte bara | |||
| 401 | en repetition av kommandot. C-u 2 C-k raderar två rader samt de tomma | 408 | en repetition av kommandot. C-u 2 C-k raderar två rader samt de tomma |
| 402 | raderna, medan C-k två gånger inte kommer att göra det. | 409 | raderna, medan C-k två gånger inte kommer att göra det. |
| 403 | 410 | ||
| 404 | Att sätta in borttagen text kallas att "återhämta" den (yanking). | 411 | Att sätta in borttagen text kallas att "återhämta" den (yanking). |
| 405 | (Tänk på det som att du rycker, eller drar, tillbaka någon text som | 412 | (Tänk på det som att du rycker, eller drar, tillbaka någon text som |
| 406 | tagits bort.) Du kan antingen hämta tillbaka borttagen text till samma | 413 | tagits bort.) Du kan antingen hämta tillbaka borttagen text till samma |
| 407 | plats som där den blev borttagen, eller så kan du sätta in den på en | 414 | plats som där den blev borttagen, eller så kan du sätta in den på en |
| 408 | annan plats i bufferten eller till och med i en helt annan fil. Du kan | 415 | annan plats i texten du redigerar eller till och med i en helt annan |
| 409 | också hämta tillbaka den flera gånger så att du får flera lika | 416 | fil. Du kan också hämta tillbaka samma text flera gånger så att du får |
| 410 | förekomster av den. | 417 | flera lika förekomster av den. |
| 411 | 418 | ||
| 412 | Kommandot för att hämta tillbaka text är C-y. Kommandot hämtar | 419 | Kommandot för att hämta tillbaka text är C-y. Kommandot hämtar |
| 413 | tillbaka den sist borttagna texten och placerar den där markören är. | 420 | tillbaka den sist borttagna texten och placerar den där markören är. |
| @@ -496,8 +503,8 @@ nytt namn, som backup, ifall du senare ångrar alltihop. | |||
| 496 | 503 | ||
| 497 | Om du tittar nästan längst ner på skärmbilden så kommer du se en rad | 504 | Om du tittar nästan längst ner på skärmbilden så kommer du se en rad |
| 498 | som börjar och slutar med minustecken, och som innehåller texten | 505 | som börjar och slutar med minustecken, och som innehåller texten |
| 499 | "--:-- TUTORIAL.se". Denna del av skärmbilden visar alltid namnet på | 506 | "--:-- TUTORIAL.sv". Denna del av skärmbilden visar alltid namnet på |
| 500 | filen du besöker. Just nu är du inne i en fil som heter "TUTORIAL.se" | 507 | filen du besöker. Just nu är du inne i en fil som heter "TUTORIAL.sv" |
| 501 | och som är en personlig kopia av vägledningen till Emacs. Vilken fil | 508 | och som är en personlig kopia av vägledningen till Emacs. Vilken fil |
| 502 | du än är inne i så kommer filnamnet stå där. | 509 | du än är inne i så kommer filnamnet stå där. |
| 503 | 510 | ||
| @@ -540,7 +547,7 @@ blev sparad. Du bör spara ofta så att du inte förlorar så mycket om | |||
| 540 | systemet kraschar. | 547 | systemet kraschar. |
| 541 | 548 | ||
| 542 | >> Skriv C-x C-s för att spara en kopia av denna vägledning. | 549 | >> Skriv C-x C-s för att spara en kopia av denna vägledning. |
| 543 | Detta skall leda till att "Wrote ...TUTORIAL.se" skrivs ut nederst | 550 | Detta skall leda till att "Wrote ...TUTORIAL.sv" skrivs ut nederst |
| 544 | på skärmbilden. | 551 | på skärmbilden. |
| 545 | 552 | ||
| 546 | Observera: På vissa system leder C-x C-s till att skärmen låser | 553 | Observera: På vissa system leder C-x C-s till att skärmen låser |
| @@ -569,7 +576,7 @@ den på nytt med C-x C-f. På så sätt kan du ha ett stort antal filer | |||
| 569 | 576 | ||
| 570 | >> Skapa en fil med namnet "foo" genom att trycka C-x C-f foo <Return>. | 577 | >> Skapa en fil med namnet "foo" genom att trycka C-x C-f foo <Return>. |
| 571 | Skriv in lite text, redigera den och spara "foo" genom att använda | 578 | Skriv in lite text, redigera den och spara "foo" genom att använda |
| 572 | C-x C-s. Skriv till slut C-x C-f TUTORIAL.se<Return> för att komma | 579 | C-x C-s. Skriv till slut C-x C-f TUTORIAL.sv <Return> för att komma |
| 573 | tillbaka till den här vägledningen. | 580 | tillbaka till den här vägledningen. |
| 574 | 581 | ||
| 575 | Emacs sparar texten för varje fil i ett objekt kallat "buffert". När | 582 | Emacs sparar texten för varje fil i ett objekt kallat "buffert". När |
| @@ -581,13 +588,37 @@ du finner en ny fil skapas en ny buffert i Emacs. För att se en lista | |||
| 581 | >> Prova C-x C-b nu. | 588 | >> Prova C-x C-b nu. |
| 582 | 589 | ||
| 583 | Se hur varje buffert har ett namn och att de också kan ha namnet på | 590 | Se hur varje buffert har ett namn och att de också kan ha namnet på |
| 584 | den fil som innehållet kommer från. En del buffertar är inte knutna | 591 | den fil som innehållet kommer från. Vilken text du än ser i ett |
| 585 | till någon fil, till exempel bufferten "*Buffer List*". Det är den | 592 | Emacs-fönster så tillhör den alltid en buffert. |
| 586 | buffert som innehåller buffertlistan som skapades med C-x C-b. Vilken | ||
| 587 | text du än ser i ett Emacs-fönster så tillhör den alltid en buffert. | ||
| 588 | 593 | ||
| 589 | >> Skriv C-x 1 för att bli kvitt buffertlistan. | 594 | >> Skriv C-x 1 för att bli kvitt buffertlistan. |
| 590 | 595 | ||
| 596 | När du har flera buffertar så är bara en av dem "gällande" åt gången. | ||
| 597 | Det är den buffert du redigerar. Om du vill redigera en annan buffert | ||
| 598 | så måste du byta till den. Om du vill byta till en buffert som | ||
| 599 | motsvarar en fil kan du göra det genom att besöka den igen med C-x | ||
| 600 | C-f. Det finns dock ett enklare sätt: använd C-x b kommandot. I det | ||
| 601 | kommandot anger du buffertens namn. | ||
| 602 | |||
| 603 | >> Skriv C-x b foo <Return> för att gå tillbaka till bufferten "foo" | ||
| 604 | som innehåller texten i filen "foo". Skriv sedan C-x b TUTORIAL.sv | ||
| 605 | <Return> för att komma tillbaka till den här handledningen. | ||
| 606 | |||
| 607 | Mestadels är buffertens namn densamma som filens namn (utan | ||
| 608 | katalogdel.) Det är dock inte alltid så. Bufferlistan du skapar med | ||
| 609 | C-x C-b visar alltid namnen på varje buffert. | ||
| 610 | |||
| 611 | All text du ser i ett Emacsfönster är alltid del av någon buffert. En | ||
| 612 | del buffertar är inte knutna till någon fil, till exempel bufferten | ||
| 613 | "*Buffer List*". Det är den buffert som innehåller buffertlistan som | ||
| 614 | skapades med C-x C-b. Bufferten "*Messages*" motsvarar inte heller | ||
| 615 | någon fil. Den innehåller de meddelanden som visas på den nedersta | ||
| 616 | raden i Emacs sessionen. | ||
| 617 | |||
| 618 | >> Skriv C-x b *Messages* <Return> för att se meddelandebufferten. | ||
| 619 | Skriv sedan C-x b TUTORIAL.sv <Return> för att återgå till den här | ||
| 620 | handledningen. | ||
| 621 | |||
| 591 | Om du ändrar texten till en fil och sedan öppnar en ny fil, så kommer | 622 | Om du ändrar texten till en fil och sedan öppnar en ny fil, så kommer |
| 592 | inte den första filen sparas. Förändringen ligger kvar i | 623 | inte den första filen sparas. Förändringen ligger kvar i |
| 593 | bufferten. Skapande och redigering av den nya filen påverkar inte den | 624 | bufferten. Skapande och redigering av den nya filen påverkar inte den |
| @@ -603,7 +634,7 @@ vill spara eller ej. | |||
| 603 | 634 | ||
| 604 | >> Sätt in en rad med text och spara med C-x s | 635 | >> Sätt in en rad med text och spara med C-x s |
| 605 | Du skall nu få frågan om du önskar spara bufferten | 636 | Du skall nu få frågan om du önskar spara bufferten |
| 606 | TUTORIAL.se. Svara ja på frågan genom att trycka "y" (yes). | 637 | TUTORIAL.sv. Svara ja på frågan genom att trycka "y" (yes). |
| 607 | 638 | ||
| 608 | 639 | ||
| 609 | * UTVIDGNING AV KOMMANDOMÄNGDEN | 640 | * UTVIDGNING AV KOMMANDOMÄNGDEN |
| @@ -618,9 +649,9 @@ META-tangenter. För att komma förbi denna begränsning har Emacs ett | |||
| 618 | kommandonamn. | 649 | kommandonamn. |
| 619 | 650 | ||
| 620 | Detta är kommandon som är bra att ha men används mer sällan än de | 651 | Detta är kommandon som är bra att ha men används mer sällan än de |
| 621 | kommandon du redan har lärt dig. Du har redan sett två av dem, C-x C-f | 652 | kommandon du redan har lärt dig. Du har redan sett några av dem, C-x |
| 622 | för finn, och C-x C-s för spara. Ett annat exempel är kommandot för | 653 | C-f för finn, och C-x C-s för spara. Ett annat exempel är kommandot |
| 623 | att avsluta Emacs som är C-x C-c. Var inte rädd för att förlora | 654 | för att avsluta Emacs som är C-x C-c. Var inte rädd för att förlora |
| 624 | förändringar du har gjort. C-x C-c erbjuder dig att spara förändringar | 655 | förändringar du har gjort. C-x C-c erbjuder dig att spara förändringar |
| 625 | innan Emacs avslutas. | 656 | innan Emacs avslutas. |
| 626 | 657 | ||
| @@ -646,12 +677,14 @@ istället för att avsluta. | |||
| 646 | Det finns många C-x kommandon. Här är en lista över de du har lärt dig | 677 | Det finns många C-x kommandon. Här är en lista över de du har lärt dig |
| 647 | hittills: | 678 | hittills: |
| 648 | 679 | ||
| 649 | C-x C-f Finn fil. | 680 | C-x C-f Finn fil |
| 650 | C-x C-s Spara fil. | 681 | C-x C-s Spara fil |
| 651 | C-x C-b Lista buffertar. | 682 | C-x s Spara några buffertar |
| 652 | C-x C-c Avsluta Emacs. | 683 | C-x C-b Lista buffertar |
| 653 | C-x 1 Ta bort alla utom ett fönster. | 684 | C-x b Byt buffert |
| 654 | C-x u Ångra. | 685 | C-x C-c Avsluta Emacs |
| 686 | C-x 1 Ta bort alla utom ett fönster | ||
| 687 | C-x u Ångra | ||
| 655 | 688 | ||
| 656 | Namngivna utvidgade kommandon är kommandon som används mycket sällan | 689 | Namngivna utvidgade kommandon är kommandon som används mycket sällan |
| 657 | eller bara i vissa lägen. Ett exempel på ett sådant kommando är | 690 | eller bara i vissa lägen. Ett exempel på ett sådant kommando är |
| @@ -708,16 +741,16 @@ skärmbilden. | |||
| 708 | Raden precis över ekoområdet kallas "lägesrad" (mode line). Den ser | 741 | Raden precis över ekoområdet kallas "lägesrad" (mode line). Den ser |
| 709 | ungefär ut så här: | 742 | ungefär ut så här: |
| 710 | 743 | ||
| 711 | --:** TUTORIAL (Fundamental)--L670--58%---------------- | 744 | --:** TUTORIAL 63% L749 (Fundamental)----------------------- |
| 712 | 745 | ||
| 713 | Raden innehåller information om Emacs och texten du redigerar. | 746 | Raden innehåller information om Emacs och texten du redigerar. |
| 714 | 747 | ||
| 715 | Du vet redan vad filnamnet betyder, det är den fil du har funnit. | 748 | Du vet redan vad filnamnet betyder, det är den fil du har funnit. NN% |
| 716 | -NN%-- visar den aktuella positionen i texten, dvs. NN procent av | 749 | visar den aktuella positionen i texten, dvs. NN procent av texten |
| 717 | texten befinner sig över toppen av skärmbilden. Om toppen av filen är | 750 | befinner sig över toppen av skärmbilden. Om toppen av filen är i |
| 718 | i skärmbilden kommer det stå --Top-- istället för --00%-- och om | 751 | skärmbilden kommer det stå "Top" istället för " 0%" och om slutet av |
| 719 | slutet av filen är i skärmbilden kommer det stå --Bot--. Om du ser på | 752 | filen är i skärmbilden kommer det stå "Bot". Om du ser på en fil där |
| 720 | en fil där hela texten passar in på en sida kommer det stå --All--. | 753 | hela texten passar in på en sida kommer det stå "All". |
| 721 | 754 | ||
| 722 | Bokstaven L följd av siffror anger positionen på ett annat | 755 | Bokstaven L följd av siffror anger positionen på ett annat |
| 723 | sätt. Siffrorna visar vilken rad som markören befinner sig på. | 756 | sätt. Siffrorna visar vilken rad som markören befinner sig på. |
| @@ -831,7 +864,7 @@ efter. <Return> avslutar sökandet. | |||
| 831 | har du sökt efter ordet "markör" en gång. | 864 | har du sökt efter ordet "markör" en gång. |
| 832 | >> Skriv C-s en gång till för att söka efter nästa förekomst av ordet | 865 | >> Skriv C-s en gång till för att söka efter nästa förekomst av ordet |
| 833 | "markör". | 866 | "markör". |
| 834 | >> Tryck nu på <Delete> fyra gånger och se hur markören flyttar sig | 867 | >> Tryck nu på <Delback> fyra gånger och se hur markören flyttar sig |
| 835 | >> Tryck <Return> för att avsluta sökandet. | 868 | >> Tryck <Return> för att avsluta sökandet. |
| 836 | 869 | ||
| 837 | Såg du vad som hände? Under inkrementell sökning försöker Emacs att gå | 870 | Såg du vad som hände? Under inkrementell sökning försöker Emacs att gå |
| @@ -847,12 +880,12 @@ den vidare till Emacs. För att fortsätta måste du trycka C-q. Se i så | |||
| 847 | fall avsnittet "Spontaneous Entry to Incremental Search" i | 880 | fall avsnittet "Spontaneous Entry to Incremental Search" i |
| 848 | Emacs-manualen för råd om hur detta kan undvikas. | 881 | Emacs-manualen för råd om hur detta kan undvikas. |
| 849 | 882 | ||
| 850 | Om du är inne i en inkrementell sökning och trycker <Delete> kommer du | 883 | Om du är inne i en inkrementell sökning och trycker <Delback> kommer |
| 851 | lägga märke till att den sista bokstaven i söksträngen blir raderad | 884 | du lägga märke till att den sista bokstaven i söksträngen blir raderad |
| 852 | och sökandet hoppar tillbaka till en tidigare förekomst. Om du till | 885 | och sökandet hoppar tillbaka till en tidigare förekomst. Om du till |
| 853 | exempel skriver "m" för att söka efter den första förekomsten av "m", | 886 | exempel skriver "m" för att söka efter den första förekomsten av "m", |
| 854 | och sedan trycker "a" så kommer markören flytta sig till första | 887 | och sedan trycker "a" så kommer markören flytta sig till första |
| 855 | förekomsten av "ma". Tryck nu <Delete>. Detta avlägsnar "a" från | 888 | förekomsten av "ma". Tryck nu <Delback>. Detta avlägsnar "a" från |
| 856 | söksträngen, och markören flyttar sig tillbaka till den första | 889 | söksträngen, och markören flyttar sig tillbaka till den första |
| 857 | förekomsten av "m". | 890 | förekomsten av "m". |
| 858 | 891 | ||
| @@ -880,7 +913,7 @@ skärmen samtidig. | |||
| 880 | det övre fönstret. | 913 | det övre fönstret. |
| 881 | 914 | ||
| 882 | >> Skriv C-M-v för att rulla det nedre fönstret. | 915 | >> Skriv C-M-v för att rulla det nedre fönstret. |
| 883 | (Om du inte har META-tangenten trycker du ESC C-v.) | 916 | (Om du inte har META-tangenten trycker du <ESC> C-v.) |
| 884 | 917 | ||
| 885 | >> Skriv C-x o (o för other) för att flytta markören till det | 918 | >> Skriv C-x o (o för other) för att flytta markören till det |
| 886 | nedre fönstret. | 919 | nedre fönstret. |
| @@ -910,10 +943,10 @@ som du trycker v. Det har ingen betydelse vilken av tangenterna | |||
| 910 | KONTROLL och META som trycks först, för bägge fungerar så att de | 943 | KONTROLL och META som trycks först, för bägge fungerar så att de |
| 911 | "modifierar" de andra tangenterna du trycker. | 944 | "modifierar" de andra tangenterna du trycker. |
| 912 | 945 | ||
| 913 | Om du inte har META-tangenten och använder ESC istället är | 946 | Om du inte har META-tangenten och använder <ESC> istället är |
| 914 | ordningsföljden viktig. Du måste trycka ESC följt av KONTROLL-v, | 947 | ordningsföljden viktig. Du måste trycka <ESC> följt av KONTROLL-v, |
| 915 | KONTROLL-ESC v fungerar inte. Det är för att ESC är ett tecken i sig | 948 | KONTROLL-<ESC> v fungerar inte. Det är för att <ESC> är ett tecken i |
| 916 | och inte en äkta "modifierare". | 949 | sig och inte en äkta "modifierare". |
| 917 | 950 | ||
| 918 | >> Skriv C-x 1 i det övre fönstret för att bli kvitt det nedre | 951 | >> Skriv C-x 1 i det övre fönstret för att bli kvitt det nedre |
| 919 | fönstret. | 952 | fönstret. |
| @@ -946,12 +979,12 @@ Ibland kan du hamna i något som kallas "rekursiv redigering" | |||
| 946 | huvudläget i lägesraden. Till exempel kan det stå [(Fundamental)] | 979 | huvudläget i lägesraden. Till exempel kan det stå [(Fundamental)] |
| 947 | istället för (Fundamental). | 980 | istället för (Fundamental). |
| 948 | 981 | ||
| 949 | För att komma ur rekursiv redigering trycker du ESC ESC ESC. Detta är | 982 | För att komma ur rekursiv redigering trycker du <ESC> <ESC> <ESC>. |
| 950 | ett generellt brytkommando. Du kan också använda det för att bli kvitt | 983 | Detta är ett generellt brytkommando. Du kan också använda det för att |
| 951 | extra fönster och för att komma ut ur minibufferten. | 984 | bli kvitt extra fönster och för att komma ut ur minibufferten. |
| 952 | 985 | ||
| 953 | >> Skriv M-x för att komma in i minibufferten. Skriv så ESC ESC ESC | 986 | >> Skriv M-x för att komma in i minibufferten. Skriv så <ESC> <ESC> |
| 954 | för att komma ut. | 987 | <ESC> för att komma ut. |
| 955 | 988 | ||
| 956 | Du kan inte använda C-g för att komma ut ur rekursiv redigering. | 989 | Du kan inte använda C-g för att komma ut ur rekursiv redigering. |
| 957 | Detta är för att C-g används för att avbryta kommandon och argument | 990 | Detta är för att C-g används för att avbryta kommandon och argument |
| @@ -985,7 +1018,8 @@ Den mest grundläggande hjälp-funktionen är C-h c. Skriv C-h, ett "c" | |||
| 985 | och en knappsekvens. Emacs ger då en beskrivning av kommandot. | 1018 | och en knappsekvens. Emacs ger då en beskrivning av kommandot. |
| 986 | 1019 | ||
| 987 | >> Skriv C-h c C-p. | 1020 | >> Skriv C-h c C-p. |
| 988 | Meddelandet skall då bli något i stil med | 1021 | |
| 1022 | Meddelandet skall då bli något i stil med: | ||
| 989 | 1023 | ||
| 990 | C-p runs the command previous-line | 1024 | C-p runs the command previous-line |
| 991 | 1025 | ||
| @@ -1061,6 +1095,29 @@ oklart duger det inte att sitta och tycka synd om sig själv -- Skicka | |||
| 1061 | ett mail och klaga! | 1095 | ett mail och klaga! |
| 1062 | 1096 | ||
| 1063 | 1097 | ||
| 1098 | * MER FUNKTIONER | ||
| 1099 | ---------------- | ||
| 1100 | |||
| 1101 | Du kan lära dig mer om Emacs genom att läsa dess manual, antingen i | ||
| 1102 | bokform eller on-line i Info (använd Hjälp-menyn eller skriv F10 h r). | ||
| 1103 | Två finesser som du kan komma att gilla speciellt är komplettering | ||
| 1104 | (completion), som spar tangenttryckningar, och dired, som förenklar | ||
| 1105 | filhantering. | ||
| 1106 | |||
| 1107 | Komplettering är ett sätt att undvika onödiga tangenttryckningar. Till | ||
| 1108 | exempel, om du vill byta till *Messages* bufferten, kan du du skriva | ||
| 1109 | C-x b *M<Tab> och Emacs kommer fylla i resten av buffertnamnet så | ||
| 1110 | långt den kan räkna ut det från det du redan skrivit. Komplettering | ||
| 1111 | finns beskrivet i Emacs-manualen i noden "Completion". | ||
| 1112 | |||
| 1113 | Dired gör det möjligt att lista filer i en katalog (och även dess | ||
| 1114 | subkataloger), flytta runt i listan, besöka, byta namn, ta bort och | ||
| 1115 | operera på olika sätt på filerna. Dired finns beskrivet i Info i | ||
| 1116 | Emacs-manualen i noden "Dired". | ||
| 1117 | |||
| 1118 | Manualen beskriver även många andra Emacs funktioner. | ||
| 1119 | |||
| 1120 | |||
| 1064 | * KOPIERING | 1121 | * KOPIERING |
| 1065 | ----------- | 1122 | ----------- |
| 1066 | 1123 | ||
| @@ -1071,7 +1128,7 @@ Lidell översatte den till Svenska. | |||
| 1071 | This version of the tutorial, like GNU Emacs, is copyrighted, and | 1128 | This version of the tutorial, like GNU Emacs, is copyrighted, and |
| 1072 | comes with permission to distribute copies on certain conditions: | 1129 | comes with permission to distribute copies on certain conditions: |
| 1073 | 1130 | ||
| 1074 | Copyright (c) 1985, 1996 Free Software Foundation | 1131 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation |
| 1075 | 1132 | ||
| 1076 | Permission is granted to anyone to make or distribute verbatim copies | 1133 | Permission is granted to anyone to make or distribute verbatim copies |
| 1077 | of this document as received, in any medium, provided that the | 1134 | of this document as received, in any medium, provided that the |
diff --git a/etc/TUTORIAL.th b/etc/TUTORIAL.th index f3708c9d60f..e1fb9d561e1 100644 --- a/etc/TUTORIAL.th +++ b/etc/TUTORIAL.th | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | 0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B. | ||
| 1 | ,TJ'G90ET1"0JT1708Tl1(B ,T>(B.,TH(B. 2528 ,Tb4B:0CT10IQ17?0CU1+M?05l1aG0Cl1?RG09l1`40*Q19(B (Free Software | 2 | ,TJ'G90ET1"0JT1708Tl1(B ,T>(B.,TH(B. 2528 ,Tb4B:0CT10IQ17?0CU1+M?05l1aG0Cl1?RG09l1`40*Q19(B (Free Software |
| 2 | Foundation, Inc); ,T!0CX13R0HV1!IR`0'Wh1M9d"5M907i1RB:7(B. | 3 | Foundation, Inc); ,T!0CX13R0HV1!IR`0'Wh1M9d"5M907i1RB:7(B. |
| 3 | 0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B (Emacs tutorial) ,TM0BYh1c9"3P09Ui1(B. | 4 | 0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B (Emacs tutorial) ,TM0BYh1c9"3P09Ui1(B. |
diff --git a/etc/TUTORIAL.zh b/etc/TUTORIAL.zh index a1383dc26bb..8411bf878f5 100644 --- a/etc/TUTORIAL.zh +++ b/etc/TUTORIAL.zh | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ±z¥¿¦b¾\Ū Emacs §Ö³t«ü«n¡] Emacs tutorial ¡^¡C½Ð¨£¶§À¦³Ãö½Æ»s±ø¥ó¡C | 1 | Emacs §Ö³t«ü«n¡]. |
| 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation. |
| 3 | 3 | ||
| 4 | Emacs «ü¥O³q±`¥]§t¦³ CONTROL Áä¡]¦³®ÉÔ¥H CTRL ©Î CTL ¨Ó¼Ð¥Ü¡^©Î¬O | 4 | Emacs «ü¥O³q±`¥]§t¦³ CONTROL Áä¡]¦³®ÉÔ¥H CTRL ©Î CTL ¨Ó¼Ð¥Ü¡^©Î¬O |
diff --git a/etc/gnus-logo.eps b/etc/gnus-logo.eps new file mode 100644 index 00000000000..95408ba9af6 --- /dev/null +++ b/etc/gnus-logo.eps | |||
| @@ -0,0 +1,1055 @@ | |||
| 1 | %!PS-Adobe-2.0 EPSF-2.0 | ||
| 2 | %%Title: gnuslogo1.ps | ||
| 3 | %%Creator: XV Version 3.00 Rev: 3/30/93 - by John Bradley | ||
| 4 | %%BoundingBox: 0 0 493 505 | ||
| 5 | %%Pages: 1 | ||
| 6 | %%DocumentFonts: | ||
| 7 | %%EndComments | ||
| 8 | %%EndProlog | ||
| 9 | |||
| 10 | %%Page: 1 1 | ||
| 11 | |||
| 12 | % remember original state | ||
| 13 | /origstate save def | ||
| 14 | |||
| 15 | % build a temporary dictionary | ||
| 16 | 20 dict begin | ||
| 17 | |||
| 18 | % define string to hold a scanline's worth of data | ||
| 19 | /pix 62 string def | ||
| 20 | |||
| 21 | % lower left corner | ||
| 22 | 0 0 translate | ||
| 23 | |||
| 24 | % size of image (on paper, in 1/72inch coords) | ||
| 25 | 493.0 505.0 scale | ||
| 26 | |||
| 27 | % dimensions of data | ||
| 28 | 493 505 1 | ||
| 29 | |||
| 30 | % mapping matrix | ||
| 31 | [493 0 0 -505 0 505] | ||
| 32 | |||
| 33 | {currentfile pix readhexstring pop} | ||
| 34 | image | ||
| 35 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 36 | ffffffffffffffffffffffffffffffffffffffffff01fffffff8 | ||
| 37 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 38 | fffffffffffffffffffffffffffffffffffffffff8003ffffff8 | ||
| 39 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 40 | fffffffffffffffffffffffffffffffffffffffff0000ffffff8 | ||
| 41 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 42 | ffffffffffffffffffffffffffffffffffffffff8000007ffff8 | ||
| 43 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 44 | ffffffffffffffffffffffffffffffffffffffff0000003ffff8 | ||
| 45 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 46 | fffffffffffffffffffffffffffffffffffffffe0000000ffff8 | ||
| 47 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 48 | fffffffffffffffffffffffffffffffffffffff000000003fff8 | ||
| 49 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 50 | fffffffffffffffffffffffffffffffffffffff000000000fff8 | ||
| 51 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 52 | ffffffffffffffffffffffffffffffffffffffc0000000007ff8 | ||
| 53 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 54 | ffffffffffffffffffffffffffffffffffffff80000000003ff8 | ||
| 55 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 56 | ffffffffffffffffffffffffffffffffffffff00000000001ff8 | ||
| 57 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 58 | fffffffffffffffffffffffffffffffffffffe00000000000ff8 | ||
| 59 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 60 | fffffffffffffffffffffffffffffffffffffc00000000000ff8 | ||
| 61 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 62 | fffffffffffffffffffffffffffffffffffff8000000000007f8 | ||
| 63 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 64 | fffffffffffffffffffffffffffffffffffff0000000000003f8 | ||
| 65 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 66 | fffffffffffffffffffffffffffffffffffff0000000000003f8 | ||
| 67 | fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff | ||
| 68 | ffffffffffffffffffffffffffffffffffffe0000000000001f8 | ||
| 69 | fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff | ||
| 70 | ffffffffffffffffffffffffffffffffffffc0000000000000f8 | ||
| 71 | ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff | ||
| 72 | ffffffffffffffffffffffffffffffffffffc0000000000000f8 | ||
| 73 | ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff | ||
| 74 | ffffffffffffffffffffffffffffffffffff8000000000000078 | ||
| 75 | fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff | ||
| 76 | ffffffffffffffffffffffffffffffffffff0000000000000038 | ||
| 77 | fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff | ||
| 78 | fffffffffffffffffffffffffffffffffffe0000000000000038 | ||
| 79 | fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff | ||
| 80 | fffffffffffffffffffffffffffffffffffe0000000000000038 | ||
| 81 | fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff | ||
| 82 | fffffffffffffffffffffffffffffffffffc0000000000000018 | ||
| 83 | ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff | ||
| 84 | fffffffffffffffffffffffffffffffffffc0000000000000018 | ||
| 85 | ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff | ||
| 86 | fffffffffffffffffffffffffffffffffff80000000000000018 | ||
| 87 | ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff | ||
| 88 | fffffffffffffffffffffffffffffffffff80000000000000008 | ||
| 89 | ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff | ||
| 90 | fffffffffffffffffffffffffffffffffff00000000000000008 | ||
| 91 | fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff | ||
| 92 | fffffffffffffffffffffffffffffffffff00000000000000008 | ||
| 93 | fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff | ||
| 94 | ffffffffffffffffffffffffffffffffffe00000000000000008 | ||
| 95 | fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff | ||
| 96 | ffffffffffffffffffffffffffffffffffe00000000000000008 | ||
| 97 | fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff | ||
| 98 | ffffffffffffffffffffffffffffffffffc00000000000000000 | ||
| 99 | ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff | ||
| 100 | ffffffffffffffffffffffffffffffffffc00000000000000000 | ||
| 101 | ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff | ||
| 102 | ffffffffffffffffffffffffffffffffff800000000000000000 | ||
| 103 | ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff | ||
| 104 | ffffffffffffffffffffffffffffffffff800000000000000000 | ||
| 105 | ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff | ||
| 106 | ffffffffffffffffffffffffffffffffff000040000000000000 | ||
| 107 | fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff | ||
| 108 | ffffffffffffffffffffffffffffffffff0007ffc00000000000 | ||
| 109 | fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff | ||
| 110 | fffffffffffffffffffffffffffffffffe001ffffc0000000000 | ||
| 111 | fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff | ||
| 112 | fffffffffffffffffffffffffffffffffc003ffffe0000000000 | ||
| 113 | fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff | ||
| 114 | fffffffffffffffffffffffffffffffffc007fffffc000000000 | ||
| 115 | fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff | ||
| 116 | fffffffffffffffffffffffffffffffff800fffffff000000000 | ||
| 117 | ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff | ||
| 118 | fffffffffffffffffffffffffffffffff801fffffff800000000 | ||
| 119 | ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff | ||
| 120 | fffffffffffffffffffffffffffffffff003ffffffff00000000 | ||
| 121 | ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff | ||
| 122 | fffffffffffffffffffffffffffffffff007ffffffff00000000 | ||
| 123 | ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff | ||
| 124 | ffffffffffffffffffffffffffffffffe00fffffffff80000000 | ||
| 125 | fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff | ||
| 126 | ffffffffffffffffffffffffffffffffe01fffffffffc0000008 | ||
| 127 | fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff | ||
| 128 | ffffffffffffffffffffffffffffffffc03fffffffffc0000008 | ||
| 129 | fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff | ||
| 130 | ffffffffffffffffffffffffffffffffc07ffffffffff0000000 | ||
| 131 | fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff | ||
| 132 | ffffffffffffffffffffffffffffffff807ffffffffff0000000 | ||
| 133 | fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff | ||
| 134 | ffffffffffffffffffffffffffffffff80fffffffffff0000008 | ||
| 135 | fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff | ||
| 136 | ffffffffffffffffffffffffffffffff81fffffffffff8000008 | ||
| 137 | fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff | ||
| 138 | ffffffffffffffffffffffffffffffff01fffffffffff8000008 | ||
| 139 | ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff | ||
| 140 | ffffffffffffffffffffffffffffffff03fffffffffffc000008 | ||
| 141 | ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff | ||
| 142 | fffffffffffffffffffffffffffffffe03fffffffffffc000008 | ||
| 143 | ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff | ||
| 144 | fffffffffffffffffffffffffffffffe07fffffffffffe000008 | ||
| 145 | ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff | ||
| 146 | fffffffffffffffffffffffffffffffe07fffffffffffe000008 | ||
| 147 | ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff | ||
| 148 | fffffffffffffffffffffffffffffffe0ffffffffffffe000008 | ||
| 149 | ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff | ||
| 150 | fffffffffffffffffffffffffffffffc0ffffffffffffe000008 | ||
| 151 | ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff | ||
| 152 | fffffffffffffffffffffffffffffffc1fffffffffffff000008 | ||
| 153 | ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff | ||
| 154 | fffffffffffffffffffffffffffffffc3fffffffffffff000008 | ||
| 155 | ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff | ||
| 156 | fffffffffffffffffffffffffffffff87fffffffffffff000008 | ||
| 157 | ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff | ||
| 158 | fffffffffffffffffffffffffffffff87fffffffffffff000008 | ||
| 159 | ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff | ||
| 160 | fffffffffffffffffffffffffffffff87fffffffffffff000008 | ||
| 161 | ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff | ||
| 162 | fffffffffffffffffffffffffffffff8ffffffffffffff000008 | ||
| 163 | ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff | ||
| 164 | fffffffffffffffffffffffffffffffcffffffffffffff000008 | ||
| 165 | fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff | ||
| 166 | ffffffffffffffffffffffffffffe7fdffffffffffffff000008 | ||
| 167 | fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff | ||
| 168 | ffffffffffffffffffffffffffffe7fdffffffffffffff000008 | ||
| 169 | fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff | ||
| 170 | ffffffffffffffffffffffffffffc7ffffffffffffffff000008 | ||
| 171 | fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff | ||
| 172 | fffffffffeffffffffffffffffff87ffffffffffffffff000008 | ||
| 173 | f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff | ||
| 174 | fffffffffcffffffffffffffffff87ffffffffffffffff000008 | ||
| 175 | f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff | ||
| 176 | fffffffff8ffffffffffffffffff07ffffffffffffffff000008 | ||
| 177 | f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff | ||
| 178 | fffffffff8fffffffffffffffffe0fffffffffffffffff000008 | ||
| 179 | f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff | ||
| 180 | fffffffff0fffffffffffffffffe0fffffffffffffffff000018 | ||
| 181 | e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff | ||
| 182 | fffffffff0fffffffffffffffffc0fffffffffffffffff000018 | ||
| 183 | e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff | ||
| 184 | ffffffffe0fffffffffffffffffc1fffffffffffffffff000018 | ||
| 185 | c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff | ||
| 186 | ffffffffe0fffffffffffffffff81fffffffffffffffff000018 | ||
| 187 | c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff | ||
| 188 | ffffffffc0fffffffffffffffff83fffffffffffffffff000018 | ||
| 189 | 800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff | ||
| 190 | ffffffff01fffffffffffffffff03fffffffffffffffff000038 | ||
| 191 | 800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff | ||
| 192 | ffffffff01fffffffffffffffff03fffffffffffffffff800038 | ||
| 193 | 00000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff | ||
| 194 | fffffffe03ffffffffffffffffe07fffffffffffffffff800038 | ||
| 195 | 00000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff | ||
| 196 | fffffffc03ffffffffffffffffe07fffffffffffffffff800038 | ||
| 197 | 00000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff | ||
| 198 | fffffff803ffffffffffffffffc07fffffffffffffffff800038 | ||
| 199 | 00000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff | ||
| 200 | fffffff007ffffffffffffffffc0ffffffffffffffffff800038 | ||
| 201 | 0000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff | ||
| 202 | fffffff007ffffffffffffffff80ffffffffffffffffff800078 | ||
| 203 | 0000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff | ||
| 204 | ffffffc00fffffffffffffffff81ffffffffffffffffff800078 | ||
| 205 | 8000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff | ||
| 206 | ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8 | ||
| 207 | 8000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff | ||
| 208 | ffffff801fffffffffffffffff03ffffffffffffffffff8000f8 | ||
| 209 | c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff | ||
| 210 | fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8 | ||
| 211 | e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff | ||
| 212 | fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8 | ||
| 213 | f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff | ||
| 214 | fffff0003ffffffffffffffff80fffffffffffffffffff8000f8 | ||
| 215 | f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff | ||
| 216 | ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8 | ||
| 217 | f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f | ||
| 218 | ffff00007fffffffffffffffe01fffffffffffffffffff0001f8 | ||
| 219 | fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007 | ||
| 220 | fffc00007fffffffffffffffc01fffffffffffffffffff0001f8 | ||
| 221 | fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000 | ||
| 222 | ffe000007ffffbffffffffff801fffffffffffffffffff0001f8 | ||
| 223 | fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000 | ||
| 224 | 00000000fffff3ffffffffff003fffffffffffffffffff0001f8 | ||
| 225 | fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000 | ||
| 226 | 00000001fffff1fffffffffe003fffffffffffffffffff0003f8 | ||
| 227 | ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000 | ||
| 228 | 00000001ffffe1fffffffffc007fffffffffffffffffff0003f8 | ||
| 229 | ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000 | ||
| 230 | 00000003ffffe0fffffffff0007fffffffffffffffffff0003f8 | ||
| 231 | ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000 | ||
| 232 | 00000003ffffc0ffffffffe0007fffffffffffffffffff0003f8 | ||
| 233 | ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000 | ||
| 234 | 00000007ffffc07fffffff8000ffffffffffffffffffff0003f8 | ||
| 235 | fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000 | ||
| 236 | 00000007ffff803fffffff0000fffffffffffffffffffe0007f8 | ||
| 237 | fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000 | ||
| 238 | 00000007ffff801ffffffc0001fffffffffffffffffffe0007f8 | ||
| 239 | fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000 | ||
| 240 | 0000000fffff000ffffff80003fffffffffffffffffffe0007f8 | ||
| 241 | fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000 | ||
| 242 | 0000000fffff0007ffffe00003fffffffffffffffffffe0007f8 | ||
| 243 | ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000 | ||
| 244 | 0000001ffffe0001ffff800007fffffffffffffffffffe000ff8 | ||
| 245 | ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000 | ||
| 246 | 0000001ffffe0000fffc000007fffffffffffffffffffe000ff8 | ||
| 247 | ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000 | ||
| 248 | 0000003ffffe0000000000000ffffffffffffffffffffe000ff8 | ||
| 249 | fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000 | ||
| 250 | 0000003ffffc0000000000000ffffffffffffffffffffe000ff8 | ||
| 251 | fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000 | ||
| 252 | 0000007ffff80000000000001ffffffffffffffffffffe001ff8 | ||
| 253 | fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000 | ||
| 254 | 0000007ffff80000000000001ffffffffffffffffffffe001ff8 | ||
| 255 | fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000 | ||
| 256 | 000000fffff80000000000003ffffffffffffffffffffc001ff8 | ||
| 257 | fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000 | ||
| 258 | 000003fffff00000000000007ffffffffffffffffffffc001ff8 | ||
| 259 | fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000 | ||
| 260 | 000007ffffe00000000000007ffffffffffffffffffffe003ff8 | ||
| 261 | fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000 | ||
| 262 | 000007ffffe0000000000000fffffffffffffffffffffc003ff8 | ||
| 263 | ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000 | ||
| 264 | 00001fffffc0000000000001fffffffffffffffffffffc003ff8 | ||
| 265 | ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000 | ||
| 266 | 00001fffffc0000000000003fffffffffffffffffffffc003ff8 | ||
| 267 | ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000 | ||
| 268 | 00003fffff80000000000003fffffffffffffffffffffc007ff8 | ||
| 269 | ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000 | ||
| 270 | 00007fffff80000000000007fffffffffffffffffffffc007ff8 | ||
| 271 | ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000 | ||
| 272 | 0000ffffff0000000000000ffffffffffffffffffffffc007ff8 | ||
| 273 | fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000 | ||
| 274 | 0001ffffff0000000000001ffffffffffffffffffffffc007ff8 | ||
| 275 | fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000 | ||
| 276 | 0003fffffe0000000000001ffffffffffffffffffffff800fff8 | ||
| 277 | fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000 | ||
| 278 | 0007fffffe0000000000003ffffffffffffffffffffff800fff8 | ||
| 279 | fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000 | ||
| 280 | 001ffffffc0000000000007ffffffffffffffffffffff800fff8 | ||
| 281 | fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000 | ||
| 282 | 003ffffffc000000000000fffffffffffffffffffffff800fff8 | ||
| 283 | ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000 | ||
| 284 | 00fffffff8000000000003fffffffffffffffffffffff001fff8 | ||
| 285 | ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000 | ||
| 286 | 03fffffff8000000000003fffffffffffffffffffffff001fff8 | ||
| 287 | ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000 | ||
| 288 | 07fffffff0000000000007fffffffffffffffffffffff001fff8 | ||
| 289 | ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000 | ||
| 290 | 3ffffffff000000000000ffffffffffffffffffffffff003fff8 | ||
| 291 | ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f | ||
| 292 | fffffffff000000000003ffffffffffffffffffffffff003fff8 | ||
| 293 | ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 294 | fffffffff800000000007ffffffffffffffffffffffff003fff8 | ||
| 295 | fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 296 | fffffffff80000000000ffffffffffffffffffffffffe003fff8 | ||
| 297 | fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 298 | fffffffffc0000000003ffffffffffffffffffffffffe007fff8 | ||
| 299 | fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 300 | fffffffffe0000000007ffffffffffffffffffffffffe007fff8 | ||
| 301 | fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 302 | fffffffffe000000000fffffffffffffffffffffffffe00ffff8 | ||
| 303 | fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 304 | ffffffffff000000001fffffffffffffffffffffffffe00ffff8 | ||
| 305 | ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff | ||
| 306 | ffffffffff800000007fffffffffffffffffffffffffc00ffff8 | ||
| 307 | ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff | ||
| 308 | ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8 | ||
| 309 | ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff | ||
| 310 | ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8 | ||
| 311 | ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff | ||
| 312 | fffffffffff800001fffffffffffffffffffffffffffc01ffff8 | ||
| 313 | ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff | ||
| 314 | fffffffffffe00007fffffffffffffffffffffffffffc01ffff8 | ||
| 315 | ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff | ||
| 316 | ffffffffffff8003ffffffffffffffffffffffffffff801ffff8 | ||
| 317 | ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff | ||
| 318 | ffffffffffffffffffffffffffffffffffffffffffff803ffff8 | ||
| 319 | fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff | ||
| 320 | ffffffffffffffffffffffffffffffffffffffffffff803ffff8 | ||
| 321 | fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff | ||
| 322 | ffffffffffffffffffffffffffffffffffffffffffff803ffff8 | ||
| 323 | fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff | ||
| 324 | ffffffffffffffffffffffffffffffffffffffffffff007ffff8 | ||
| 325 | fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff | ||
| 326 | ffffffffffffffffffffffffffffffffffffffffffff007ffff8 | ||
| 327 | fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff | ||
| 328 | ffffffffffffffffffffffffffffffffffffffffffff007ffff8 | ||
| 329 | fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff | ||
| 330 | fffffffffffffffffffffffffffffffffffffffffffe00fffff8 | ||
| 331 | ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff | ||
| 332 | fffffffffffffffffffffffffffffffffffffffffffe00fffff8 | ||
| 333 | ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff | ||
| 334 | fffffffffffffffffffffffffffffffffffffffffffe00fffff8 | ||
| 335 | ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff | ||
| 336 | fffffffffffffffffffffffffffffffffffffffffffe00fffff8 | ||
| 337 | ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff | ||
| 338 | fffffffffffffffffffffffffffffffffffffffffffe01fffff8 | ||
| 339 | ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff | ||
| 340 | fffffffffffffffffffffffffffffffffffffffffffc01fffff8 | ||
| 341 | ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff | ||
| 342 | fffffffffffffffffffffffffffffffffffffffffffc01fffff8 | ||
| 343 | ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff | ||
| 344 | fffffffffffffffffffffffffffffffffffffffffffc01fffff8 | ||
| 345 | fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff | ||
| 346 | fffffffffffffffffffffffffffffffffffffffffffc03fffff8 | ||
| 347 | fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff | ||
| 348 | fffffffffffffffffffffffffffffffffffffffffff803fffff8 | ||
| 349 | fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff | ||
| 350 | fffffffffffffffffffffffffffffffffffffffffff803fffff8 | ||
| 351 | fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff | ||
| 352 | fffffffffffffffffffffffffffffffffffffffffff007fffff8 | ||
| 353 | fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff | ||
| 354 | fffffffffffffffffffffffffffffffffffffffffff007fffff8 | ||
| 355 | fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff | ||
| 356 | fffffffffffffffffffffffffffffffffffffffffff007fffff8 | ||
| 357 | ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff | ||
| 358 | ffffffffffffffffffffffffffffffffffffffffffe00ffffff8 | ||
| 359 | ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff | ||
| 360 | ffffffffffffffffffffffffffffffffffffffffffe00ffffff8 | ||
| 361 | ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff | ||
| 362 | ffffffffffffffffffffffffffffffffffffffffffe00ffffff8 | ||
| 363 | ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff | ||
| 364 | ffffffffffffffffffffffffffffffffffffffffffe01ffffff8 | ||
| 365 | ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff | ||
| 366 | ffffffffffffffffffffffffffffffffffffffffffc01ffffff8 | ||
| 367 | ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff | ||
| 368 | ffffffffffffffffffffffffffffffffffffffffffc01ffffff8 | ||
| 369 | ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff | ||
| 370 | ffffffffffffffffffffffffffffffffffffffffffc03ffffff8 | ||
| 371 | fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff | ||
| 372 | ffffffffffffffffffffffffffffffffffffffffff803ffffff8 | ||
| 373 | fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff | ||
| 374 | ffffffffffffffffffffffffffffffffffffffffff803ffffff8 | ||
| 375 | fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff | ||
| 376 | ffffffffffffffffffffffffffffffffffffffffff807ffffff8 | ||
| 377 | fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff | ||
| 378 | ffffffffffffffffffffffffffffffffffffffffff807ffffff8 | ||
| 379 | fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff | ||
| 380 | ffffffffffffffffffffffffffffffffffffffffff007ffffff8 | ||
| 381 | fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff | ||
| 382 | ffffffffffffffffffffffffffffffffffffffffff00fffffff8 | ||
| 383 | fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff | ||
| 384 | ffffffffffffffffffffffffffffffffffffffffff00fffffff8 | ||
| 385 | ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff | ||
| 386 | fffffffffffffffffffffffffffffffffffffffffe01fffffff8 | ||
| 387 | ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff | ||
| 388 | fffffffffffffffffffffffffffffffffffffffffe01fffffff8 | ||
| 389 | ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff | ||
| 390 | fffffffffffffffffffffffffffffffffffffffffe01fffffff8 | ||
| 391 | ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff | ||
| 392 | fffffffffffffffffffffffffffffffffffffffffe03fffffff8 | ||
| 393 | ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff | ||
| 394 | fffffffffffffffffffffffffffffffffffffffffe03fffffff8 | ||
| 395 | ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff | ||
| 396 | fffffffffffffffffffffffffffffffffffffffffc07fffffff8 | ||
| 397 | ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff | ||
| 398 | fffffffffffffffffffffffffffffffffffffffffc07fffffff8 | ||
| 399 | fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff | ||
| 400 | fffffffffffffffffffffffffffffffffffffffff807fffffff8 | ||
| 401 | fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff | ||
| 402 | fffffffffffffffffffffffffffffffffffffffff807fffffff8 | ||
| 403 | fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff | ||
| 404 | fffffffffffffffffffffffffffffffffffffffff80ffffffff8 | ||
| 405 | fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff | ||
| 406 | fffffffffffffffffffffffffffffffffffffffff80ffffffff8 | ||
| 407 | fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff | ||
| 408 | fffffffffffffffffffffffffffffffffffffffff01ffffffff8 | ||
| 409 | fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff | ||
| 410 | fffffffffffffffffffffffffffffffffffffffff01ffffffff8 | ||
| 411 | fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff | ||
| 412 | fffffffffffffffffffffffffffffffffffffffff01ffffffff8 | ||
| 413 | fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff | ||
| 414 | ffffffffffffffffffffffffffffffffffffffffe01ffffffff8 | ||
| 415 | fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff | ||
| 416 | ffffffffffffffffffffffffffffffffffffffffe03ffffffff8 | ||
| 417 | ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff | ||
| 418 | ffffffffffffffffffffffffffffffffffffffffe03ffffffff8 | ||
| 419 | ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff | ||
| 420 | ffffffffffffffffffffffffffffffffffffffffc07ffffffff8 | ||
| 421 | ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff | ||
| 422 | ffffffffffffffffffffffffffffffffffffffffc07ffffffff8 | ||
| 423 | ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff | ||
| 424 | ffffffffffffffffffffffffffffffffffffffffc07ffffffff8 | ||
| 425 | ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff | ||
| 426 | ffffffffffffffffffffffffffffffffffffffffc0fffffffff8 | ||
| 427 | ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff | ||
| 428 | ffffffffffffffffffffffffffffffffffffffffc0fffffffff8 | ||
| 429 | ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff | ||
| 430 | ffffffffffffffffffffffffffffffffffffffff80fffffffff8 | ||
| 431 | ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff | ||
| 432 | ffffffffffffffffffffffffffffffffffffffff81fffffffff8 | ||
| 433 | ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff | ||
| 434 | ffffffffffffffffffffffffffffffffffffffff81fffffffff8 | ||
| 435 | ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff | ||
| 436 | ffffffffffffffffffffffffffffffffffffffff01fffffffff8 | ||
| 437 | ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff | ||
| 438 | ffffffffffffffffffffffffffffffffffffffff03fffffffff8 | ||
| 439 | ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff | ||
| 440 | fffffffffffffffffffffffffffffffffffffffe03fffffffff8 | ||
| 441 | fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff | ||
| 442 | fffffffffffffffffffffffffffffffffffffffe03fffffffff8 | ||
| 443 | fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff | ||
| 444 | fffffffffffffffffffffffffffffffffffffffe03fffffffff8 | ||
| 445 | fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff | ||
| 446 | fffffffffffffffffffffffffffffffffffffffe07fffffffff8 | ||
| 447 | fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff | ||
| 448 | fffffffffffffffffffffffffffffffffffffffc07fffffffff8 | ||
| 449 | fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff | ||
| 450 | fffffffffffffffffffffffffffffffffffffffc07fffffffff8 | ||
| 451 | fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff | ||
| 452 | fffffffffffffffffffffffffffffffffffffffc0ffffffffff8 | ||
| 453 | fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff | ||
| 454 | fffffffffffffffffffffffffffffffffffffffc0ffffffffff8 | ||
| 455 | fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff | ||
| 456 | fffffffffffffffffffffffffffffffffffffff80ffffffffff8 | ||
| 457 | fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff | ||
| 458 | fffffffffffffffffffffffffffffffffffffff80ffffffffff8 | ||
| 459 | fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff | ||
| 460 | fffffffffffffffffffffffffffffffffffffff00ffffffffff8 | ||
| 461 | fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 462 | fffffffffffffffffffffffffffffffffffffff01ffffffffff8 | ||
| 463 | fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 464 | fffffffffffffffffffffffffffffffffffffff01ffffffffff8 | ||
| 465 | fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 466 | ffffffffffffffffffffffffffffffffffffffe01ffffffffff8 | ||
| 467 | ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 468 | ffffffffffffffffffffffffffffffffffffffe03ffffffffff8 | ||
| 469 | ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 470 | fffffffffffffffffffdffffffffffffffffffe03ffffffffff8 | ||
| 471 | ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 472 | fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8 | ||
| 473 | ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff | ||
| 474 | fffffffffffffffffff1ffffffffffffffffff807ffffffffff8 | ||
| 475 | fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff | ||
| 476 | fffffffffffffffffff1ffffffffffffffffff807ffffffffff8 | ||
| 477 | fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff | ||
| 478 | fffffffffffffffffff1ffffffffffffffffff807ffffffffff8 | ||
| 479 | fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff | ||
| 480 | ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8 | ||
| 481 | ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff | ||
| 482 | ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8 | ||
| 483 | fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff | ||
| 484 | ffffffffffffffffff83ffffffffffffffffff00fffffffffff8 | ||
| 485 | fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff | ||
| 486 | ffffffffffffffffff83ffffffffffffffffff00fffffffffff8 | ||
| 487 | fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff | ||
| 488 | ffffffffffffffffff03ffffffffffffffffff00fffffffffff8 | ||
| 489 | fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff | ||
| 490 | ffffffffffffffffff03ffffffffffffffffff01fffffffffff8 | ||
| 491 | fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff | ||
| 492 | ffffffffffffffffff07ffffffffffffffffff01fffffffffff8 | ||
| 493 | fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff | ||
| 494 | fffffffffffffffffe07fffffffffffffffffe01fffffffffff8 | ||
| 495 | fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff | ||
| 496 | fffffffffffffffffc07fffffffffffffffffe03fffffffffff8 | ||
| 497 | fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff | ||
| 498 | fffffffffffffffffc07fffffffffffffffffc03fffffffffff8 | ||
| 499 | fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff | ||
| 500 | fffffffffffffffff80ffffffffffffffffffc03fffffffffff8 | ||
| 501 | fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff | ||
| 502 | fffffffffffffffff80ffffffffffffffffffc03fffffffffff8 | ||
| 503 | fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff | ||
| 504 | fffffffffffffffff80ffffffffffffffffffc03fffffffffff8 | ||
| 505 | fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff | ||
| 506 | fffffffffffffffff03ffffffffffffffffff807fffffffffff8 | ||
| 507 | fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff | ||
| 508 | ffffffffffffffffe01ffffffffffffffffff807fffffffffff8 | ||
| 509 | fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff | ||
| 510 | ffffffffffffffffe03ffffffffffffffffff807fffffffffff8 | ||
| 511 | fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff | ||
| 512 | ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8 | ||
| 513 | fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff | ||
| 514 | ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8 | ||
| 515 | fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff | ||
| 516 | ffffffffffffffff80fffffffffffffffffff00ffffffffffff8 | ||
| 517 | fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff | ||
| 518 | ffffffffffffffff80fffffffffffffffffff00ffffffffffff8 | ||
| 519 | ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff | ||
| 520 | ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8 | ||
| 521 | ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff | ||
| 522 | fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8 | ||
| 523 | ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff | ||
| 524 | fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8 | ||
| 525 | ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff | ||
| 526 | fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8 | ||
| 527 | ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff | ||
| 528 | fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8 | ||
| 529 | ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff | ||
| 530 | fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8 | ||
| 531 | ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff | ||
| 532 | fffffffffffffff807ffffffffffffffffffc03ffffffffffff8 | ||
| 533 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 534 | fffffffffffffff807ffffffffffffffffff803ffffffffffff8 | ||
| 535 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 536 | fffffffffffffff00fffffffffffffffffff803ffffffffffff8 | ||
| 537 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 538 | fffffffffffffff00fffffffffffffffffff807ffffffffffff8 | ||
| 539 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 540 | ffffffffffffffe01fffffffffffffffffff807ffffffffffff8 | ||
| 541 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 542 | ffffffffffffffe03fffffffffffffffffff807ffffffffffff8 | ||
| 543 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 544 | ffffffffffffffc03fffffffffffffffffff807ffffffffffff8 | ||
| 545 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 546 | ffffffffffffff807fffffffffffffffffff00fffffffffffff8 | ||
| 547 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 548 | ffffffffffffff807fffffffffffffffffff00fffffffffffff8 | ||
| 549 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 550 | ffffffffffffff00ffffffffffffffffffff00fffffffffffff8 | ||
| 551 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 552 | ffffffffffffff00fffffffffffffffffffe00fffffffffffff8 | ||
| 553 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 554 | fffffffffffffe01fffffffffffffffffffe01fffffffffffff8 | ||
| 555 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 556 | fffffffffffffe03fffffffffffffffffffe01fffffffffffff8 | ||
| 557 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 558 | fffffffffffffc03fffffffffffffffffffc01fffffffffffff8 | ||
| 559 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 560 | fffffffffffffc07fffffffffffffffffffc01fffffffffffff8 | ||
| 561 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 562 | fffffffffffff807fffffffffffffffffffc03fffffffffffff8 | ||
| 563 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 564 | fffffffffffff00ffffffffffffffffffffc03fffffffffffff8 | ||
| 565 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 566 | fffffffffffff00ffffffffffffffffffff803fffffffffffff8 | ||
| 567 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 568 | ffffffffffffe01ffffffffffffffffffff803fffffffffffff8 | ||
| 569 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 570 | ffffffffffffe01ffffffffffffffffffff803fffffffffffff8 | ||
| 571 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 572 | ffffffffffffc03ffffffffffffffffffff807fffffffffffff8 | ||
| 573 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 574 | ffffffffffffc03ffffffffffffffffffff007fffffffffffff8 | ||
| 575 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 576 | ffffffffffff807ffffffffffffffffffff007fffffffffffff8 | ||
| 577 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 578 | ffffffffffff807ffffffffffffffffffff007fffffffffffff8 | ||
| 579 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 580 | ffffffffffff00fffffffffffffffffffff007fffffffffffff8 | ||
| 581 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 582 | fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8 | ||
| 583 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 584 | fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8 | ||
| 585 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff | ||
| 586 | fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8 | ||
| 587 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff | ||
| 588 | fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8 | ||
| 589 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff | ||
| 590 | fffffffffff803ffffffffffffffffffffc00ffffffffffffff8 | ||
| 591 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff | ||
| 592 | fffffffffff807ffffffffffffffffffffc00ffffffffffffff8 | ||
| 593 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff | ||
| 594 | fffffffffff00fffffffffffffffffffffc01ffffffffffffff8 | ||
| 595 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff | ||
| 596 | fffffffffff00fffffffffffffffffffffc01ffffffffffffff8 | ||
| 597 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff | ||
| 598 | ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8 | ||
| 599 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff | ||
| 600 | ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8 | ||
| 601 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff | ||
| 602 | ffffffffff801fffffffffffffffffffff801ffffffffffffff8 | ||
| 603 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff | ||
| 604 | ffffffffff803fffffffffffffffffffff801ffffffffffffff8 | ||
| 605 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff | ||
| 606 | ffffffffff003fffffffffffffffffffff803ffffffffffffff8 | ||
| 607 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff | ||
| 608 | fffffffffe007fffffffffffffffffffff803ffffffffffffff8 | ||
| 609 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff | ||
| 610 | fffffffffc007fffffffffffffffffffff003ffffffffffffff8 | ||
| 611 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff | ||
| 612 | fffffffffc00ffffffffffffffffffffff003ffffffffffffff8 | ||
| 613 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff | ||
| 614 | fffffffff800ffffffffffffffffffffff003ffffffffffffff8 | ||
| 615 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff | ||
| 616 | fffffffff801ffffffffffffffffffffff003ffffffffffffff8 | ||
| 617 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff | ||
| 618 | fffffffff803ffffffffffffffffffffff007ffffffffffffff8 | ||
| 619 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff | ||
| 620 | fffffffff003fffffffffffffffffffffe007ffffffffffffff8 | ||
| 621 | fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff | ||
| 622 | ffffffffe007fffffffffffffffffffffe007ffffffffffffff8 | ||
| 623 | fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff | ||
| 624 | ffffffffc007fffffffffffffffffffffe007ffffffffffffff8 | ||
| 625 | fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff | ||
| 626 | ffffffffc007fffffffffffffffffffffe007ffffffffffffff8 | ||
| 627 | fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff | ||
| 628 | ffffffff800ffffffffffffffffffffffe00fffffffffffffff8 | ||
| 629 | fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff | ||
| 630 | ffffffff000ffffffffffffffffffffffe00fffffffffffffff8 | ||
| 631 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff | ||
| 632 | fffffffe001ffffffffffffffffffffffe00fffffffffffffff8 | ||
| 633 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff | ||
| 634 | fffffffc003ffffffffffffffffffffffe00fffffffffffffff8 | ||
| 635 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff | ||
| 636 | 9ffffffc003ffffffffffffffffffffffe00fffffffffffffff8 | ||
| 637 | ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff | ||
| 638 | 0ffffff8003ffffffffffffffffffffffc01fffffffffffffff8 | ||
| 639 | ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe | ||
| 640 | 07fffff0007ffffffffffffffffffffffc01fffffffffffffff8 | ||
| 641 | ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe | ||
| 642 | 07ffffe000fffffffffffffffffffffffc01fffffffffffffff8 | ||
| 643 | fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8 | ||
| 644 | 03ffffc000fffffffffffffffffffffffc01fffffffffffffff8 | ||
| 645 | fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0 | ||
| 646 | 03ffff8001fffffffffffffffffffffff801fffffffffffffff8 | ||
| 647 | fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0 | ||
| 648 | 01ffff0003fffffffffffffffffffffff803fffffffffffffff8 | ||
| 649 | fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0 | ||
| 650 | 00fffe0003fffffffffffffffffffffff803fffffffffffffff8 | ||
| 651 | fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0 | ||
| 652 | 00fffe0003fffffffffffffffffffffff803fffffffffffffff8 | ||
| 653 | fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0 | ||
| 654 | 003ffc0007fffffffffffffffffffffff003fffffffffffffff8 | ||
| 655 | ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80 | ||
| 656 | 001fe0001ffffffffffffffffffffffff003fffffffffffffff8 | ||
| 657 | ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00 | ||
| 658 | 000fc0001ffffffffffffffffffffffff007fffffffffffffff8 | ||
| 659 | ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00 | ||
| 660 | 000000001ffffffffffffffffffffffff007fffffffffffffff8 | ||
| 661 | ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00 | ||
| 662 | 000000003ffffffffffffffffffffffff007fffffffffffffff8 | ||
| 663 | ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00 | ||
| 664 | 000000003ffffffffffffffffffffffff007fffffffffffffff8 | ||
| 665 | ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800 | ||
| 666 | 000000007fffffffffffffffffffffffe007fffffffffffffff8 | ||
| 667 | fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800 | ||
| 668 | 000000007fffffffffffffffffffffffe007fffffffffffffff8 | ||
| 669 | fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000 | ||
| 670 | 00000001ffffffffffffffffffffffffe007fffffffffffffff8 | ||
| 671 | fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000 | ||
| 672 | 00000001ffffffffffffffffffffffffe007fffffffffffffff8 | ||
| 673 | fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000 | ||
| 674 | 00000001ffffffffffffffffffffffffe007fffffffffffffff8 | ||
| 675 | fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000 | ||
| 676 | 00000003ffffffffffffffffffffffffc00ffffffffffffffff8 | ||
| 677 | fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000 | ||
| 678 | 00000003ffffffffffffffffffffffffc00ffffffffffffffff8 | ||
| 679 | ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000 | ||
| 680 | 00000007ffffffffffffffffffffffffc00ffffffffffffffff8 | ||
| 681 | ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000 | ||
| 682 | 0000000fffffffffffffffffffffffffc01ffffffffffffffff8 | ||
| 683 | ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000 | ||
| 684 | 0000001fffffffffffffffffffffffffc01ffffffffffffffff8 | ||
| 685 | ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000 | ||
| 686 | 0000001fffffffffffffffffffffffffc01ffffffffffffffff8 | ||
| 687 | ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000 | ||
| 688 | 0000003fffffffffffffffffffffffffc01ffffffffffffffff8 | ||
| 689 | fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000 | ||
| 690 | 0000007fffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 691 | fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000 | ||
| 692 | 0000007fffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 693 | fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000 | ||
| 694 | 000000ffffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 695 | fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000 | ||
| 696 | 000001ffffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 697 | fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000 | ||
| 698 | 000001ffffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 699 | fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000 | ||
| 700 | 000003ffffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 701 | ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000 | ||
| 702 | 000003ffffffffffffffffffffffffff801ffffffffffffffff8 | ||
| 703 | ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000 | ||
| 704 | 000007ffffffffffffffffffffffffff803ffffffffffffffff8 | ||
| 705 | ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000 | ||
| 706 | 00000fffffffffffffffffffffffffff003ffffffffffffffff8 | ||
| 707 | ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000 | ||
| 708 | 00000fffffffffffffffffffffffffff803ffffffffffffffff8 | ||
| 709 | ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000 | ||
| 710 | 00001fffffffffffffffffffffffffff803ffffffffffffffff8 | ||
| 711 | ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200 | ||
| 712 | 00003fffffffffffffffffffffffffff007ffffffffffffffff8 | ||
| 713 | fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700 | ||
| 714 | 00007fffffffffffffffffffffffffff00fffffffffffffffff8 | ||
| 715 | fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80 | ||
| 716 | 0000ffffffffffffffffffffffffffff00fffffffffffffffff8 | ||
| 717 | fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80 | ||
| 718 | 0001ffffffffffffffffffffffffffff00fffffffffffffffff8 | ||
| 719 | fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0 | ||
| 720 | 0001ffffffffffffffffffffffffffff00fffffffffffffffff8 | ||
| 721 | fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0 | ||
| 722 | 0003ffffffffffffffffffffffffffff01fffffffffffffffff8 | ||
| 723 | ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0 | ||
| 724 | 0007ffffffffffffffffffffffffffff01fffffffffffffffff8 | ||
| 725 | ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0 | ||
| 726 | 0007ffffffffffffffffffffffffffff01fffffffffffffffff8 | ||
| 727 | ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8 | ||
| 728 | 001fffffffffffffffffffffffffffff07fffffffffffffffff8 | ||
| 729 | ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc | ||
| 730 | 007fffffffffffffffffffffffffffff07fffffffffffffffff8 | ||
| 731 | ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe | ||
| 732 | 00ffffffffffffffffffffffffffffff07fffffffffffffffff8 | ||
| 733 | ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff | ||
| 734 | dfffffffffffffffffffffffffffffff0ffffffffffffffffff8 | ||
| 735 | fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff | ||
| 736 | fffffffffffffffffffffffffffffffe1ffffffffffffffffff8 | ||
| 737 | fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff | ||
| 738 | fffffffffffffffffffffffffffffffe1ffffffffffffffffff8 | ||
| 739 | fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff | ||
| 740 | fffffffffffffffffffffffffffffffe1ffffffffffffffffff8 | ||
| 741 | fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff | ||
| 742 | fffffffffffffffffffffffffffffffe3ffffffffffffffffff8 | ||
| 743 | fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff | ||
| 744 | ffffffffffffffffffffffffffffffff3ffffffffffffffffff8 | ||
| 745 | ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff | ||
| 746 | ffffffffffffffffffffffffffffffff3ffffffffffffffffff8 | ||
| 747 | ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff | ||
| 748 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 749 | ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff | ||
| 750 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 751 | ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff | ||
| 752 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 753 | ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff | ||
| 754 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 755 | fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff | ||
| 756 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 757 | fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff | ||
| 758 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 759 | fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff | ||
| 760 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 761 | fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff | ||
| 762 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 763 | fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff | ||
| 764 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 765 | fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff | ||
| 766 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 767 | ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff | ||
| 768 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 769 | ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff | ||
| 770 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 771 | ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff | ||
| 772 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 773 | ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff | ||
| 774 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 775 | ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff | ||
| 776 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 777 | fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff | ||
| 778 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 779 | fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff | ||
| 780 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 781 | fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff | ||
| 782 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 783 | fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff | ||
| 784 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 785 | fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff | ||
| 786 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 787 | ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff | ||
| 788 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 789 | ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff | ||
| 790 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 791 | ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff | ||
| 792 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 793 | ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff | ||
| 794 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 795 | ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff | ||
| 796 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 797 | ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff | ||
| 798 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 799 | ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff | ||
| 800 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 801 | fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff | ||
| 802 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 803 | fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff | ||
| 804 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 805 | fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff | ||
| 806 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 807 | fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff | ||
| 808 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 809 | ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff | ||
| 810 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 811 | ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff | ||
| 812 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 813 | ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff | ||
| 814 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 815 | ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff | ||
| 816 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 817 | ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff | ||
| 818 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 819 | ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff | ||
| 820 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 821 | fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff | ||
| 822 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 823 | fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff | ||
| 824 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 825 | fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff | ||
| 826 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 827 | fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff | ||
| 828 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 829 | ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff | ||
| 830 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 831 | ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff | ||
| 832 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 833 | ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff | ||
| 834 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 835 | ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff | ||
| 836 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 837 | ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff | ||
| 838 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 839 | ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff | ||
| 840 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 841 | fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff | ||
| 842 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 843 | fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff | ||
| 844 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 845 | fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff | ||
| 846 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 847 | fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff | ||
| 848 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 849 | fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff | ||
| 850 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 851 | fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff | ||
| 852 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 853 | fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff | ||
| 854 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 855 | ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff | ||
| 856 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 857 | ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff | ||
| 858 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 859 | ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff | ||
| 860 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 861 | ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff | ||
| 862 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 863 | fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff | ||
| 864 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 865 | fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff | ||
| 866 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 867 | fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff | ||
| 868 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 869 | fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff | ||
| 870 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 871 | fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff | ||
| 872 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 873 | ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff | ||
| 874 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 875 | ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff | ||
| 876 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 877 | ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff | ||
| 878 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 879 | ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff | ||
| 880 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 881 | ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff | ||
| 882 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 883 | ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff | ||
| 884 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 885 | fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff | ||
| 886 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 887 | fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff | ||
| 888 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 889 | fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff | ||
| 890 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 891 | fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff | ||
| 892 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 893 | fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff | ||
| 894 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 895 | ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff | ||
| 896 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 897 | ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff | ||
| 898 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 899 | ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff | ||
| 900 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 901 | ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff | ||
| 902 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 903 | ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff | ||
| 904 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 905 | ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff | ||
| 906 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 907 | fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff | ||
| 908 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 909 | fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff | ||
| 910 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 911 | fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff | ||
| 912 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 913 | fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff | ||
| 914 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 915 | fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff | ||
| 916 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 917 | fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff | ||
| 918 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 919 | fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff | ||
| 920 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 921 | ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff | ||
| 922 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 923 | ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff | ||
| 924 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 925 | ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff | ||
| 926 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 927 | ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff | ||
| 928 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 929 | ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff | ||
| 930 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 931 | fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff | ||
| 932 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 933 | fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff | ||
| 934 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 935 | fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff | ||
| 936 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 937 | fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff | ||
| 938 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 939 | fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff | ||
| 940 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 941 | fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff | ||
| 942 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 943 | ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff | ||
| 944 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 945 | ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff | ||
| 946 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 947 | ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff | ||
| 948 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 949 | ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff | ||
| 950 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 951 | ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff | ||
| 952 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 953 | ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff | ||
| 954 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 955 | ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff | ||
| 956 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 957 | ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff | ||
| 958 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 959 | ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff | ||
| 960 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 961 | fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff | ||
| 962 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 963 | fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff | ||
| 964 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 965 | fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff | ||
| 966 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 967 | fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff | ||
| 968 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 969 | fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff | ||
| 970 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 971 | fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff | ||
| 972 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 973 | fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff | ||
| 974 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 975 | fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff | ||
| 976 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 977 | ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff | ||
| 978 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 979 | ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff | ||
| 980 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 981 | ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff | ||
| 982 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 983 | ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff | ||
| 984 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 985 | ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff | ||
| 986 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 987 | ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff | ||
| 988 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 989 | ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff | ||
| 990 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 991 | ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff | ||
| 992 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 993 | ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff | ||
| 994 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 995 | ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff | ||
| 996 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 997 | ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 998 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 999 | fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1000 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1001 | fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1002 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1003 | fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1004 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1005 | fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1006 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1007 | fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1008 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1009 | fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1010 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1011 | fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1012 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1013 | fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1014 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1015 | fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1016 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1017 | ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1018 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1019 | ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1020 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1021 | ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1022 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1023 | ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1024 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1025 | ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1026 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1027 | ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1028 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1029 | ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1030 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1031 | ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1032 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1033 | ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1034 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1035 | ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1036 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1037 | ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1038 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1039 | ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1040 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1041 | ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1042 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1043 | ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff | ||
| 1044 | fffffffffffffffffffffffffffffffffffffffffffffffffff8 | ||
| 1045 | |||
| 1046 | |||
| 1047 | showpage | ||
| 1048 | |||
| 1049 | % stop using temporary dictionary | ||
| 1050 | end | ||
| 1051 | |||
| 1052 | % restore original state | ||
| 1053 | origstate restore | ||
| 1054 | |||
| 1055 | %%Trailer | ||
diff --git a/etc/gnus-refcard.tex b/etc/gnus-refcard.tex new file mode 100644 index 00000000000..343de2d6f6f --- /dev/null +++ b/etc/gnus-refcard.tex | |||
| @@ -0,0 +1,1427 @@ | |||
| 1 | \documentclass{article} | ||
| 2 | |||
| 3 | % Previously we had five input LaTeX files (booklet.tex bk-lt.tex bk-a4.tex | ||
| 4 | % refcard.tex gnusref.tex) and two logo files (gnuslogo-refcard.eps and | ||
| 5 | % gnuslogo-booklet.eps). | ||
| 6 | % | ||
| 7 | % From this LaTeX file (gnus-refcard.tex) plus a single logo (gnus-logo.eps), | ||
| 8 | % we can generate the refcard and the booklet version. Appropriate Makefile | ||
| 9 | % rules were added. This simplifies to distribute the refcard with Emacs. | ||
| 10 | % | ||
| 11 | % (Reiner Steib, March 2005) | ||
| 12 | |||
| 13 | \usepackage{ifthen} | ||
| 14 | \ifthenelse{\isundefined{\booklettrue}}{ | ||
| 15 | \typeout{Creating reference card...} | ||
| 16 | }{ | ||
| 17 | \typeout{Creating reference booklet...}} | ||
| 18 | |||
| 19 | \usepackage{supertabular} | ||
| 20 | |||
| 21 | \newlength{\logowidth} \setlength{\logowidth} {6.861in} | ||
| 22 | \newlength{\logoheight} \setlength{\logoheight}{7.013in} | ||
| 23 | |||
| 24 | \usepackage{graphicx} | ||
| 25 | |||
| 26 | \usepackage{geometry} | ||
| 27 | |||
| 28 | \ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 29 | % Reference Card | ||
| 30 | |||
| 31 | \def\Guide{Card}\def\guide{card} | ||
| 32 | \def\logoscale{0.25} | ||
| 33 | |||
| 34 | % Page setup for the refcard: | ||
| 35 | |||
| 36 | % \setlength{\textwidth}{7.26in} \setlength{\textheight}{10in} | ||
| 37 | % \setlength{\topmargin}{-1.0in} | ||
| 38 | % % the same settings work for A4, although there is a bit of space at the | ||
| 39 | % % top and bottom of the page. | ||
| 40 | % \setlength{\oddsidemargin}{-0.5in} \setlength{\evensidemargin}{-0.5in} | ||
| 41 | |||
| 42 | \ifthenelse{\isundefined{\letterpapertrue}}{ | ||
| 43 | \geometry{a4paper,hmargin=10mm,tmargin=10mm,bmargin=35mm} | ||
| 44 | }{ | ||
| 45 | \geometry{hmargin=20mm,tmargin=10mm,bmargin=12mm} | ||
| 46 | } | ||
| 47 | |||
| 48 | }{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 49 | % Reference Booklet | ||
| 50 | |||
| 51 | \def\Guide{Booklet}\def\guide{booklet} | ||
| 52 | \def\logoscale{0.5}% FIXME: too large for 2up printing? --rsteib | ||
| 53 | |||
| 54 | % FIXME: Use geometry package. --rsteib | ||
| 55 | % \ifthenelse{\isundefined{\letterpapertrue}}{ | ||
| 56 | % \textwidth 4.9in \textheight 7.35in \topmargin -1.0in | ||
| 57 | % }{ | ||
| 58 | % \textwidth 4.5in \textheight 7.5in \topmargin -1.0in | ||
| 59 | % } | ||
| 60 | % \oddsidemargin -0.5in \evensidemargin -0.5in | ||
| 61 | \ifthenelse{\isundefined{\letterpapertrue}}{ | ||
| 62 | \geometry{a5paper,hmargin=10mm,tmargin=10mm,bmargin=4mm} | ||
| 63 | }{ | ||
| 64 | % FIXME: Use geometry package. --rsteib | ||
| 65 | \geometry{a5paper,hmargin=20mm,tmargin=10mm,bmargin=4mm} | ||
| 66 | } | ||
| 67 | |||
| 68 | \def\sec{\section} | ||
| 69 | \def\subsec{\subsection} | ||
| 70 | \def\subsubsec{\subsubsection} | ||
| 71 | \def\blankpage{\vspace*{\fill}\par | ||
| 72 | %\centerline{(This page intentionally left blank.)} | ||
| 73 | \par\vspace*{\fill}\pagebreak} | ||
| 74 | }%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 75 | |||
| 76 | % \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % % | ||
| 77 | %% include file for the Gnus refcard and booklet | ||
| 78 | |||
| 79 | \def\progver{5.10}\def\refver{5.10-2} % program and refcard versions | ||
| 80 | \def\date{Mar, 2005} | ||
| 81 | \def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$} | ||
| 82 | |||
| 83 | %% | ||
| 84 | \newlength{\keycolwidth} | ||
| 85 | \newenvironment{keys}[1]% #1 is the widest key | ||
| 86 | {\nopagebreak%\noindent% | ||
| 87 | \settowidth{\keycolwidth}{#1}% | ||
| 88 | \addtolength{\keycolwidth}{\tabcolsep}% | ||
| 89 | \addtolength{\keycolwidth}{-\columnwidth}% | ||
| 90 | \begin{supertabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}% | ||
| 91 | {\end{supertabular}\\} | ||
| 92 | |||
| 93 | %% uncomment the first definition if you do not want pagebreaks in maps | ||
| 94 | %%\newcommand{\esamepage}{\samepage} | ||
| 95 | \newcommand{\esamepage}{} | ||
| 96 | |||
| 97 | \newcommand*{\B}[1]{{\bf#1})} % bold l)etter | ||
| 98 | |||
| 99 | \newcommand{\Title}{% | ||
| 100 | \begin{center} | ||
| 101 | {\bf\LARGE Gnus \progver\ Reference \Guide\\} | ||
| 102 | %{\normalsize \Guide\ version \refver} | ||
| 103 | \end{center} | ||
| 104 | } | ||
| 105 | |||
| 106 | % \newcommand*{\LogoOLD}[1]{\centerline{% | ||
| 107 | % \makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight | ||
| 108 | % {\vfill\epsfig{figure=gnuslogo-#1}}\vspace{-\baselineskip}}}} | ||
| 109 | |||
| 110 | \newcommand*{\Logo}[1]{\centerline{% | ||
| 111 | \includegraphics[width=\logoscale\logowidth]{gnus-logo}}} | ||
| 112 | |||
| 113 | \newcommand{\Copyright}{% | ||
| 114 | \begin{center} | ||
| 115 | Copyright \copyright\ 1995 Free Software Foundation, Inc.\\* | ||
| 116 | Copyright \copyright\ 1995 Vladimir Alexiev | ||
| 117 | $<$vladimir@cs.ualberta.ca$>$.\\* | ||
| 118 | Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\* | ||
| 119 | Copyright \copyright\ 2001, 2002, 2003, 2005 \author.\\* | ||
| 120 | Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne | ||
| 121 | Ingebrigtsen.\\* | ||
| 122 | and the Emacs Help Bindings feature (C-h b).\\* | ||
| 123 | Gnus logo copyright \copyright\ 1995 Luis Fernandes.\\* | ||
| 124 | \end{center} | ||
| 125 | |||
| 126 | Permission is granted to make and distribute copies of this reference | ||
| 127 | \guide{} provided the copyright notice and this permission are preserved on | ||
| 128 | all copies. Please send corrections, additions and suggestions to the | ||
| 129 | current maintainer's email address. \Guide{} last edited on \date. | ||
| 130 | } | ||
| 131 | |||
| 132 | \newcommand{\Notes}{% | ||
| 133 | \subsection*{Notes} | ||
| 134 | {\esamepage | ||
| 135 | Gnus is complex. Currently it has some 876 interactive (user-callable) | ||
| 136 | functions. Of these 618 are in the two major modes (Group and | ||
| 137 | Summary/Article). Many of these functions have more than one binding, some | ||
| 138 | have 3 or even 4 bindings. The total number of keybindings is 677. So in | ||
| 139 | order to save 40\% space, every function is listed only once on this | ||
| 140 | \guide, under the ``more logical'' binding. Alternative bindings are given | ||
| 141 | in parentheses in the beginning of the description. | ||
| 142 | |||
| 143 | Many Gnus commands are affected by the numeric prefix. Normally you enter a | ||
| 144 | prefix by holding the Meta key and typing a number, but in most Gnus modes | ||
| 145 | you don't need to use Meta since the digits are not self-inserting. The | ||
| 146 | prefixed behavior of commands is given in [brackets]. Often the prefix is | ||
| 147 | used to specify: | ||
| 148 | |||
| 149 | \quad [distance] How many objects to move the point over. | ||
| 150 | |||
| 151 | \quad [scope] How many objects to operate on (including the current one). | ||
| 152 | |||
| 153 | \quad [p/p] The ``Process/Prefix Convention'': If a prefix is given then it | ||
| 154 | determines how many objects to operate on. Else if there are some objects | ||
| 155 | marked with the process mark \#, these are operated on. Else only the | ||
| 156 | current object is affected. | ||
| 157 | |||
| 158 | \quad [level] A group subscribedness level. Only groups with a lower or | ||
| 159 | equal level will be affected by the operation. If no prefix is given, | ||
| 160 | `gnus-group-default-list-level' is used. If | ||
| 161 | `gnus-group-use-permanent-levels', then a prefix to the `g' and `l' | ||
| 162 | commands will also set the default level. | ||
| 163 | |||
| 164 | \quad [score] An article score. If no prefix is given, | ||
| 165 | `gnus-summary-default-score' is used. \\*[\baselineskip] | ||
| 166 | % some keys | ||
| 167 | Gnus startup-commands:\\* | ||
| 168 | \begin{keys}{M-x gnus-unplugged} | ||
| 169 | M-x gnus & start Gnus. \\ | ||
| 170 | M-x gnus-no-server & start Gnus without connecting to server | ||
| 171 | (i.e. to read mail). \\ | ||
| 172 | \end{keys} | ||
| 173 | Additionally, there are the two commands \texttt{gnus-plugged} and | ||
| 174 | \texttt{gnus-unplugged}, which are only used if you want to download | ||
| 175 | news and/or read previously downloaded news offline (see C-c C-i g Gnus | ||
| 176 | Unplugged RET). Note: \texttt{gnus-no-server} ignores the stuff in | ||
| 177 | \texttt{gnus-agent-directory}, and thus does not allow you to use Gnus | ||
| 178 | Unplugged. | ||
| 179 | % | ||
| 180 | \begin{keys}{C-c C-i} | ||
| 181 | C-c C-i & Go to the Gnus online {\bf info}.\\ | ||
| 182 | C-c C-b & Send a Gnus {\bf bug} report.\\ | ||
| 183 | \end{keys} | ||
| 184 | }} | ||
| 185 | |||
| 186 | \newcommand{\GroupLevels}{% | ||
| 187 | The table below assumes that you use the default Gnus levels. | ||
| 188 | Fill your user-specific levels in the blank cells.\\[1\baselineskip] | ||
| 189 | \begin{tabular}{|c|l|l|} | ||
| 190 | \hline | ||
| 191 | Level & Groups & Status \\ | ||
| 192 | \hline | ||
| 193 | 1 & draft/mail groups & \\ | ||
| 194 | 2 & mail groups & \\ | ||
| 195 | 3 & & subscribed \\ | ||
| 196 | 4 & & \\ | ||
| 197 | 5 & default list level & \\ | ||
| 198 | \hline | ||
| 199 | 6 & & unsubscribed \\ | ||
| 200 | 7 & & \\ | ||
| 201 | \hline | ||
| 202 | 8 & & zombies \\ | ||
| 203 | \hline | ||
| 204 | 9 & & killed \\ | ||
| 205 | \hline | ||
| 206 | \end{tabular}} | ||
| 207 | |||
| 208 | \newcommand{\MarkCharacters}{% | ||
| 209 | {\esamepage If a command directly sets a mark, it is shown in parentheses.\\* | ||
| 210 | \newlength{\markcolwidth} | ||
| 211 | \settowidth{\markcolwidth}{` '}% widest character | ||
| 212 | \addtolength{\markcolwidth}{4\tabcolsep} | ||
| 213 | \addtolength{\markcolwidth}{-\columnwidth} | ||
| 214 | \newlength{\markdblcolwidth} | ||
| 215 | \setlength{\markdblcolwidth}{\columnwidth} | ||
| 216 | \addtolength{\markdblcolwidth}{-2\tabcolsep} | ||
| 217 | \begin{tabular}{|c|p{-\markcolwidth}|} | ||
| 218 | \hline | ||
| 219 | \multicolumn{2}{|p{\markdblcolwidth}|}{{\bf ``Read'' Marks.} | ||
| 220 | All these marks appear in the first column of the summary line, and so | ||
| 221 | are mutually exclusive.}\\ | ||
| 222 | \hline | ||
| 223 | ` ' & (M-u, M SPC, M c) Not read.\\ | ||
| 224 | ! & (!, M !, M t) Ticked (interesting).\\ | ||
| 225 | ? & (?, M ?) Dormant (only followups are interesting).\\ | ||
| 226 | E & (E, M e, M x) {\bf Expirable}. Only has effect in mail groups.\\ | ||
| 227 | G & (C, B DEL) Canceled article (or deleted in mailgroups).\\ | ||
| 228 | \$ & (M-d, M s x, S x). Marked as spam.\\ | ||
| 229 | \hline\hline | ||
| 230 | \multicolumn{2}{|p{\markdblcolwidth}|} | ||
| 231 | {The marks below mean that the article | ||
| 232 | is read (killed, uninteresting), and have more or less the same effect. | ||
| 233 | Some commands however explicitly differentiate between them (e.g.\ M | ||
| 234 | M-C-r, adaptive scoring).}\\ | ||
| 235 | \hline | ||
| 236 | r & (d, M d, M r) Deleted (marked as {\bf read}).\\ | ||
| 237 | C & (M C; M C-c; M H; c, Z c; Z n; Z C) Killed by {\bf catch-up}.\\ | ||
| 238 | F & SOUPed article. See the manual.\\ | ||
| 239 | O & {\bf Old} (read in a previous session).\\ | ||
| 240 | K & (k, M k; C-k, M K) {\bf Killed}.\\ | ||
| 241 | M & Article marked as read by duplicate suppression.\\ | ||
| 242 | Q & Article is part of a sparse thread (see ``Threading'' | ||
| 243 | in the manual).\\ | ||
| 244 | R & {\bf Read} (viewed in actuality).\\ | ||
| 245 | X & Killed by a kill file.\\ | ||
| 246 | Y & Killed due to low score.\\ | ||
| 247 | \hline\multicolumn{2}{c}{\vspace{1ex}}\\\hline | ||
| 248 | \multicolumn{2}{|p{\markdblcolwidth}|} | ||
| 249 | {{\bf Marks not affecting visibility}}\\ | ||
| 250 | \hline | ||
| 251 | \# & (\#, M \#, M P p) Processable (will be affected by the next operation). | ||
| 252 | [2]\\ | ||
| 253 | A & {\bf Answered} (followed-up or replied). [2]\\ | ||
| 254 | F & Forwarded. [2]\\ | ||
| 255 | $\ast$ & Cached. [2]\\ | ||
| 256 | S & Saved. [2]\\ | ||
| 257 | N & Recently arrived. [2]\\ | ||
| 258 | . & Unseen. [2]\\ | ||
| 259 | + & Over default score. [3]\\ | ||
| 260 | $-$ & Under default score. [3]\\ | ||
| 261 | $=$ & Has children (thread underneath it). Add `\%e' to | ||
| 262 | `gnus-summary-line-format'. [3]\\ | ||
| 263 | \hline | ||
| 264 | \end{tabular} | ||
| 265 | }} | ||
| 266 | |||
| 267 | \newcommand{\GroupModeGeneral}{% | ||
| 268 | \begin{keys}{C-c M-C-x} | ||
| 269 | RET & (=) Enter this group. [Prefix: how many (read) articles to fetch. | ||
| 270 | Positive: newest articles, negative: oldest ones; non-numerical: | ||
| 271 | view all articles, not just unread]\\ | ||
| 272 | M-RET & Enter group quickly.\\ | ||
| 273 | M-SPC & Same as RET but does not expunge and hide dormants.\\ | ||
| 274 | M-C-RET & Enter group without any processing, changes will not be permanent.\\ | ||
| 275 | SPC & Select this group and display the first (unread) article. [Same | ||
| 276 | prefix as above.]\\ | ||
| 277 | ? & Give a very short help message.\\ | ||
| 278 | $<$ & Go to the beginning of the Group buffer.\\ | ||
| 279 | $>$ & Go to the end of the Group buffer.\\ | ||
| 280 | , & Jump to the lowest-level group with unread articles.\\ | ||
| 281 | . & Jump to the first group with unread articles.\\ | ||
| 282 | \^{} & Enter the Server buffer mode.\\ | ||
| 283 | a & Post an {\bf article} to a group | ||
| 284 | [Prefix: use group under point to find posting-style].\\ | ||
| 285 | b & Find {\bf bogus} groups and delete them.\\ | ||
| 286 | c & Mark all unticked articles in this group as read ({\bf catch-up}). | ||
| 287 | [p/p]\\ | ||
| 288 | g & Check the server for new articles ({\bf get}). [level]\\ | ||
| 289 | M-g & Check the server for new articles in this group ({\bf get}). [p/p]\\ | ||
| 290 | j & {\bf Jump} to a group.\\ | ||
| 291 | m & {\bf Mail} a message to someone | ||
| 292 | [Prefix: use group under point to find posting-style].\\ | ||
| 293 | n & Go to the {\bf next} group with unread articles. [distance]\\ | ||
| 294 | M-n & Go to the {\bf next} group on the same or lower level. | ||
| 295 | [distance]\\ | ||
| 296 | p & (DEL) Go to the {\bf previous} group with unread articles. | ||
| 297 | [distance]\\ | ||
| 298 | M-p & Go to the {\bf previous} group on the same or lower level. [distance]\\ | ||
| 299 | q & {\bf Quit} Gnus.\\ | ||
| 300 | r & Re-read the init file ({\bf reset}).\\ | ||
| 301 | s & {\bf Save} the `.newsrc.eld' file (and `.newsrc' if | ||
| 302 | `gnus-save-newsrc-file').\\ | ||
| 303 | z & Suspend (kill all buffers of) Gnus.\\ | ||
| 304 | B & {\bf Browse} a foreign server.\\ | ||
| 305 | C & Mark all articles in this group as read ({\bf Catch-up}). [p/p]\\ | ||
| 306 | F & {\bf Find} new groups and process them.\\ | ||
| 307 | N & Go to the {\bf next} group. [distance]\\ | ||
| 308 | P & Go to the {\bf previous} group. [distance]\\ | ||
| 309 | Q & {\bf Quit} Gnus without saving any startup (.newsrc) files.\\ | ||
| 310 | R & {\bf Restart} Gnus.\\ | ||
| 311 | Z & Clear the dribble buffer.\\ | ||
| 312 | M-c & Clear data from group (marks and list of read articles). \\ | ||
| 313 | C-c C-s & {\bf Sort} the groups by name, number of unread articles, or level | ||
| 314 | (depending on `gnus-group-sort-function').\\ | ||
| 315 | C-c C-x & Run all expirable articles in this group through the {\bf expiry} | ||
| 316 | process.\\ | ||
| 317 | C-c M-C-x & Run all articles in all groups through the {\bf expiry} process.\\ | ||
| 318 | C-c M-g & Activate all {\bf groups}.\\ | ||
| 319 | C-c C-i & Gnus online-manual ({\bf info}).\\ | ||
| 320 | C-x C-t & {\bf Transpose} two groups.\\ | ||
| 321 | H f & Fetch this group's {\bf FAQ} (using ange-ftp).\\ | ||
| 322 | H c & Display this group's {\bf charter}. [Prefix: query for group]\\ | ||
| 323 | H C & Display this group's {\bf control message} (using | ||
| 324 | ange-ftp). [Prefix: query for group]\\ | ||
| 325 | H v & (V) Display the Gnus {\bf version} number.\\ | ||
| 326 | H d & (C-c C-d) Show the {\bf description} of this group | ||
| 327 | [Prefix: re-read from server].\\ | ||
| 328 | M-d & {\bf Describe} all groups. [Prefix: re-read from server]\\ | ||
| 329 | D g & Regenerate a Sieve script from group parameters.\\ | ||
| 330 | D u & Regenerate Sieve script and {\bf upload} to server.\\ | ||
| 331 | \end{keys} | ||
| 332 | } | ||
| 333 | |||
| 334 | \newcommand{\ListGroups}{% | ||
| 335 | {\esamepage | ||
| 336 | \begin{keys}{A M} | ||
| 337 | A d & (C-c C-M-a) List all groups whose names or {\bf descriptions} match a regexp.\\ | ||
| 338 | A k & (C-c C-l) List all {\bf killed} groups. | ||
| 339 | [Prefix: look at active-file from server]\\ | ||
| 340 | A l & List all groups on a specific level. | ||
| 341 | [Prefix: also list groups with no unread articles]\\ | ||
| 342 | A a & (C-c C-a) List all groups whose names match a regexp | ||
| 343 | ({\bf apropos}).\\ | ||
| 344 | A A & List the server's active-file.\\ | ||
| 345 | A M & List groups that {\bf match} a regexp.\\ | ||
| 346 | A m & List groups that {\bf match} a regexp and have unread articles. | ||
| 347 | [level]\\ | ||
| 348 | A s & (l) List all {\bf subscribed} groups with unread articles. | ||
| 349 | [level; 5 and lower is the default]\\ | ||
| 350 | A u & (L) List all groups (including read and {\bf unsubscribed}). | ||
| 351 | [level; 7 and lower is the default]\\ | ||
| 352 | A z & List all {\bf zombie} groups.\\ | ||
| 353 | A c & List all groups with cached articles. [level]\\ | ||
| 354 | A ? & List all groups with dormant articles. [level]\\ | ||
| 355 | \end{keys} | ||
| 356 | } | ||
| 357 | |||
| 358 | \newcommand{\CreateEditGroups}{% | ||
| 359 | {\esamepage | ||
| 360 | The select methods are indicated in parentheses.\\* | ||
| 361 | \begin{keys}{G DEL} | ||
| 362 | G a & Make the Gnus list {\bf archive} group. (nndir over ange-ftp)\\ | ||
| 363 | G c & {\bf Customize} this group's parameters.\\ | ||
| 364 | G d & Make a {\bf directory} group (every file must be a posting and files | ||
| 365 | must have numeric names). (nndir)\\ | ||
| 366 | G D & Enter a {\bf directory} as a (temporary) group. | ||
| 367 | (nneething without recording articles read)\\ | ||
| 368 | G e & (M-e) {\bf Edit} this group's select method.\\ | ||
| 369 | G E & {\bf Edit} this group's info (select method, articles read, etc).\\ | ||
| 370 | G f & Make a group based on a {\bf file}. (nndoc)\\ | ||
| 371 | G h & Make the Gnus {\bf help} (documentation) group. (nndoc)\\ | ||
| 372 | G k & Make a {\bf kiboze} group. (nnkiboze)\\ | ||
| 373 | G m & {\bf Make} a new group.\\ | ||
| 374 | G p & Edit this group's {\bf parameters}.\\ | ||
| 375 | G r & Rename this group (does not work with read-only groups!).\\ | ||
| 376 | G u & Create one of the groups mentioned in gnus-{\bf useful}-groups.\\ | ||
| 377 | G v & Add this group to a {\bf virtual} group. [p/p]\\ | ||
| 378 | G V & Make a new empty {\bf virtual} group. (nnvirtual)\\ | ||
| 379 | G w & Create ephemeral group based on web-search. [Prefix: make solid group | ||
| 380 | instead]\\ | ||
| 381 | G R & Make an {\bf RSS} group.\\ | ||
| 382 | G DEL & {\bf Delete} group [Prefix: delete all articles as well].\\ | ||
| 383 | G x & Expunge all deleted articles in an nnimap mailbox.\\ | ||
| 384 | G l & Edit ACL (Access Control {\bf List}) for an nnimap mailbox.\\ | ||
| 385 | \end{keys} | ||
| 386 | You can also create mail-groups and read your mail with Gnus (very useful | ||
| 387 | if you are subscribed to mailing lists), using one of the methods | ||
| 388 | nnmbox, nnbabyl, nnml, nnmh, or nnfolder. Read about it in the online info | ||
| 389 | (C-c C-i g Reading Mail RET). | ||
| 390 | }} | ||
| 391 | |||
| 392 | % TODO: | ||
| 393 | \newcommand{\SoupCommands}{% | ||
| 394 | \begin{keys}{G s w} | ||
| 395 | G s b & gnus-group-brew-soup: not documented.\\ | ||
| 396 | G s p & gnus-soup-pack-packet: not documented.\\ | ||
| 397 | G s r & nnsoup-pack-replies: not documented.\\ | ||
| 398 | G s s & gnus-soup-send-replies: not documented.\\ | ||
| 399 | G s w & gnus-soup-save-areas: not documented.\\ | ||
| 400 | \end{keys}} | ||
| 401 | |||
| 402 | \newcommand{\MarkGroups}{% | ||
| 403 | \begin{keys}{M m} | ||
| 404 | M m & (\#) Set the process {\bf mark} on this group. [scope]\\ | ||
| 405 | M r & Mark all groups matching regular expression.\\ | ||
| 406 | M u & (M-\#) Remove the process mark from this group ({\bf unmark}). | ||
| 407 | [scope]\\ | ||
| 408 | M U & Remove the process mark from all groups (\textbf{umark all}).\\ | ||
| 409 | M w & Mark all groups in the current region. [prefix: unmark]\\ | ||
| 410 | M b & Mark all groups in the {\bf buffer}. [prefix: unmark]\\ | ||
| 411 | \end{keys}} | ||
| 412 | |||
| 413 | \newcommand{\GroupTopicsGeneral}{% | ||
| 414 | {\esamepage | ||
| 415 | Topics are ``categories'' for groups. Press t in the group-buffer to | ||
| 416 | toggle gnus-topic-mode (C-c C-i g Group Topics RET).\\* | ||
| 417 | \begin{keys}{C-c C-x} | ||
| 418 | T n & Prompt for topic {\bf name} and create it.\\ | ||
| 419 | T m & {\bf Move} the current group to some other topic [p/p].\\ | ||
| 420 | T j & {\bf Jump} to a topic.\\ | ||
| 421 | T c & {\bf Copy} the current group to some other topic [p/p].\\ | ||
| 422 | T D & Remove (not delete) the current group [p/p].\\ | ||
| 423 | T M & {\bf Move} all groups matching a regexp to a topic.\\ | ||
| 424 | T C & {\bf Copy} all groups matching a regexp to a topic.\\ | ||
| 425 | T H & Toggle {\bf hiding} of empty topics.\\ | ||
| 426 | T r & {\bf Rename} a topic.\\ | ||
| 427 | T DEL & Delete an empty topic.\\ | ||
| 428 | T \# & Mark all groups in the current topic with the process-mark.\\ | ||
| 429 | T M-\# & Remove the process-mark from all groups in the current topic.\\ | ||
| 430 | T TAB & (TAB) Indent current topic [Prefix: unindent].\\ | ||
| 431 | M-TAB & Unindent the current topic.\\ | ||
| 432 | RET & (SPC) Either unfold topic or enter group [level].\\ | ||
| 433 | T s & {\bf Show} the current topic. [Prefix: show permanently]\\ | ||
| 434 | T h & {\bf Hide} the current topic. [Prefix: hide permanently]\\ | ||
| 435 | C-c C-x & Expire all articles in current group or topic.\\ | ||
| 436 | C-k & {\bf Kill} a group or topic.\\ | ||
| 437 | C-y & {\bf Yank} a group or topic.\\ | ||
| 438 | A T & List active-file using {\bf topics}.\\ | ||
| 439 | G p & Edit topic-{\bf parameters}.\\ | ||
| 440 | T M-n & Go to {\bf next} topic. [distance]\\ | ||
| 441 | T M-p & Go to {\bf previous} topic. [distance]\\ | ||
| 442 | \end{keys} | ||
| 443 | } | ||
| 444 | } | ||
| 445 | |||
| 446 | \newcommand{\TopicSorting}{% | ||
| 447 | {\esamepage | ||
| 448 | \begin{keys}{T S m} | ||
| 449 | T S a & Sort {\bf alphabetically}.\\ | ||
| 450 | T S u & Sort by number of {\bf unread} articles.\\ | ||
| 451 | T S l & Sort by group {\bf level}.\\ | ||
| 452 | T S v & Sort by group score ({\bf value}).\\ | ||
| 453 | T S r & Sort by group {\bf rank}.\\ | ||
| 454 | T S m & Sort by {\bf method}.\\ | ||
| 455 | T S e & Sort by {\bf server} name.\\ | ||
| 456 | T S s & Sort according to `gnus-group-sort-function'.\\ | ||
| 457 | \end{keys} | ||
| 458 | With a prefix these commands will sort in reverse order. | ||
| 459 | } | ||
| 460 | } | ||
| 461 | |||
| 462 | \newcommand{\SubscribeKillYankGroups}{% | ||
| 463 | {\esamepage | ||
| 464 | \begin{keys}{S C-k} | ||
| 465 | S k & (C-k) {\bf Kill} this group.\\ | ||
| 466 | S l & Set the {\bf level} of this group. [p/p]\\ | ||
| 467 | S s & (U) Prompt for a group and toggle its {\bf subscription}.\\ | ||
| 468 | S t & (u) {\bf Toggle} subscription to this group. [p/p]\\ | ||
| 469 | S w & (C-w) Kill all groups in the region.\\ | ||
| 470 | S y & (C-y) {\bf Yank} the last killed group.\\ | ||
| 471 | S z & Kill all {\bf zombie} groups.\\ | ||
| 472 | S C-k & Kill all groups on a certain level.\\ | ||
| 473 | \end{keys} | ||
| 474 | } | ||
| 475 | } | ||
| 476 | |||
| 477 | \newcommand{\SummaryModeGeneral}{% | ||
| 478 | {\esamepage | ||
| 479 | \begin{keys}{M-RET} | ||
| 480 | SPC & (A SPC, A n) Select an article, scroll it one page, move to the | ||
| 481 | next one.\\ | ||
| 482 | DEL & (A DEL, A p, b) Scroll this article one page back. [distance]\\ | ||
| 483 | RET & (A RET) Scroll this article one line forward. [distance]\\ | ||
| 484 | M-RET & (A M-RET) Scroll this article one line backward. [distance]\\ | ||
| 485 | = & Expand the Summary window (fullsize). | ||
| 486 | [Prefix: shrink to display article window]\\ | ||
| 487 | % | ||
| 488 | \& & Execute a command on all articles whose header matches a regexp. | ||
| 489 | [Prefix: move backwards]\\ | ||
| 490 | M-\& & Execute a command on all articles having the process mark.\\ | ||
| 491 | % | ||
| 492 | M-n & (G M-n) Go to the {\bf next} summary line of an unread article. | ||
| 493 | [distance]\\ | ||
| 494 | M-p & (G M-p) Go to the {\bf previous} summary line of an unread article. | ||
| 495 | [distance]\\ | ||
| 496 | M-s & {\bf Search} through all subsequent articles for a regexp.\\ | ||
| 497 | M-r & Search through all previous articles for a regexp.\\ | ||
| 498 | % | ||
| 499 | A P & {\bf Postscript}-print current buffer.\\ | ||
| 500 | % | ||
| 501 | M-k & Edit this group's {\bf kill} file.\\ | ||
| 502 | M-K & Edit the general {\bf kill} file.\\ | ||
| 503 | % | ||
| 504 | C-t & Toggle {\bf truncation} of summary lines.\\ | ||
| 505 | Y g & Regenerate the summary-buffer.\\ | ||
| 506 | Y c & Insert all cached articles into the summary-buffer.\\ | ||
| 507 | % | ||
| 508 | M-C-e & {\bf Edit} the group-parameters.\\ | ||
| 509 | M-C-a & Customize the group-parameters.\\ | ||
| 510 | % | ||
| 511 | % article handling | ||
| 512 | % | ||
| 513 | A $<$ & ($<$, A b) Scroll to the beginning of this article.\\ | ||
| 514 | A $>$ & ($>$, A e) Scroll to the end of this article.\\ | ||
| 515 | A s & (s) Perform an i{\bf search} in the article buffer.\\ | ||
| 516 | % | ||
| 517 | A D & (C-d) Un{\bf digestify} this article into a separate group. | ||
| 518 | [Prefix: force digest]\\ | ||
| 519 | M-C-d & Like C-d, but open several documents in nndoc-groups, wrapped | ||
| 520 | in an nnvirtual group [p/p]\\ | ||
| 521 | % | ||
| 522 | A g & (g) (Re)fetch this article ({\bf get}). [Prefix: get raw version]\\ | ||
| 523 | A r & (\^{}, A \^{}) Fetch the parent(s) of this article. | ||
| 524 | [Prefix: if positive fetch \textit{n} ancestors; | ||
| 525 | negative: fetch only the \textit{n}th ancestor]\\ | ||
| 526 | A t & {\bf Translate} this article.\\ | ||
| 527 | A R & Fetch all articles mentioned in the {\bf References}-header.\\ | ||
| 528 | A T & Fetch full \textbf{thread} in which the current article appears.\\ | ||
| 529 | M-\^{} & Fetch the article with a given Message-ID.\\ | ||
| 530 | S y & {\bf Yank} the current article into an existing message-buffer. | ||
| 531 | [p/p]\\ | ||
| 532 | A M & Setup group parameters for {\bf mailing} lists from | ||
| 533 | headers. [Prefix: replace old settings]\\ | ||
| 534 | \end{keys} | ||
| 535 | } | ||
| 536 | } | ||
| 537 | |||
| 538 | \newcommand{\MIMESummary}{% | ||
| 539 | {\esamepage | ||
| 540 | For the commands operating on one MIME part (a subset of gnus-article-*), a | ||
| 541 | prefix selects which part to operate on. If the point is placed over a | ||
| 542 | MIME button in the article buffer, use the corresponding bindings for the | ||
| 543 | article buffer instead. | ||
| 544 | |||
| 545 | \begin{keys}{W M w} | ||
| 546 | K v & (b, W M b) {\bf View} the MIME-part.\\ | ||
| 547 | K o & {\bf Save} the MIME part.\\ | ||
| 548 | K c & {\bf Copy} the MIME part.\\ | ||
| 549 | K e & View the MIME part {\bf externally}.\\ | ||
| 550 | K i & View the MIME part {\bf internally}.\\ | ||
| 551 | K $\mid$ & Pipe the MIME part to an external command.\\ | ||
| 552 | K b & Make all the MIME parts have buttons in front of them.\\ | ||
| 553 | K m & Try to repair {\bf multipart-headers}.\\ | ||
| 554 | K C & View the MIME part using a different {\bf charset}.\\ | ||
| 555 | X m & Save all parts matching a MIME type to a directory. [p/p]\\ | ||
| 556 | M-t & Toggle the buttonized display of the article buffer.\\ | ||
| 557 | W M w & Decode RFC2047-encoded words in the article headers.\\ | ||
| 558 | W M c & Decode encoded article bodies. [Prefix: prompt for charset]\\ | ||
| 559 | W M v & View all MIME parts in the current article.\\ | ||
| 560 | \end{keys} | ||
| 561 | } | ||
| 562 | } | ||
| 563 | |||
| 564 | \newcommand{\SortSummary}{% | ||
| 565 | {\esamepage | ||
| 566 | \begin{keys}{C-c C-s C-a} | ||
| 567 | C-c C-s C-a & Sort the summary-buffer by {\bf author}.\\ | ||
| 568 | % C-c C-s C-t & Sort the summary-buffer by {\bf recipient}.\\ % No Gnus | ||
| 569 | C-c C-s C-d & Sort the summary-buffer by {\bf date}.\\ | ||
| 570 | C-c C-s C-i & Sort the summary-buffer by article score.\\ | ||
| 571 | C-c C-s C-l & Sort the summary-buffer by amount of {\bf lines}.\\ | ||
| 572 | C-c C-s C-c & Sort the summary-buffer by length.\\ | ||
| 573 | C-c C-s C-n & Sort the summary-buffer by article {\bf number}.\\ | ||
| 574 | C-c C-s C-s & Sort the summary-buffer by {\bf subject}.\\ | ||
| 575 | C-c C-s C-r & Sort the summary-buffer {\bf randomly}.\\ | ||
| 576 | C-c C-s C-o & Sort the summary-buffer using the default method.\\ | ||
| 577 | \end{keys} | ||
| 578 | With a prefix these functions sort in reverse order. | ||
| 579 | } | ||
| 580 | } | ||
| 581 | |||
| 582 | \newcommand{\MailGroups}{% formerly \Bsubmap | ||
| 583 | {\esamepage | ||
| 584 | These commands (except `B c') are only valid in a mail group.\\* | ||
| 585 | \begin{keys}{B M-C-e} | ||
| 586 | B DEL & (B backspace, B delete) {\bf Delete} the mail article from disk (!). | ||
| 587 | [p/p]\\ | ||
| 588 | B B & Crosspost this article to another group.\\ | ||
| 589 | B c & {\bf Copy} this article from any group to a mail group. [p/p]\\ | ||
| 590 | B e & {\bf Expire} all expirable articles in this group. [p/p]\\ | ||
| 591 | B i & {\bf Import} a random file into this group.\\ | ||
| 592 | B I & Create an empty article in this group.\\ | ||
| 593 | B m & {\bf Move} the article from one mail group to another. [p/p]\\ | ||
| 594 | B p & Query whether the article was {\bf posted} as well.\\ | ||
| 595 | B q & {\bf Query} where the article will end up after fancy splitting\\ | ||
| 596 | B r & {\bf Respool} this mail article. [p/p]\\ | ||
| 597 | B t & {\bf Trace} the fancy splitting patterns applied to this article.\\ | ||
| 598 | B w & (e) Edit this article.\\ | ||
| 599 | B M-C-e & {\bf Expunge} (delete from disk) all expirable articles in this group | ||
| 600 | (!). [p/p]\\ | ||
| 601 | K E & {\bf Encrypt} article body. [p/p]\\ | ||
| 602 | \end{keys} | ||
| 603 | } | ||
| 604 | } | ||
| 605 | |||
| 606 | \newcommand{\DraftGroup}{% formerly \Dsubmap | ||
| 607 | {\esamepage | ||
| 608 | The ``drafts''-group contains messages that have been saved but not sent | ||
| 609 | and rejected articles. \\* | ||
| 610 | \begin{keys}{B DEL} | ||
| 611 | D e & \textbf{edit} message.\\ | ||
| 612 | D s & \textbf{Send} message. [p/p]\\ | ||
| 613 | D S & \textbf{Send} all messages.\\ | ||
| 614 | D t & \textbf{Toggle} sending (mark as unsendable).\\ | ||
| 615 | B DEL & \textbf{Delete} message (like in mailgroup).\\ | ||
| 616 | \end{keys} | ||
| 617 | } | ||
| 618 | } | ||
| 619 | |||
| 620 | \newcommand{\SelectArticles}{% formerly \Gsubmap | ||
| 621 | {\esamepage | ||
| 622 | These commands select the target article. They do not understand the prefix.\\* | ||
| 623 | \begin{keys}{G C-n} | ||
| 624 | h & Enter article-buffer.\\ | ||
| 625 | G b & (,) Go to the {\bf best} article (the one with highest score).\\ | ||
| 626 | G f & (.) Go to the {\bf first} unread article.\\ | ||
| 627 | G n & (n) Go to the {\bf next} unread article.\\ | ||
| 628 | G p & (p) Go to the {\bf previous} unread article.\\ | ||
| 629 | % | ||
| 630 | G N & (N) Go to {\bf the} next article.\\ | ||
| 631 | G P & (P) Go to the {\bf previous} article.\\ | ||
| 632 | % | ||
| 633 | G C-n & (M-C-n) Go to the {\bf next} article with the same subject.\\ | ||
| 634 | G C-p & (M-C-p) Go to the {\bf previous} article with the same subject.\\ | ||
| 635 | % | ||
| 636 | G l & (l) Go to the previously read article ({\bf last-read-article}).\\ | ||
| 637 | G o & Pop an article off the summary history and go to it.\\ | ||
| 638 | % | ||
| 639 | G g & Search an article via subject.\\ | ||
| 640 | G j & (j) Search an article via Message-Id or subject.\\ | ||
| 641 | \end{keys} | ||
| 642 | } | ||
| 643 | } | ||
| 644 | |||
| 645 | \newcommand{\ArticleModeGeneral}{% | ||
| 646 | {\esamepage | ||
| 647 | The normal navigation keys work in Article mode. Some additional keys are:\\ | ||
| 648 | \begin{keys}{C-c RET} | ||
| 649 | C-c \^{} & Get the article with the Message-ID near point.\\ | ||
| 650 | C-c RET & Send reply to address near point.\\ | ||
| 651 | h & Go to the \textbf{header}-line of the article in the | ||
| 652 | summary-buffer.\\ | ||
| 653 | s & Go to \textbf{summary}-buffer.\\ | ||
| 654 | RET & (middle mouse button) Activate the button at point to follow | ||
| 655 | an URL or Message-ID.\\ | ||
| 656 | TAB & Move the point to the next button.\\ | ||
| 657 | M-TAB & Move point to previous button.\\ | ||
| 658 | \end{keys} | ||
| 659 | } | ||
| 660 | } | ||
| 661 | |||
| 662 | \newcommand{\WashArticle}{% formerly \Wsubmap | ||
| 663 | {\esamepage | ||
| 664 | \begin{keys}{W W H} | ||
| 665 | W 6 & Translate a base64 article.\\ | ||
| 666 | W a & Strip certain {\bf headers} from body.\\ | ||
| 667 | W b & Make Message-IDs and URLs in the article mouse-clickable | ||
| 668 | {\bf buttons}.\\ | ||
| 669 | W c & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\ | ||
| 670 | W d & Treat {\bf dumbquotes}.\\ | ||
| 671 | W e & Treat {\bf emphasized} text.\\ | ||
| 672 | W h & Treat {\bf HTML}.\\ | ||
| 673 | W l & (w) Remove page breaks ({\bf\^{}L}) from the article.\\ | ||
| 674 | W m & {\bf Morse} decode article.\\ | ||
| 675 | W o & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\ | ||
| 676 | W p & Verify X-{\bf PGP}-Sig header.\\ | ||
| 677 | W q & Treat {\bf quoted}-printable in the article.\\ | ||
| 678 | W r & (C-c C-r) Do a Caesar {\bf rotate} (rot13) on the article.\\ | ||
| 679 | W s & Verify (and decrypt) a {\bf signed} message.\\ | ||
| 680 | W t & (t) {\bf Toggle} display of all headers.\\ | ||
| 681 | W u & {\bf Unsplit} broken URLs.\\ | ||
| 682 | W v & (v) Toggle permanent {\bf verbose} displaying of all headers.\\ | ||
| 683 | W w & Do word {\bf wrap} in the article.\\ | ||
| 684 | W B & Add clickable {\bf buttons} to the article headers.\\ | ||
| 685 | W C & {\bf Capitalize} first word in each sentence.\\ | ||
| 686 | W Q & Fill long lines.\\ | ||
| 687 | W Z & Translate a HZ-encoded article.\\ | ||
| 688 | % | ||
| 689 | W G u & {\bf Unfold} folded header lines.\\ | ||
| 690 | W G f & {\bf Fold} all header lines.\\ | ||
| 691 | W G n & Unfold {\bf Newsgroups:} and Follow-Up-To:.\\ | ||
| 692 | % | ||
| 693 | W Y c & Repair broken {\bf citations}.\\ | ||
| 694 | W Y a & Repair broken {\bf attribution} lines.\\ | ||
| 695 | W Y u & {\bf Unwrap} broken citation lines.\\ | ||
| 696 | W Y f & Do a {\bf full} deuglification (W Y c, W Y a, W Y u).\\ | ||
| 697 | \end{keys} | ||
| 698 | } | ||
| 699 | } | ||
| 700 | |||
| 701 | \newcommand{\BlankAndWhitespace}{% | ||
| 702 | {\esamepage | ||
| 703 | \begin{keys}{W E w} | ||
| 704 | W E l & Strip blank {\bf lines} from the beginning of the article.\\ | ||
| 705 | W E m & Replace blank lines with empty lines and remove {\bf multiple} | ||
| 706 | blank lines.\\ | ||
| 707 | W E t & Remove {\bf trailing} blank lines.\\ | ||
| 708 | W E a & Strip blank lines at the beginning and the end | ||
| 709 | (W E l, W E m and W E t).\\ | ||
| 710 | W E A & Strip {\bf all} blank lines.\\ | ||
| 711 | W E s & Strip leading blank lines from the article body.\\ | ||
| 712 | W E e & Strip trailing blank lines from the article body.\\ | ||
| 713 | W E w & Remove leading {\bf whitespace} from all headers.\\ | ||
| 714 | \end{keys} | ||
| 715 | } | ||
| 716 | } | ||
| 717 | |||
| 718 | \newcommand{\Picons}{% | ||
| 719 | {\esamepage | ||
| 720 | \begin{keys}{W D D} | ||
| 721 | W D s & (W g) Display {\bf smilies}.\\ | ||
| 722 | W D x & (W f) Look for and display any X-{\bf Face} headers.\\ | ||
| 723 | W D d & Display any Face headers.\\ | ||
| 724 | W D n & Toggle picons in {\bf Newsgroups} and Followup-To.\\ | ||
| 725 | W D m & Toggle picons in {\bf mail} headers (To and Cc).\\ | ||
| 726 | W D f & Toggle picons in {\bf From}.\\ | ||
| 727 | W D D & Remove all images from the article buffer.\\ | ||
| 728 | \end{keys} | ||
| 729 | } | ||
| 730 | } | ||
| 731 | |||
| 732 | \newcommand{\TimeAndDate}{% | ||
| 733 | {\esamepage | ||
| 734 | \begin{keys}{W T u} | ||
| 735 | W T u & (W T z) Display the article timestamp in GMT ({\bf UT, ZULU}).\\ | ||
| 736 | W T i & Display the article timestamp in {\bf ISO} 8601.\\ | ||
| 737 | W T l & Display the article timestamp in the {\bf local} timezone.\\ | ||
| 738 | W T s & Display according to `gnus-article-time-format'.\\ | ||
| 739 | W T e & Display the time {\bf elapsed} since it was sent.\\ | ||
| 740 | W T o & Display the {\bf original} timestamp.\\ | ||
| 741 | W T p & Display the date in format that's {\bf | ||
| 742 | pronounceable} in English.\\ | ||
| 743 | \end{keys} | ||
| 744 | } | ||
| 745 | } | ||
| 746 | |||
| 747 | \newcommand{\HideHighlightArticle}{% | ||
| 748 | {\esamepage | ||
| 749 | \begin{keys}{W W C-c} | ||
| 750 | W W a & Hide {\bf all} unwanted parts. Calls W W h, W W s, W W C-c.\\ | ||
| 751 | W W h & Hide article {\bf headers}.\\ | ||
| 752 | W W b & Hide {\bf boring} headers.\\ | ||
| 753 | W W s & Hide {\bf signature}.\\ | ||
| 754 | W W l & Hide {\bf list} identifiers in subject-header.\\ | ||
| 755 | W W P & Hide {\bf PEM} (privacy enhanced messages).\\ | ||
| 756 | W W B & Hide banner specified by group parameter.\\ | ||
| 757 | W W c & Hide {\bf citation}.\\ | ||
| 758 | W W C-c & Hide {\bf citation} using a more intelligent algorithm.\\ | ||
| 759 | W W C & Hide cited text in articles that aren't roots.\\ | ||
| 760 | W H a & Highlight {\bf all} parts. Calls W b, W H c, W H h, W H s.\\ | ||
| 761 | W H c & Highlight article {\bf citations}.\\ | ||
| 762 | W H h & Highlight article {\bf headers}.\\ | ||
| 763 | W H s & Highlight article {\bf signature}.\\ | ||
| 764 | \end{keys} | ||
| 765 | For all hiding-commands: A positive prefix always hides, and a negative | ||
| 766 | prefix will show what was previously hidden. | ||
| 767 | }} | ||
| 768 | |||
| 769 | \newcommand{\MIMEArticleMode}{% | ||
| 770 | {\esamepage | ||
| 771 | \begin{keys}{RET} | ||
| 772 | RET & (BUTTON-2) Toggle display of the MIME object.\\ | ||
| 773 | v & Prompt for a method and then view object using this method.\\ | ||
| 774 | o & Prompt for a filename and save the MIME object.\\ | ||
| 775 | C-o & Prompt for a filename to save the MIME object to and remove it.\\ | ||
| 776 | d & {\bf Delete} the MIME object.\\ | ||
| 777 | c & {\bf Copy} the MIME object to a new buffer and display this buffer.\\ | ||
| 778 | i & Display the MIME object in this buffer.\\ | ||
| 779 | C & Copy the MIME object to a new buffer and display this buffer using {\bf Charset} \\ | ||
| 780 | E & View internally. \\ | ||
| 781 | e & View {\bf externally}. \\ | ||
| 782 | t & View the MIME object as a different {\bf type}.\\ | ||
| 783 | p & {\bf Print} the MIME object.\\ | ||
| 784 | $\mid$ & Pipe the MIME object to a process.\\ | ||
| 785 | . & Take action on the MIME object.\\ | ||
| 786 | \end{keys} | ||
| 787 | } | ||
| 788 | } | ||
| 789 | |||
| 790 | %% end of article mode for reading .......................................... | ||
| 791 | |||
| 792 | \newcommand{\MarkArticlesGeneral}{% formerly \Msubmap | ||
| 793 | {\esamepage | ||
| 794 | \begin{keys}{M M-C-r} | ||
| 795 | d & (M d, M r) Mark this article as read and move to the next one. | ||
| 796 | [scope]\\ | ||
| 797 | D & Mark this article as read and move to the previous one. [scope]\\ | ||
| 798 | ! & (u, M !, M t) Tick this article (mark it as interesting) and move | ||
| 799 | to the next one. [scope]\\ | ||
| 800 | U & Tick this article and move to the previous one. [scope]\\ | ||
| 801 | M ? & (?) Mark this article as dormant (only followups are | ||
| 802 | interesting). [scope]\\ | ||
| 803 | M D & Show all {\bf dormant} articles (normally they are hidden unless they | ||
| 804 | have any followups).\\ | ||
| 805 | M M-D & Hide all {\bf dormant} articles.\\ | ||
| 806 | C-w & Mark all articles between point and mark as read.\\ | ||
| 807 | M-u & (M SPC, M c) Clear all marks from this article and move to the next | ||
| 808 | one. [scope]\\ | ||
| 809 | M-U & Clear all marks from this article and move to the previous one. | ||
| 810 | [scope]\\ | ||
| 811 | % | ||
| 812 | M e & (E, M x) Mark this article as {\bf expirable}. [scope]\\ | ||
| 813 | % | ||
| 814 | M k & (k) {\bf Kill} all articles with the same subject then select the | ||
| 815 | next unread one.\\ | ||
| 816 | M K & (C-k) {\bf Kill} all articles with the same subject as this one.\\ | ||
| 817 | % | ||
| 818 | M C & {\bf Catch-up} the articles that are not ticked and not dormant.\\ | ||
| 819 | M C-c & {\bf Catch-up} all articles in this group.\\ | ||
| 820 | M H & {\bf Catch-up} (mark read) this group to point (to-{\bf here}).\\ | ||
| 821 | % | ||
| 822 | M b & Set a {\bf bookmark} in this article.\\ | ||
| 823 | M B & Remove the {\bf bookmark} from this article.\\ | ||
| 824 | % | ||
| 825 | M M-r & (x) Expunge all {\bf read} articles from this group.\\ | ||
| 826 | M M-C-r & Expunge all articles having a given mark.\\ | ||
| 827 | M S & (C-c M-C-s) {\bf Show} all expunged articles.\\ | ||
| 828 | M M C-h & Displays some more keys doing ticking slightly differently.\\ | ||
| 829 | \end{keys} | ||
| 830 | The variable `gnus-summary-goto-unread' controls what happens after a mark | ||
| 831 | has been set (C-x C-i g Setting Marks RET) | ||
| 832 | }} | ||
| 833 | |||
| 834 | \newcommand{\MarkByScore}{% | ||
| 835 | \begin{keys}{M V m} | ||
| 836 | M V c & {\bf Clear} all marks from all high-scored articles. [score]\\ | ||
| 837 | M V k & {\bf Kill} all low-scored articles. [score]\\ | ||
| 838 | M V m & Mark all high-scored articles with a given {\bf mark}. [score]\\ | ||
| 839 | M V u & Mark all high-scored articles as interesting (tick them). [score]\\ | ||
| 840 | \end{keys} | ||
| 841 | } | ||
| 842 | } | ||
| 843 | |||
| 844 | \newcommand{\ProcessMark}{% | ||
| 845 | {\esamepage | ||
| 846 | These commands set and remove the process mark (\#). You only need to use | ||
| 847 | it if the set of articles you want to operate on is non-contiguous. Else | ||
| 848 | use a numeric prefix.\\* | ||
| 849 | \begin{keys}{M P R} | ||
| 850 | M P p & (\#, M \#) Mark this article.\\ | ||
| 851 | M P u & (M-\#, M M-\#) \textbf{unmark} this article.\\ | ||
| 852 | M P b & Mark all articles in {\bf buffer}.\\ | ||
| 853 | M P r & Mark all articles in the {\bf region}.\\ | ||
| 854 | M P g & Unmark all articles in the region.\\ | ||
| 855 | M P R & Mark all articles matching a {\bf regexp}.\\ | ||
| 856 | M P G & Unmark all articles matching a regexp.\\ | ||
| 857 | M P t & Mark all articles in this (sub){\bf thread}.\\ | ||
| 858 | M P T & Unmark all articles in this (sub){\bf thread}.\\ | ||
| 859 | M P s & Mark all articles in the current {\bf series}.\\ | ||
| 860 | M P S & Mark all {\bf series} that already contain a marked article.\\ | ||
| 861 | M P a & Mark {\bf all} articles (in series order).\\ | ||
| 862 | M P U & \textbf{unmark} all articles.\\ | ||
| 863 | M P i & {\bf Invert} the list of process-marked articles.\\ | ||
| 864 | M P k & Push the current process-mark set onto stack and unmark | ||
| 865 | all articles.\\ | ||
| 866 | M P y & Pop process-mark set from stack and restore it.\\ | ||
| 867 | M P w & Push process-mark set on the stack.\\ | ||
| 868 | M P v & Mark all articles with score over the default score. [Prefix: score]\\ | ||
| 869 | \end{keys} | ||
| 870 | } | ||
| 871 | } | ||
| 872 | |||
| 873 | \newcommand{\Limiting}{% | ||
| 874 | {\esamepage | ||
| 875 | \begin{keys}{/M} | ||
| 876 | // & (/s) Limit the summary-buffer to articles matching {\bf subject}.\\ | ||
| 877 | /a & Limit the summary-buffer to articles matching {\bf author}.\\ | ||
| 878 | /x & Limit depending on ``extra'' headers.\\ | ||
| 879 | /u & (x) Limit to {\bf unread} articles. | ||
| 880 | [Prefix: also exclude ticked and dormant articles]\\ | ||
| 881 | /. & Limit to unseen articles.\\ | ||
| 882 | /m & Limit to articles marked with specified {\bf mark}.\\ | ||
| 883 | /t & Ask for a number and exclude articles younger than that many days. | ||
| 884 | [Prefix: exclude older articles]\\ | ||
| 885 | /n & Limit to current article. [p/p]\\ | ||
| 886 | /w & Pop the previous limit off the stack and restore it. | ||
| 887 | [Prefix: pop all limits]\\ | ||
| 888 | /v & Limit to score. [score]\\ | ||
| 889 | /E & (M S) Include all expunged articles in the limit.\\ | ||
| 890 | /D & Include all dormant articles in the limit.\\ | ||
| 891 | /* & Limit to cached articles.\\ | ||
| 892 | Y C & Include all cached articles in the limit.\\ | ||
| 893 | /d & Exclude all dormant articles from the limit.\\ | ||
| 894 | /M & Exclude all marked articles.\\ | ||
| 895 | /T & Include all articles from the current thread in the limit.\\ | ||
| 896 | /c & Exclude all dormant articles that have no children from the limit.\\ | ||
| 897 | /C & Mark all excluded unread articles as read. | ||
| 898 | [Prefix: also mark ticked and dormant articles]\\ | ||
| 899 | /o & Insert all {\bf old} articles. [Prefix: how many]\\ | ||
| 900 | /N & Insert all {\bf new} articles.\\ | ||
| 901 | /p & Limit to articles {\bf predicated} in the `display' group parameter.\\ | ||
| 902 | % /r & Limit to {\bf replied} articles. [Prefix: unreplied]\\ % No Gnus | ||
| 903 | \end{keys} | ||
| 904 | } | ||
| 905 | } | ||
| 906 | |||
| 907 | \newcommand{\OutputArticles}{% formerly \Osubmap | ||
| 908 | {\esamepage | ||
| 909 | \begin{keys}{O m} | ||
| 910 | O o & (o, C-o) Save this article using the default article saver. [p/p]\\ | ||
| 911 | O b & Save this article's {\bf body} in plain file format [p/p]\\ | ||
| 912 | O f & Save this article in plain {\bf file} format. [p/p]\\ | ||
| 913 | O F & like O f, but overwrite file's contents. [p/p]\\ | ||
| 914 | O h & Save this article in {\bf mh} folder format. [p/p]\\ | ||
| 915 | O m & Save this article in {\bf mail} format. [p/p]\\ | ||
| 916 | O r & Save this article in {\bf rmail} format. [p/p]\\ | ||
| 917 | O v & Save this article in {\bf vm} format. [p/p]\\ | ||
| 918 | O p & ($\mid$) {\bf Pipe} this article to a shell command. [p/p]\\ | ||
| 919 | O P & \textbf{Print} this article using Muttprint. [p/p]\\ | ||
| 920 | \end{keys} | ||
| 921 | } | ||
| 922 | } | ||
| 923 | |||
| 924 | \newcommand{\PostReplyetc}{% formerly \Ssubmap | ||
| 925 | {\esamepage | ||
| 926 | These commands put you in a separate news or mail buffer. See the section | ||
| 927 | about composing messages for more information.\\* | ||
| 928 | %After | ||
| 929 | %editing the article, send it by pressing C-c C-c. If you are in a | ||
| 930 | %foreign group and want to post the article using the foreign server, give | ||
| 931 | %a prefix to C-c C-c.\\* | ||
| 932 | \begin{keys}{S O m} | ||
| 933 | S p & (a) {\bf Post} an article to this group.\\ | ||
| 934 | S f & (f) Post a {\bf followup} to this article.\\ | ||
| 935 | S F & (F) Post a {\bf followup} and include the original. [p/p]\\ | ||
| 936 | S o p & Forward this article as a {\bf post} to a newsgroup.\\ | ||
| 937 | S M-c & Send a complaint about excessive crossposting to the author of this | ||
| 938 | article. [p/p]\\ | ||
| 939 | % | ||
| 940 | S m & (m) Send a {\bf mail} to some other person.\\ | ||
| 941 | S r & (r) Mail a {\bf reply} to the author of this article.\\ | ||
| 942 | S R & (R) Mail a {\bf reply} and include the original. [p/p]\\ | ||
| 943 | S B r & Like S r but ignore the Reply-To: header.\\ | ||
| 944 | S B R & Like S R but ignore the Reply-To: header.\\ | ||
| 945 | S w & Mail a {\bf wide} reply to this article.\\ | ||
| 946 | S W & Mail a {\bf wide} reply to this article and include | ||
| 947 | the original.\\ | ||
| 948 | S v & Mail a {\bf very} wide reply to this article.\\ | ||
| 949 | S V & Mail a {\bf very} wide reply to this article and include the original.\\ | ||
| 950 | S o m & (C-c C-f) Forward this article by {\bf mail} to a person.\\ | ||
| 951 | S D b & Resend {\bf bounced} mail.\\ | ||
| 952 | S D r & {\bf Resend} mail to a different person.\\ | ||
| 953 | S D e & {\bf Edit} and resend.\\ | ||
| 954 | % | ||
| 955 | S n & Post a followup via {\bf news} even if you got the message | ||
| 956 | through mail.\\ | ||
| 957 | S N & Post a followup via {\bf news} and include the original mail. | ||
| 958 | [p/p]\\ | ||
| 959 | % | ||
| 960 | S c & (C) {\bf Cancel} this article (only works if it is | ||
| 961 | your own). [p/p]\\ | ||
| 962 | S s & {\bf Supersede} this article with a new one (only for own | ||
| 963 | articles).\\ | ||
| 964 | % | ||
| 965 | S O m & Digest these series and forward by {\bf mail}. [p/p]\\ | ||
| 966 | S O p & Digest these series and forward as a {\bf post} to a newsgroup. | ||
| 967 | [p/p]\\ | ||
| 968 | % | ||
| 969 | S u & {\bf Uuencode} a file and post it as a series.\\ | ||
| 970 | \end{keys} | ||
| 971 | If you want to cancel or supersede an article you just posted (before it | ||
| 972 | has appeared on the server), go to the *post-news* buffer, change | ||
| 973 | `Message-ID' to `Cancel' or `Supersedes' and send it again with C-c C-c. | ||
| 974 | }} | ||
| 975 | |||
| 976 | \newcommand{\Threading}{% formerly \Tsubmap | ||
| 977 | {\esamepage | ||
| 978 | \begin{keys}{T M-\#} | ||
| 979 | T \# & Mark this thread with the process mark.\\ | ||
| 980 | T M-\# & Remove process-marks from this thread.\\ | ||
| 981 | % | ||
| 982 | T t & Re-{\bf thread} the current article's thread.\\ | ||
| 983 | T \^{} & Make the current article child of the marked (or previous) article.\\ | ||
| 984 | % movement | ||
| 985 | T n & (M-C-f, M-down) Go to the {\bf next} thread. [distance]\\ | ||
| 986 | T p & (M-C-b, M-up) Go to the {\bf previous} thread. [distance]\\ | ||
| 987 | T d & {\bf Descend} this thread. [distance]\\ | ||
| 988 | T u & Ascend this thread ({\bf up}-thread). [distance]\\ | ||
| 989 | T o & Go to the top of this thread.\\ | ||
| 990 | % | ||
| 991 | T s & {\bf Show} the thread hidden under this article.\\ | ||
| 992 | T h & {\bf Hide} this (sub)thread.\\ | ||
| 993 | % | ||
| 994 | T i & {\bf Increase} the score of this thread.\\ | ||
| 995 | T l & (M-C-l) {\bf Lower} the score of this thread.\\ | ||
| 996 | % | ||
| 997 | T k & (M-C-k) {\bf Kill} the current (sub)thread. [Negative prefix: | ||
| 998 | tick it, positive prefix: unmark it.]\\ | ||
| 999 | % | ||
| 1000 | T H & {\bf Hide} all threads.\\ | ||
| 1001 | T S & {\bf Show} all hidden threads.\\ | ||
| 1002 | T T & (M-C-t) {\bf Toggle} threading.\\ | ||
| 1003 | \end{keys} | ||
| 1004 | } | ||
| 1005 | } | ||
| 1006 | |||
| 1007 | \newcommand{\Scoring}{% formerly \Vsubmap | ||
| 1008 | {\esamepage | ||
| 1009 | Read about Adaptive Scoring in the online info.\\* | ||
| 1010 | \begin{keys}{\bf A p m l} | ||
| 1011 | V a & {\bf Add} a new score entry, specifying all elements.\\ | ||
| 1012 | V c & Specify a new score file as {\bf current}.\\ | ||
| 1013 | V e & {\bf Edit} the current score alist.\\ | ||
| 1014 | V f & Edit a score {\bf file} and make it the current one.\\ | ||
| 1015 | V m & {\bf Mark} all articles below a given score as read.\\ | ||
| 1016 | V s & Set the {\bf score} of this article.\\ | ||
| 1017 | V t & Display all score rules applied to this article ({\bf track}).\\ | ||
| 1018 | W w & List {\bf words} used in scoring.\\ | ||
| 1019 | V x & {\bf Expunge} all low-scored articles. [score]\\ | ||
| 1020 | V C & {\bf Customize} the current score file through a user-friendly | ||
| 1021 | interface.\\ | ||
| 1022 | V F & {\bf Flush} the cache of score files.\\ | ||
| 1023 | V R & {\bf Re-score} the summary buffer.\\ | ||
| 1024 | V S & Display the {\bf score} of this article.\\ | ||
| 1025 | \bf A p m l& Make a scoring entry based on this article.\\ | ||
| 1026 | \end{keys} | ||
| 1027 | The four letters stand for:\\* | ||
| 1028 | \quad \B{A}ction: I)ncrease, L)ower;\\* | ||
| 1029 | \quad \B{p}art: a)uthor (from), s)ubject, x)refs (cross-posting), d)ate, l)ines, | ||
| 1030 | message-i)d, t)references (parent), f)ollowup, b)ody, h)ead (all headers);\\* | ||
| 1031 | \quad \B{m}atch type:\\* | ||
| 1032 | \qquad string: s)ubstring, e)xact, r)egexp, f)uzzy,\\* | ||
| 1033 | \qquad date: b)efore, a)t, n)this,\\* | ||
| 1034 | \qquad number: $<$, =, $>$;\\* | ||
| 1035 | \quad \B{l}ifetime: t)emporary, p)ermanent, i)mmediate. | ||
| 1036 | |||
| 1037 | If you type the second letter in uppercase, the remaining two are assumed | ||
| 1038 | to be s)ubstring and t)emporary. | ||
| 1039 | If you type the third letter in uppercase, the last one is assumed to be | ||
| 1040 | t)emporary. | ||
| 1041 | |||
| 1042 | \quad Extra keys for manual editing of a score file:\\* | ||
| 1043 | \begin{keys}{C-c C-c} | ||
| 1044 | C-c C-c & Finish editing the score file.\\ | ||
| 1045 | C-c C-d & Insert the current {\bf date} as number of days.\\ | ||
| 1046 | \end{keys} | ||
| 1047 | } | ||
| 1048 | } | ||
| 1049 | |||
| 1050 | \newcommand{\ExtractSeries}{% formerly \Xsubmap | ||
| 1051 | {\esamepage | ||
| 1052 | Gnus recognizes if the current article is part of a series (multipart | ||
| 1053 | posting whose parts are identified by numbers in their subjects, e.g.{} | ||
| 1054 | 1/10\dots10/10) and processes the series accordingly. You can mark and | ||
| 1055 | process more than one series at a time. If the posting contains any | ||
| 1056 | archives, they are expanded and gathered in a new group.\\* | ||
| 1057 | \begin{keys}{X p} | ||
| 1058 | X b & Un-{\bf binhex} these series. [p/p]\\ | ||
| 1059 | X o & Simply {\bf output} these series (no decoding). [p/p]\\ | ||
| 1060 | X p & Unpack these {\bf postscript} series. [p/p]\\ | ||
| 1061 | X s & Un-{\bf shar} these series. [p/p]\\ | ||
| 1062 | X u & {\bf Uudecode} these series. [p/p]\\ | ||
| 1063 | \end{keys} | ||
| 1064 | |||
| 1065 | Each one of these commands has four variants:\\* | ||
| 1066 | \begin{keys}{X v \bf Z} | ||
| 1067 | X \bf z & Decode these series. [p/p]\\ | ||
| 1068 | X \bf Z & Decode and save these series. [p/p]\\ | ||
| 1069 | X v \bf z & Decode and view these series. [p/p]\\ | ||
| 1070 | X v \bf Z & Decode, save and view these series. [p/p]\\ | ||
| 1071 | \end{keys} | ||
| 1072 | where {\bf z} or {\bf Z} identifies the decoding method (b, o, p, s, u). | ||
| 1073 | |||
| 1074 | An alternative binding for the most-often used of these commands is\\* | ||
| 1075 | \begin{keys}{C-c C-v C-v} | ||
| 1076 | C-c C-v C-v & (X v u) Uudecode and view these series. [p/p]\\ | ||
| 1077 | \end{keys} | ||
| 1078 | }} | ||
| 1079 | |||
| 1080 | \newcommand{\ExitSummary}{% formerly \Zsubmap | ||
| 1081 | {\esamepage | ||
| 1082 | \begin{keys}{Z G} | ||
| 1083 | Z Z & (q, Z Q) Exit this group.\\ | ||
| 1084 | Z E & (Q) {\bf Exit} without updating the group information.\\ | ||
| 1085 | % | ||
| 1086 | Z c & (c) Mark all unticked articles as read ({\bf catch-up}) and exit.\\ | ||
| 1087 | Z C & Mark all articles as read ({\bf catch-up}) and exit.\\ | ||
| 1088 | % | ||
| 1089 | Z n & Mark all articles as read and go to the {\bf next} group.\\ | ||
| 1090 | Z N & Exit and go to {\bf the} next group.\\ | ||
| 1091 | Z P & Exit and go to the {\bf previous} group.\\ | ||
| 1092 | % | ||
| 1093 | Z G & (M-g) Check for new articles in this group ({\bf get}).\\ | ||
| 1094 | Z R & (C-x C-s) Exit this group, and then enter it again ({\bf reenter}). | ||
| 1095 | [Prefix: select all articles, read and unread.]\\ | ||
| 1096 | Z s & Update and save the dribble buffer. [Prefix: save .newsrc* as well]\\ | ||
| 1097 | \end{keys} | ||
| 1098 | } | ||
| 1099 | } | ||
| 1100 | |||
| 1101 | \newcommand{\MsgCompositionGeneral}{% | ||
| 1102 | Press C-c ? in the composition-buffer to get this information.\\* | ||
| 1103 | {\esamepage | ||
| 1104 | \begin{keys}{C-c C-m} | ||
| 1105 | % sending | ||
| 1106 | C-c C-c & Send message and exit. [Prefix: send via foreign server]\\ | ||
| 1107 | C-c C-s & Send message. [Prefix: send via foreign server]\\ | ||
| 1108 | C-c C-d & Don't send message (save as \textbf{draft}).\\ | ||
| 1109 | C-c C-k & \textbf{Kill} message-buffer.\\ | ||
| 1110 | C-c C-m & {\bf Mail} reply to the address near point. | ||
| 1111 | [Prefix: include the original]\\ | ||
| 1112 | % modify headers/body | ||
| 1113 | C-c C-o & Sort headers.\\ | ||
| 1114 | C-c C-e & \textbf{Elide} region.\\ | ||
| 1115 | C-c C-v & Kill everything outside region.\\ | ||
| 1116 | C-c C-r & Do a \textbf{Rot-13} on the body.\\ | ||
| 1117 | C-c C-w & Insert signature (from `message-signature-file').\\ | ||
| 1118 | C-c C-z & Kill everything up to signature.\\ | ||
| 1119 | C-c C-y & \textbf{Yank} original message.\\ | ||
| 1120 | C-c C-q & Fill the yanked message.\\ | ||
| 1121 | C-c M-C-y & \textbf{Yank} a buffer and quote it.\\ | ||
| 1122 | M-RET & Insert four newlines and format quoted text. [Prefix: | ||
| 1123 | justify as well]\\ | ||
| 1124 | C-c M-r & \textbf{Rename} message buffer. [Prefix: ask for new name]\\ | ||
| 1125 | \end{keys} | ||
| 1126 | } | ||
| 1127 | } | ||
| 1128 | |||
| 1129 | \newcommand{\MsgCompositionMovementArticle}{% | ||
| 1130 | The following functions create the header-field if necessary.\\* | ||
| 1131 | {\esamepage | ||
| 1132 | \begin{keys}{C-c C-f C-u} | ||
| 1133 | C-c TAB & Move to \textbf{signature}.\\ | ||
| 1134 | C-c C-b & Move to \textbf{body}.\\ | ||
| 1135 | C-c C-f C-t & (C-c C-t) Move to \textbf{To:}.\\ | ||
| 1136 | C-c C-f C-c & Move to \textbf{Cc:}.\\ | ||
| 1137 | C-c C-f C-b & Move to \textbf{Bcc:}.\\ | ||
| 1138 | C-c C-f C-w & Move to \textbf{Fcc:}.\\ | ||
| 1139 | C-c C-f C-s & Move to \textbf{Subject:}.\\ | ||
| 1140 | C-c C-f C-r & Move to \textbf{Reply-To:}.\\ | ||
| 1141 | C-c C-f C-f & Move to \textbf{Followup-To:}.\\ | ||
| 1142 | C-c C-f C-n & (C-c C-n) Move to \textbf{Newsgroups:}.\\ | ||
| 1143 | C-c C-f C-u & Move to \textbf{Summary:}.\\ | ||
| 1144 | C-c C-f C-k & Move to \textbf{Keywords:}.\\ | ||
| 1145 | C-c C-f C-d & Move to \textbf{Distribution:}.\\ | ||
| 1146 | C-c C-f C-m & Move to \textbf{Mail-Followup-To:}.\\ | ||
| 1147 | C-c C-f C-o & Move to \textbf{From:}.\\ | ||
| 1148 | C-c C-f C-a & Insert a reasonable \textbf{Mail-Followup-To:} for | ||
| 1149 | an unsubscribed list. [Prefix: include addresses in \textbf{Cc:}]\\ | ||
| 1150 | C-c C-f TAB & (C-c C-u) Move to \textbf{Importance:}.\\ | ||
| 1151 | C-c M-n & Insert \textbf{Disposition-Notification-To:} | ||
| 1152 | (request receipt).\\ | ||
| 1153 | \end{keys} | ||
| 1154 | } | ||
| 1155 | } | ||
| 1156 | |||
| 1157 | \newcommand{\MsgCompositionMML}{% | ||
| 1158 | {\esamepage | ||
| 1159 | \begin{keys}{C-c C-m P} | ||
| 1160 | C-c C-m f & (C-c C-a) Attach \textbf{file}.\\ | ||
| 1161 | C-c C-m b & Attach contents of \textbf{buffer}.\\ | ||
| 1162 | C-c C-m e & Attach \textbf{external} file (ftp..).\\ | ||
| 1163 | C-c C-m P & Create MIME-\textbf{preview} (new | ||
| 1164 | buffer). [Prefix: show raw MIME preview]\\ | ||
| 1165 | C-c C-m v & \textbf{Validate} article.\\ | ||
| 1166 | C-c C-m p & Insert \textbf{part}.\\ | ||
| 1167 | C-c C-m m & Insert \textbf{multi}-part.\\ | ||
| 1168 | C-c C-m q & \textbf{Quote} region.\\ | ||
| 1169 | C-c C-m c s & Encrypt message using \textbf{S/MIME}.\\ | ||
| 1170 | C-c C-m c o & Encrypt message using PGP.\\ | ||
| 1171 | C-c C-m c p & Encrypt message using \textbf{PGP/MIME}.\\ | ||
| 1172 | C-c C-m s s & Sign message using \textbf{S/MIME}.\\ | ||
| 1173 | C-c C-m s o & Sign message using PGP.\\ | ||
| 1174 | C-c C-m s p & Sign message using \textbf{PGP/MIME}.\\ | ||
| 1175 | C-c C-m C-n & Remove security related MML tags from message.\\ | ||
| 1176 | % TODO: narrow headers (C-c C-m n) ? | ||
| 1177 | \end{keys} | ||
| 1178 | } | ||
| 1179 | } | ||
| 1180 | |||
| 1181 | %% TODO: | ||
| 1182 | \newcommand{\ServerMode}{% | ||
| 1183 | {\esamepage | ||
| 1184 | To enter this mode, press \^{} while in Group mode.\\* | ||
| 1185 | \begin{keys}{SPC} | ||
| 1186 | SPC & (RET) Browse this server.\\ | ||
| 1187 | a & {\bf Add} a new server.\\ | ||
| 1188 | c & {\bf Copy} this server.\\ | ||
| 1189 | e & {\bf Edit} a server.\\ | ||
| 1190 | k & {\bf Kill} this server. [scope]\\ | ||
| 1191 | l & {\bf List} all servers.\\ | ||
| 1192 | q & Return to the group buffer ({\bf quit}).\\ | ||
| 1193 | s & Request that the server scan its sources for new articles.\\ | ||
| 1194 | g & Request that the server regenerate its data.\\ | ||
| 1195 | y & {\bf Yank} the previously killed server.\\ | ||
| 1196 | O & Try to {\bf open} a connection to this server.\\ | ||
| 1197 | C & {\bf Close} connection to this server.\\ | ||
| 1198 | D & Mark this server as unreachable ({\bf deny}).\\ | ||
| 1199 | M-o & {\bf Open} the connection to all servers.\\ | ||
| 1200 | M-c & {\bf Close} the connection to all servers.\\ | ||
| 1201 | R & Make all denied servers into closed servers.\\ | ||
| 1202 | L & Set server status to offline.\\ | ||
| 1203 | \end{keys} | ||
| 1204 | } | ||
| 1205 | } | ||
| 1206 | |||
| 1207 | \newcommand{\BrowseServer}{% | ||
| 1208 | {\esamepage | ||
| 1209 | To enter this mode, press `B' while in Group mode.\\* | ||
| 1210 | \begin{keys}{RET} | ||
| 1211 | RET & Enter the current group.\\ | ||
| 1212 | SPC & Enter the current group and display the first article.\\ | ||
| 1213 | ? & Give a very short help message.\\ | ||
| 1214 | n & Go to the {\bf next} group. [distance]\\ | ||
| 1215 | p & Go to the {\bf previous} group. [distance]\\ | ||
| 1216 | q & (l) {\bf Quit} browse mode.\\ | ||
| 1217 | u & Subscribe to the current group. [scope]\\ | ||
| 1218 | \end{keys} | ||
| 1219 | } | ||
| 1220 | } | ||
| 1221 | |||
| 1222 | \newcommand{\GroupUnplugged}{% | ||
| 1223 | {\esamepage | ||
| 1224 | \begin{keys}{J S} | ||
| 1225 | J j & Toggle plugged-state.\\ | ||
| 1226 | J s & Fetch articles from all groups for offline-reading.\\ | ||
| 1227 | J u & Fetch all eligible articles from this group.\\ | ||
| 1228 | J S & \textbf{Send} all sendable messages in the drafts group.\\ | ||
| 1229 | % | ||
| 1230 | J c & Enter \textbf{category} buffer.\\ | ||
| 1231 | J a & \textbf{Add} this group to an Agent category [p/p].\\ | ||
| 1232 | J r & \textbf{Remove} this group from its Agent category [p/p].\\ | ||
| 1233 | J Y & Synchronize flags changed while unplugged with remote server.\\ | ||
| 1234 | \end{keys} | ||
| 1235 | } | ||
| 1236 | } | ||
| 1237 | |||
| 1238 | \newcommand{\SummaryUnplugged}{% | ||
| 1239 | {\esamepage | ||
| 1240 | \begin{keys}{J M-\#} | ||
| 1241 | J \# & \textbf{Mark} the article for downloading.\\ | ||
| 1242 | J M-\# & \textbf{Unmark} the article for downloading.\\ | ||
| 1243 | @ & \textbf{Toggle} whether to download the article.\\ | ||
| 1244 | J c & Mark all undownloaded articles as read (\textbf{catch-up}).\\ | ||
| 1245 | J u & Download all downloadable articles from group.\\ | ||
| 1246 | \end{keys} | ||
| 1247 | } | ||
| 1248 | } | ||
| 1249 | |||
| 1250 | \newcommand{\ServerUnplugged}{% | ||
| 1251 | {\esamepage | ||
| 1252 | \begin{keys}{J a} | ||
| 1253 | J a & \textbf{Add} the current server to the list of servers covered | ||
| 1254 | by the agent.\\ | ||
| 1255 | J r & \textbf{Remove} the current server from the list of servers covered | ||
| 1256 | by the agent.\\ | ||
| 1257 | \end{keys} | ||
| 1258 | } | ||
| 1259 | } | ||
| 1260 | |||
| 1261 | % end {gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % % | ||
| 1262 | |||
| 1263 | |||
| 1264 | % o some things might not be updated: scoring and server modes, maybe more | ||
| 1265 | % o Gnus Unplugged category-buffer commands need to be written | ||
| 1266 | |||
| 1267 | \begin{document} | ||
| 1268 | |||
| 1269 | \def\progver{5.10}\def\refver{5.10-1} % program and refcard versions | ||
| 1270 | \def\date{Jan 10th, 2004} | ||
| 1271 | \def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$} | ||
| 1272 | |||
| 1273 | \ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1274 | \raggedbottom\raggedright | ||
| 1275 | \twocolumn | ||
| 1276 | % use \tiny to shrink it to 4 pages (needs a high-resolution printer though) | ||
| 1277 | % \tiny | ||
| 1278 | \scriptsize | ||
| 1279 | \pagestyle{plain} | ||
| 1280 | \Title | ||
| 1281 | \par | ||
| 1282 | \Logo{refcard} | ||
| 1283 | }{ | ||
| 1284 | \setcounter{page}{0} | ||
| 1285 | \thispagestyle{empty} | ||
| 1286 | \vspace*{\fill} | ||
| 1287 | \Title | ||
| 1288 | \vspace{0.4in} | ||
| 1289 | \Logo{booklet} | ||
| 1290 | \vspace*{\fill} | ||
| 1291 | \pagebreak | ||
| 1292 | }%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1293 | |||
| 1294 | % TODO: how does this work ? | ||
| 1295 | %\tableofcontents | ||
| 1296 | |||
| 1297 | \Notes | ||
| 1298 | % | ||
| 1299 | |||
| 1300 | \section*{Group-Mode} | ||
| 1301 | \GroupModeGeneral | ||
| 1302 | \subsection*{Group Subscribedness-Levels} | ||
| 1303 | \GroupLevels | ||
| 1304 | \subsection*{List Groups} | ||
| 1305 | \ListGroups | ||
| 1306 | \subsection*{Create/Edit Foreign Groups} | ||
| 1307 | \CreateEditGroups | ||
| 1308 | \subsection*{Unsubscribe, Kill and Yank Groups} | ||
| 1309 | \SubscribeKillYankGroups | ||
| 1310 | \subsection*{Mark Groups} | ||
| 1311 | \MarkGroups | ||
| 1312 | \subsection*{Group-Unplugged} | ||
| 1313 | \GroupUnplugged | ||
| 1314 | % topics in group-mode | ||
| 1315 | \subsection*{Group Topics} | ||
| 1316 | \GroupTopicsGeneral | ||
| 1317 | \subsubsection*{Topic Sorting} | ||
| 1318 | \TopicSorting | ||
| 1319 | |||
| 1320 | % \ifthenelse{\isundefined{\booklettrue}}{}{\pagebreak} | ||
| 1321 | |||
| 1322 | % summary-mode | ||
| 1323 | \section*{Summary Mode} | ||
| 1324 | \SummaryModeGeneral | ||
| 1325 | \subsection*{Select Articles} | ||
| 1326 | \SelectArticles | ||
| 1327 | % | ||
| 1328 | \subsection*{Threading} | ||
| 1329 | \Threading | ||
| 1330 | % | ||
| 1331 | \subsection*{Limiting} | ||
| 1332 | \Limiting | ||
| 1333 | \subsection*{Sort the Summary-Buffer} | ||
| 1334 | \SortSummary | ||
| 1335 | \subsection*{Score (Value) Commands} | ||
| 1336 | \Scoring | ||
| 1337 | |||
| 1338 | \ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1339 | \subsection*{Output Articles} | ||
| 1340 | \OutputArticles | ||
| 1341 | \subsection*{Extract Series (Uudecode etc)} | ||
| 1342 | \ExtractSeries | ||
| 1343 | }{}%ifcard% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1344 | |||
| 1345 | \subsection*{MIME operations from the Summary-Buffer} | ||
| 1346 | \MIMESummary | ||
| 1347 | |||
| 1348 | \ifthenelse{\isundefined{\booklettrue}}{}{% ifbooklet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1349 | \subsection*{Extract Series (Uudecode etc)} | ||
| 1350 | \ExtractSeries | ||
| 1351 | \subsection*{Output Articles} | ||
| 1352 | \OutputArticles | ||
| 1353 | }%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 1354 | |||
| 1355 | % | ||
| 1356 | \subsection*{Post, Followup, Reply, Forward, Cancel} | ||
| 1357 | \PostReplyetc | ||
| 1358 | |||
| 1359 | \ifthenelse{\isundefined{\booklettrue}}{\newpage}{}% newpage ifcard | ||
| 1360 | |||
| 1361 | \subsection*{Message Composition} | ||
| 1362 | |||
| 1363 | \MsgCompositionGeneral | ||
| 1364 | \subsubsection*{Jumping in message-buffer} | ||
| 1365 | \MsgCompositionMovementArticle | ||
| 1366 | \subsubsection*{Attachments/MML} | ||
| 1367 | \MsgCompositionMML | ||
| 1368 | % marking articles | ||
| 1369 | \subsection*{Mark Articles} | ||
| 1370 | \MarkArticlesGeneral | ||
| 1371 | \subsubsection*{Mark Based on Score} | ||
| 1372 | \MarkByScore | ||
| 1373 | \subsubsection*{The Process Mark} | ||
| 1374 | \ProcessMark | ||
| 1375 | \subsubsection*{Mark Indication-Characters} | ||
| 1376 | \MarkCharacters | ||
| 1377 | % | ||
| 1378 | \ifthenelse{\isundefined{\booklettrue}}{\newpage}{}% | ||
| 1379 | |||
| 1380 | \subsection*{Summary-Unplugged} | ||
| 1381 | \SummaryUnplugged | ||
| 1382 | \subsection*{Mail-Group Commands} | ||
| 1383 | \MailGroups | ||
| 1384 | \subsection*{Draft-Group Commands} | ||
| 1385 | \DraftGroup | ||
| 1386 | % exiting | ||
| 1387 | \subsection*{Exit the Summary-Buffer} | ||
| 1388 | \ExitSummary | ||
| 1389 | % | ||
| 1390 | % | ||
| 1391 | \section*{Article Mode (reading)} | ||
| 1392 | \ArticleModeGeneral | ||
| 1393 | \subsection*{Wash the Article-Buffer} | ||
| 1394 | \WashArticle | ||
| 1395 | \subsubsection*{Blank Lines and Whitespace} | ||
| 1396 | \BlankAndWhitespace | ||
| 1397 | \subsubsection*{Picons, X-faces, Smileys} | ||
| 1398 | \Picons | ||
| 1399 | \subsubsection*{Time and Date} | ||
| 1400 | \TimeAndDate | ||
| 1401 | \subsection*{Hide/Highlight Parts of the Article} | ||
| 1402 | \HideHighlightArticle | ||
| 1403 | \subsection*{MIME operations from the Article-Buffer (reading)} | ||
| 1404 | \MIMEArticleMode | ||
| 1405 | % | ||
| 1406 | % | ||
| 1407 | \section*{Server Mode} | ||
| 1408 | \ServerMode | ||
| 1409 | \subsection*{Unplugged-Server} | ||
| 1410 | \ServerUnplugged | ||
| 1411 | % | ||
| 1412 | % | ||
| 1413 | \section*{Browse Server Mode} | ||
| 1414 | \BrowseServer | ||
| 1415 | |||
| 1416 | %\pagebreak | ||
| 1417 | \vspace*{\fill} | ||
| 1418 | \Copyright | ||
| 1419 | |||
| 1420 | \end{document} | ||
| 1421 | |||
| 1422 | %%% Local Variables: | ||
| 1423 | %%% mode: latex | ||
| 1424 | %%% TeX-master: t | ||
| 1425 | %%% End: | ||
| 1426 | |||
| 1427 | % arch-tag: be438b0e-6832-4afb-8c56-5f84743e5cd1 | ||
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ac6f62b9a40..d5a58deb7e4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,482 @@ | |||
| 1 | 2005-04-04 Lute Kamstra <lute@gnu.org> | ||
| 2 | |||
| 3 | * autorevert.el (auto-revert-mode): Specify :group. | ||
| 4 | * battery.el (display-battery-mode): Specify :group. | ||
| 5 | * diff-mode.el (diff-minor-mode): Specify :group. | ||
| 6 | * font-core.el (font-lock-mode): Specify :group. | ||
| 7 | * hl-line.el (hl-line-mode): Specify :group. | ||
| 8 | * iimage.el (iimage): New customization group. | ||
| 9 | (iimage-mode): Specify :group. | ||
| 10 | * longlines.el (longlines-mode): Specify :group. | ||
| 11 | * master.el: Don't require easy-mmode. | ||
| 12 | (master): New customization group. | ||
| 13 | (master-mode): Specify :group. | ||
| 14 | * msb.el (msb-mode): Specify :group. | ||
| 15 | * reveal.el (reveal-mode): Specify :group. | ||
| 16 | * simple.el (next-error-follow-minor-mode): Specify :group. | ||
| 17 | * smerge-mode.el (smerge-mode): Specify :group. | ||
| 18 | * emacs-lisp/eldoc.el (eldoc-mode): Specify :group. | ||
| 19 | * emulation/cua-base.el (cua-mode): Specify :group. | ||
| 20 | * international/encoded-kb.el (encoded-kbd-mode): Specify :group. | ||
| 21 | * language/thai-util.el (thai-auto-composition-mode) | ||
| 22 | (thai-word-mode): Specify :group. | ||
| 23 | * mail/supercite.el (sc-minor-mode): Specify :group. | ||
| 24 | * progmodes/cwarn.el (cwarn-mode): Specify :group. | ||
| 25 | * progmodes/flymake.el (flymake-mode): Specify :group. | ||
| 26 | * progmodes/glasses.el (glasses-mode): Specify :group. | ||
| 27 | * progmodes/hideif.el (hide-ifdef-mode): Specify :group. | ||
| 28 | * textmodes/enriched.el (enriched-mode): Specify :group. | ||
| 29 | * textmodes/refill.el (refill-mode): Specify :group. | ||
| 30 | |||
| 31 | * add-log.el (change-log-font-lock-keywords): Names in | ||
| 32 | parenthesized lists can contain spaces. | ||
| 33 | |||
| 34 | 2005-04-04 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 35 | |||
| 36 | * startup.el (fancy-splash-text): Shorten default text of | ||
| 37 | "Emacs Tutorial" line. Also, if the current language env | ||
| 38 | indicates an available tutorial file other than TUTORIAL, | ||
| 39 | extract its title and append it to the line in parentheses. | ||
| 40 | (fancy-splash-insert): If arg is a thunk, funcall it. | ||
| 41 | |||
| 42 | 2005-04-04 Jay Belanger <belanger@truman.edu> | ||
| 43 | |||
| 44 | * calc.el (calc-language-alist): Add tags to customization type. | ||
| 45 | |||
| 46 | 2005-04-03 Luc Teirlinck <teirllm@auburn.edu> | ||
| 47 | |||
| 48 | * xt-mouse.el (xterm-mouse-mode): Add explicit Custom group, mouse. | ||
| 49 | Doc fix. | ||
| 50 | |||
| 51 | 2005-04-03 Marcelo Toledo <marcelo@marcelotoledo.org> | ||
| 52 | |||
| 53 | * add-log.el (change-log-font-lock-keywords): The manual | ||
| 54 | describing a Change Log entry, says: (...) "Aside from these | ||
| 55 | header lines, every line in the change log starts with a space or | ||
| 56 | a tab.". The font-lock was not highlighting lines started with | ||
| 57 | spaces, added support for it. | ||
| 58 | |||
| 59 | 2005-04-03 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> | ||
| 60 | |||
| 61 | * textmodes/bibtex.el (bibtex-url): Use format to generate the url. | ||
| 62 | (bibtex-generate-url-list): Update docstring accordingly. Put the | ||
| 63 | complex example in the docstring. | ||
| 64 | (bibtex-font-lock-url): Use pop. | ||
| 65 | |||
| 66 | 2005-04-03 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 67 | |||
| 68 | * progmodes/tcl.el (tcl-set-font-lock-keywords): Use new \_< ops. | ||
| 69 | |||
| 70 | * pcvs.el (cvs-checkout): Prompt for cvsroot as well. | ||
| 71 | |||
| 72 | 2005-04-03 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 73 | |||
| 74 | * filesets.el (filesets-set-default): Doc fix. | ||
| 75 | |||
| 76 | 2005-04-03 Lute Kamstra <lute@gnu.org> | ||
| 77 | |||
| 78 | * generic.el (define-generic-mode): Add argument to specify | ||
| 79 | keywords for defcustom. | ||
| 80 | (default-generic-mode): Specify :group. | ||
| 81 | |||
| 82 | * generic-x.el: Specify :group for all generic modes. | ||
| 83 | |||
| 84 | * desktop.el (desktop-no-desktop-file-hook) | ||
| 85 | (desktop-after-read-hook): Fix docstring. | ||
| 86 | |||
| 87 | 2005-04-02 Luc Teirlinck <teirllm@auburn.edu> | ||
| 88 | |||
| 89 | * simple.el (visible-mode): Use explicit :group keyword. | ||
| 90 | This changes the group of `visible-mode-hook' from paren-blinking | ||
| 91 | to editing-basics. | ||
| 92 | |||
| 93 | 2005-04-02 Sergey Poznyakoff <gray@Mirddin.farlep.net> (tiny change) | ||
| 94 | |||
| 95 | * mail/rmail.el (rmail-parse-url): Bugfix. Parse traditional | ||
| 96 | mailbox specifications as well as URLs. | ||
| 97 | (rmail-insert-inbox-text): Remove unused conditional branches. | ||
| 98 | |||
| 99 | 2005-04-01 Jay Belanger <belanger@truman.edu> | ||
| 100 | |||
| 101 | * calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command) | ||
| 102 | (calc-gnuplot-print-command): Move definitions to calc.el. | ||
| 103 | |||
| 104 | * calc/calc-embed.el (calc-embedded-announce-formula) | ||
| 105 | (calc-embedded-open-formula, calc-embedded-close-formula) | ||
| 106 | (calc-embedded-open-word, calc-embedded-close-word) | ||
| 107 | (calc-embedded-open-plain, calc-embedded-close-plain) | ||
| 108 | (calc-embedded-open-new-formula, calc-embedded-close-new-formula) | ||
| 109 | (calc-embedded-open-mode, calc-embedded-close-mode): | ||
| 110 | Move definitions to calc.el. | ||
| 111 | |||
| 112 | * calc/calc.el (calc-settings-file, calc-language-alist): | ||
| 113 | Make customizable. | ||
| 114 | (calc-embedded-announce-formula, calc-embedded-open-formula) | ||
| 115 | (calc-embedded-close-formula, calc-embedded-open-word) | ||
| 116 | (calc-embedded-close-word, calc-embedded-open-plain) | ||
| 117 | (calc-embedded-close-plain, calc-embedded-open-new-formula) | ||
| 118 | (calc-embedded-close-new-formula, calc-embedded-open-mode) | ||
| 119 | (calc-embedded-close-mode, calc-gnuplot-name) | ||
| 120 | (calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here | ||
| 121 | from other files and make customizable. | ||
| 122 | |||
| 123 | 2005-04-01 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 124 | |||
| 125 | * pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check): | ||
| 126 | Use buffer-live-p. | ||
| 127 | (cvs-mode-run): Don't call cvs-update-header here. | ||
| 128 | (cvs-run-process): Call cvs-update-header. | ||
| 129 | Use process properties for cvs-postprocess and cvs-buffer so that | ||
| 130 | the sentinel can behave better if the temp buffer is killed. | ||
| 131 | Use a pipe rather than a tty, to better handle unexpected prompts. | ||
| 132 | (cvs-sentinel): Rewrite. Call cvs-update-header. | ||
| 133 | |||
| 134 | 2005-04-01 Andre Spiegel <spiegel@gnu.org> | ||
| 135 | |||
| 136 | * vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when | ||
| 137 | we go via Tramp or Ange-FTP. Suggested by Kai Grossjohann. | ||
| 138 | |||
| 139 | 2005-03-31 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 140 | |||
| 141 | * generic.el (define-generic-mode): Add indentation rule. | ||
| 142 | |||
| 143 | 2005-03-31 Luc Teirlinck <teirllm@auburn.edu> | ||
| 144 | |||
| 145 | * files.el (mode-require-final-newline): Make Custom correctly | ||
| 146 | report a nil value and allow to set it to nil via Custom. | ||
| 147 | Doc fix. | ||
| 148 | |||
| 149 | 2005-04-01 Kenichi Handa <handa@m17n.org> | ||
| 150 | |||
| 151 | * international/characters.el: Enable the correct case setting for | ||
| 152 | dotless-i and dotted-I. | ||
| 153 | |||
| 154 | 2005-04-01 Kim F. Storm <storm@cua.dk> | ||
| 155 | |||
| 156 | * ido.el (ido-file-internal): Fall back to non-ido command if | ||
| 157 | initial directory is on slow ftp (or tramp) host. | ||
| 158 | |||
| 159 | 2005-03-31 Richard M. Stallman <rms@gnu.org> | ||
| 160 | |||
| 161 | * emacs-lisp/autoload.el (make-autoload): | ||
| 162 | Handle define-global-minor-mode. | ||
| 163 | |||
| 164 | * emacs-lisp/easy-mmode.el (define-global-minor-mode): | ||
| 165 | Rename from easy-mmode-define-global-mode. | ||
| 166 | (easy-mmode-define-global-mode): Alias for define-global-minor-mode. | ||
| 167 | |||
| 168 | * progmodes/scheme.el (scheme-mode-syntax-table): | ||
| 169 | Update syntax of | and # for two-character comment syntax. | ||
| 170 | |||
| 171 | 2005-03-31 Lute Kamstra <lute@gnu.org> | ||
| 172 | |||
| 173 | * emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode) | ||
| 174 | (define-minor-mode): Call custom-current-group at load-time. | ||
| 175 | |||
| 176 | * generic.el (define-generic-mode): Add debug declaration. | ||
| 177 | Add defcustom for the mode hook. | ||
| 178 | (generic-mode-internal): Use run-mode-hooks. | ||
| 179 | |||
| 180 | 2005-03-31 Kim F. Storm <storm@cua.dk> | ||
| 181 | |||
| 182 | * mouse.el (mouse-1-click-follows-link): Increase to 450 ms. | ||
| 183 | (mouse-fixup-help-message): New defun called by show_help_echo | ||
| 184 | to fixup mouse-2 prefix in help messages when applicable. | ||
| 185 | |||
| 186 | * tooltip.el (tooltip-show-help-function): Don't fixup message here. | ||
| 187 | |||
| 188 | 2005-03-31 Kenichi Handa <handa@m17n.org> | ||
| 189 | |||
| 190 | * language/thai-word.el (thai-find-word-ends): Pay attention to | ||
| 191 | the case that we reach the end of buffer. | ||
| 192 | |||
| 193 | * textmodes/fill.el (fill-text-properties-at): New function. | ||
| 194 | (fill-newline): Use fill-text-properties-at instead of | ||
| 195 | text-properties-at. | ||
| 196 | |||
| 197 | 2005-03-31 Karl Berry <karl@freefriends.org> | ||
| 198 | |||
| 199 | * textmodes/tex-mode.el (tex-compile): shell-quote-argument, | ||
| 200 | not comint-quote-filename. | ||
| 201 | |||
| 202 | 2005-03-31 Olive Lin <olive.lin@versateladsl.be> (tiny change) | ||
| 203 | |||
| 204 | * textmodes/tex-mode.el (tex-start-tex) shell-quote-argument, | ||
| 205 | not comint-quote-filename. | ||
| 206 | |||
| 207 | 2005-03-31 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 208 | |||
| 209 | * help-fns.el (help-with-tutorial): Revert last change. | ||
| 210 | |||
| 211 | 2005-03-31 Kim F. Storm <storm@cua.dk> | ||
| 212 | |||
| 213 | * emulation/cua-base.el (cua-scroll-down): Add CUA property. | ||
| 214 | |||
| 215 | 2005-03-30 Paul Eggert <eggert@cs.ucla.edu> | ||
| 216 | |||
| 217 | * calendar/cal-china.el: Update reference to "Calendrical | ||
| 218 | Calculations" book; there's a new edition. | ||
| 219 | * calendar/cal-coptic.el: Likewise. | ||
| 220 | * calendar/cal-french.el: Likewise. | ||
| 221 | * calendar/cal-hebrew.el: Likewise. | ||
| 222 | * calendar/cal-islam.el: Likewise. | ||
| 223 | * calendar/cal-iso.el: Likewise. | ||
| 224 | * calendar/cal-julian.el: Likewise. | ||
| 225 | * calendar/cal-mayan.el: Likewise. | ||
| 226 | * calendar/cal-persia.el: Likewise. | ||
| 227 | * calendar/calendar.el: Likewise. | ||
| 228 | * calendar/holidays.el: Likewise. | ||
| 229 | * calendar/lunar.el: Likewise. | ||
| 230 | * calendar/solar.el: Likewise. | ||
| 231 | |||
| 232 | * calendar/calendar.el (calendar-day-abbrev-array): Remove trailing | ||
| 233 | white space from doc string. | ||
| 234 | |||
| 235 | 2005-03-30 Jay Belanger <belanger@truman.edu> | ||
| 236 | |||
| 237 | * calc/calc-help.el (calc-full-help): Remove email address. | ||
| 238 | |||
| 239 | 2005-03-30 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 240 | |||
| 241 | * help-fns.el (help-with-tutorial): Delete title line. | ||
| 242 | |||
| 243 | 2005-03-30 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 244 | |||
| 245 | * calendar/cal-x.el (calendar-one-frame-setup) | ||
| 246 | (calendar-only-one-frame-setup, calendar-two-frame-setup): Use t | ||
| 247 | rather than 'symbol for set-window-dedicated-p. | ||
| 248 | |||
| 249 | * calendar/appt.el (appt-buffer-name): Make it a constant. | ||
| 250 | (appt-add): Doc fix. | ||
| 251 | |||
| 252 | * filesets.el (filesets-menu-path, filesets-menu-before) | ||
| 253 | (filesets-menu-in-menu): Doc fix. Now valid in GNU Emacs. | ||
| 254 | (filesets-menu-cache-file): Use directory ~/.emacs.d. | ||
| 255 | (filesets-add-submenu): Delete and use add-submenu instead. | ||
| 256 | |||
| 257 | 2005-03-30 Carsten Dominik <dominik@science.uva.nl> | ||
| 258 | |||
| 259 | * org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset) | ||
| 260 | (org-agenda-convert-date, org-agenda-goto-calendar): New commands. | ||
| 261 | (org-diary-default-entry): New function. | ||
| 262 | (org-get-entries-from-diary): Better parsing of diary entries. | ||
| 263 | (org-agenda-check-no-diary): New function. | ||
| 264 | ("diary-lib"): Advice to function `add-to-diary-list', to allow | ||
| 265 | linking to diary entries. | ||
| 266 | (org-agenda-execute-calendar-command): New function. | ||
| 267 | (org-agenda): Improve visible section in window. | ||
| 268 | Use `org-fit-agenda-window'. | ||
| 269 | (org-fit-agenda-window): New option. | ||
| 270 | (org-move-subtree-down): Better handling of empty lines | ||
| 271 | at end of subtree. | ||
| 272 | (org-cycle): Numeric prefix is interpreted now as show-subtree N | ||
| 273 | levels up. | ||
| 274 | (org-fontify-done-headline): New option. | ||
| 275 | (org-headline-done-face): New face. | ||
| 276 | (org-set-font-lock-defaults): Use `org-headline-done-face'. | ||
| 277 | (org-table-copy-down): Rename from `org-table-copy-from-above'. | ||
| 278 | When current field is non-empty, it is copied to next row. | ||
| 279 | (org-table-copy-from-above): Fix bug which made it | ||
| 280 | impossible to copy fields containing only a single non-white character. | ||
| 281 | |||
| 282 | 2005-03-30 Kim F. Storm <storm@cua.dk> | ||
| 283 | |||
| 284 | * kmacro.el (kmacro-end-macro): Isearch may store this command | ||
| 285 | into the macro -- so ignore it when executing keyboard macro. | ||
| 286 | |||
| 287 | 2005-03-30 Nick Roberts <nickrob@snap.net.nz> | ||
| 288 | |||
| 289 | * tooltip.el (tooltip-gud-display): Use gud-overlay-arrow-position. | ||
| 290 | |||
| 291 | 2005-03-29 Kenichi Handa <handa@m17n.org> | ||
| 292 | |||
| 293 | * language/thai.el ("Thai"): Set setup-function and exit-function | ||
| 294 | for Thai language environment. | ||
| 295 | |||
| 296 | * language/thai-util.el: Require thai-word. | ||
| 297 | (thai-word-mode-map): New variable. | ||
| 298 | (thai-word-mode): New minor mode. | ||
| 299 | (setup-thai-language-environment-internal): New function. | ||
| 300 | (exit-thai-language-environment-internal): New function. | ||
| 301 | |||
| 302 | * language/thai-word.el (thai-word-table): Declare it by defvar, | ||
| 303 | use dolist to initialize it. | ||
| 304 | (thai-kill-word, thai-backward-kill-word, thai-transpose-words) | ||
| 305 | (thai-fill-find-break-point): New functions. | ||
| 306 | |||
| 307 | 2005-03-29 Richard M. Stallman <rms@gnu.org> | ||
| 308 | |||
| 309 | * simple.el (idle-update-delay): Move definition up. | ||
| 310 | (set-mark): Doc fix. | ||
| 311 | |||
| 312 | 2005-03-29 Chong Yidong <cyd@stupidchicken.com> | ||
| 313 | |||
| 314 | * longlines.el: New file. | ||
| 315 | |||
| 316 | * simple.el (buffer-substring-filters): New variable. | ||
| 317 | (filter-buffer-substring): New function. | ||
| 318 | (kill-region, copy-region-as-kill): Use it. | ||
| 319 | |||
| 320 | * register.el (copy-to-register, append-to-register) | ||
| 321 | (prepend-to-register): Use filter-buffer-substring. | ||
| 322 | |||
| 323 | 2005-03-30 Nick Roberts <nickrob@snap.net.nz> | ||
| 324 | |||
| 325 | * progmodes/gud.el (gdb): (Re)-initialise gud-filter-pending-text. | ||
| 326 | (gud-filter-pending-text): Move in front of gdb. | ||
| 327 | (gud-overlay-arrow-position): New variable. | ||
| 328 | (gud-sentinel, gud-display-line): Use it in place of | ||
| 329 | overlay-arrow-position. | ||
| 330 | |||
| 331 | 2005-03-29 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 332 | |||
| 333 | * progmodes/fortran.el (fortran-if-indent): Doc fix. | ||
| 334 | (fortran-font-lock-keywords-2): Add "where", "elsewhere". | ||
| 335 | (fortran-font-lock-keywords-4): New variable. | ||
| 336 | (fortran-blocks-re, fortran-end-block-re) | ||
| 337 | (fortran-start-block-re): New constants, for hideshow. | ||
| 338 | (hs-special-modes-alist): Add a Fortran entry. | ||
| 339 | (fortran-mode-map): Bind fortran-end-of-block, | ||
| 340 | fortran-beginning-of-block to \M-\C-n, \M-\C-p. | ||
| 341 | (fortran-mode): Doc fix. Add fortran-font-lock-keywords-4. | ||
| 342 | (fortran-looking-at-if-then, fortran-end-of-block) | ||
| 343 | (fortran-beginning-of-block): New functions, for hideshow. | ||
| 344 | |||
| 345 | * progmodes/f90.el (f90-end-block-re, f90-start-block-re): Doc | ||
| 346 | fix. Tweak regexp. | ||
| 347 | (f90-beginning-of-block): Push mark first. | ||
| 348 | |||
| 349 | 2005-03-29 Jay Belanger <belanger@truman.edu> | ||
| 350 | |||
| 351 | * calc/calc.el: Update copyright date. | ||
| 352 | (calc-version): Increase to 2.1. | ||
| 353 | (calc-version-date): Remove. | ||
| 354 | |||
| 355 | * calc/calc-help.el: Update copyright date. | ||
| 356 | (calc-full-help): Remove reference to calc-version-date. | ||
| 357 | Update copyright date. | ||
| 358 | |||
| 359 | 2005-03-29 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 360 | |||
| 361 | * vc.el (vc-do-command): Use a pipe for async processes, so password | ||
| 362 | prompts don't show up at places where the user can't reply. | ||
| 363 | |||
| 364 | 2005-03-29 Olive Lin <olive.lin@versateladsl.be> (tiny change) | ||
| 365 | |||
| 366 | * textmodes/tex-mode.el (tex-send-command): shell-quote-argument | ||
| 367 | on the file name we pass to the inferior shell. | ||
| 368 | |||
| 369 | 2005-03-29 Stephan Stahl <stahl@eos.franken.de> (tiny change) | ||
| 370 | |||
| 371 | * progmodes/which-func.el (which-function): Be robust in the face of an | ||
| 372 | imenu--make-index-alist failure. | ||
| 373 | |||
| 374 | 2005-03-29 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 375 | |||
| 376 | * reveal.el (reveal-mode-map): Don't override C-a and C-e. | ||
| 377 | |||
| 378 | * progmodes/python.el (python-preoutput-filter): Fix last change. | ||
| 379 | |||
| 380 | 2005-03-29 Lute Kamstra <lute@gnu.org> | ||
| 381 | |||
| 382 | * emacs-lisp/debug.el (debug-on-entry): Handle autoloaded | ||
| 383 | functions and compiled macros. | ||
| 384 | (debug-convert-byte-code): Handle macros too. | ||
| 385 | (debug-on-entry-1): Don't signal an error when trying to clear a | ||
| 386 | function that is not set to debug on entry. | ||
| 387 | |||
| 388 | 2005-03-29 Jay Belanger <belanger@truman.edu> | ||
| 389 | |||
| 390 | * calc/calc-lang.el: Add functions to math-function-table | ||
| 391 | properties of tex and math. | ||
| 392 | |||
| 393 | 2005-03-29 Kenichi Handa <handa@m17n.org> | ||
| 394 | |||
| 395 | * ps-mule.el (ps-mule-plot-string): Translate characters by | ||
| 396 | ps-print-translation-table. | ||
| 397 | (ps-mule-begin-job): Call find-charset-region/string with | ||
| 398 | ps-print-translation-table. | ||
| 399 | (ps-mule-printable-p): Return t if CHARSET is ascii or latin-iso8859-1. | ||
| 400 | |||
| 401 | * ps-print.el (ps-print-translation-table): New variable. | ||
| 402 | (ps-plot-region): Translate characters by ps-print-translation-table. | ||
| 403 | |||
| 404 | 2005-03-29 Juri Linkov <juri@jurta.org> | ||
| 405 | |||
| 406 | * simple.el (next-error-highlight-timer): New variable. | ||
| 407 | |||
| 408 | * progmodes/compile.el (compilation-goto-locus): | ||
| 409 | Use `next-error-highlight-timer' instead of `sit-for'. | ||
| 410 | |||
| 411 | 2005-03-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 412 | |||
| 413 | * mail/supercite.el (sc-mail-field): Use assoc-string. | ||
| 414 | (sc-get-address): Simplify regexps. | ||
| 415 | |||
| 416 | * files.el (minibuffer-with-setup-hook): New macro. | ||
| 417 | (find-file-read-args): Use it to avoid let-binding | ||
| 418 | minibuffer-with-setup-hook (which breaks turning on/off | ||
| 419 | file-name-shadow-mode while in the prompt). | ||
| 420 | |||
| 421 | * complete.el (PC-read-include-file-name-internal): Use test-completion. | ||
| 422 | |||
| 423 | 2005-03-28 Luc Teirlinck <teirllm@auburn.edu> | ||
| 424 | |||
| 425 | * font-lock.el: Bind `font-lock-fontify-block' to M-o M-o. | ||
| 426 | |||
| 427 | 2005-03-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 428 | |||
| 429 | * window.el (window-buffer-height): Use count-screen-lines. | ||
| 430 | |||
| 431 | * progmodes/python.el (python-preoutput-leftover): New var. | ||
| 432 | (python-preoutput-filter): Use it. | ||
| 433 | (python-send-receive): Loop until all the result has been received. | ||
| 434 | |||
| 435 | 2005-03-28 Juri Linkov <juri@jurta.org> | ||
| 436 | |||
| 437 | * dired.el (dired-mode-map): Add ellipsis to "Compare directories". | ||
| 438 | |||
| 439 | * menu-bar.el (menu-bar-file-menu): Remove ellipsis from | ||
| 440 | "Recover Crashed Session". | ||
| 441 | (menu-bar-search-menu): Add ellipsis to "Search tagged files". | ||
| 442 | (menu-bar-replace-menu): Add ellipsis to "Replace in tagged files". | ||
| 443 | (menu-bar-goto-menu): Add ellipsis to "Set Tags File Name". | ||
| 444 | (menu-bar-goto-menu): Add ellipsis to "Tags Apropos". | ||
| 445 | (menu-bar-options-menu): Add ellipsis to "Set Font/Fontset". | ||
| 446 | (menu-bar-manuals-menu): Add ellipsis to "Find Command in Manual". | ||
| 447 | (menu-bar-manuals-menu): Add ellipsis to "Find Key in Manual". | ||
| 448 | (menu-bar-help-menu): Remove ellipsis from "Find Emacs Packages". | ||
| 449 | |||
| 450 | * ediff-hook.el (menu-bar-ediff-misc-menu, ediff-misc-menu): | ||
| 451 | Remove ellipsis from "Ediff Manual", "Customize Ediff", "List | ||
| 452 | Ediff Sessions", "Toggle use of separate control buffer frame", | ||
| 453 | "Use separate frame for Ediff control buffer". | ||
| 454 | |||
| 455 | * bookmark.el (menu-bar-bookmark-map): Add ellipsis to "Jump to | ||
| 456 | Bookmark", "Set Bookmark", "Insert Contents", "Insert Location", | ||
| 457 | "Rename Bookmark", "Delete Bookmark". | ||
| 458 | |||
| 459 | * info.el (Info-mode-menu): Remove ellipsis from "Index". | ||
| 460 | Add ellipsis to "Lookup a String", "Lookup a string in all indices". | ||
| 461 | Add `:active Info-index-alternatives' to "Next Matching Item". | ||
| 462 | |||
| 463 | * wdired.el (wdired-change-to-wdired-mode): | ||
| 464 | Mention `wdired-abort-changes' key in the initial message. | ||
| 465 | |||
| 466 | * international/mule.el (auto-coding-alist): Associate non-ascii | ||
| 467 | image filename extensions with `no-conversion'. | ||
| 468 | |||
| 469 | 2005-03-27 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 470 | |||
| 471 | * international/iso-acc.el: | ||
| 472 | * obsolete/iso-acc.el: Move iso-acc to the obsolete subdir. | ||
| 473 | |||
| 474 | 2005-03-26 Luc Teirlinck <teirllm@auburn.edu> | ||
| 475 | |||
| 476 | * textmodes/sgml-mode.el (html-mode): Doc update. | ||
| 477 | |||
| 478 | * autorevert.el (auto-revert-check-vc-info): Minor doc fix. | ||
| 479 | |||
| 1 | 2005-03-26 Dan Nicolaescu <dann@ics.uci.edu> | 480 | 2005-03-26 Dan Nicolaescu <dann@ics.uci.edu> |
| 2 | 481 | ||
| 3 | * term.el (term-move-columns): Fix face after extending a line. | 482 | * term.el (term-move-columns): Fix face after extending a line. |
| @@ -345,8 +824,7 @@ | |||
| 345 | 824 | ||
| 346 | 2005-03-21 Lute Kamstra <lute@gnu.org> | 825 | 2005-03-21 Lute Kamstra <lute@gnu.org> |
| 347 | 826 | ||
| 348 | * generic.el: Fix commentary section. Don't require cl for | 827 | * generic.el: Fix commentary section. Don't require cl for compilation. |
| 349 | compilation. | ||
| 350 | (generic-mode-list): Add autoload cookie. | 828 | (generic-mode-list): Add autoload cookie. |
| 351 | (generic-use-find-file-hook, generic-lines-to-scan) | 829 | (generic-use-find-file-hook, generic-lines-to-scan) |
| 352 | (generic-find-file-regexp, generic-ignore-files-regexp) | 830 | (generic-find-file-regexp, generic-ignore-files-regexp) |
| @@ -396,20 +874,27 @@ | |||
| 396 | 874 | ||
| 397 | * tramp-smb.el (all): Remove debug construct for | 875 | * tramp-smb.el (all): Remove debug construct for |
| 398 | `with-parsed-tramp-file-name'. | 876 | `with-parsed-tramp-file-name'. |
| 399 | (tramp-smb-prompt): Prompt can contain spaces inside directory | 877 | (tramp-smb-prompt): Prompt can contain spaces inside directory names. |
| 400 | names. | ||
| 401 | (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file): | 878 | (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file): |
| 402 | No error message if DIRECTORY or FILENAME doesn't exist. | 879 | No error message if DIRECTORY or FILENAME doesn't exist. |
| 403 | (tramp-smb-open-connection): Check existence of | 880 | (tramp-smb-open-connection): Check existence of |
| 404 | `tramp-smb-program'. | 881 | `tramp-smb-program'. |
| 405 | 882 | ||
| 883 | 2005-03-20 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 884 | |||
| 885 | * progmodes/perl-mode.el (perl-font-lock-syntactic-face-function): | ||
| 886 | Properly handle the case where the `m' or `s' command's argument is not | ||
| 887 | yet terminated. | ||
| 888 | (perl-indent-new-calculate): New function. | ||
| 889 | (perl-indent-line): Use it. | ||
| 890 | |||
| 406 | 2005-03-20 Miles Bader <miles@gnu.org> | 891 | 2005-03-20 Miles Bader <miles@gnu.org> |
| 407 | 892 | ||
| 408 | * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces | 893 | * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces |
| 409 | in text-mode too. Change to new face names. | 894 | in text-mode too. Change to new face names. |
| 410 | (breakpoint-enabled): Renamed from `breakpoint-enabled-bitmap-face'. | 895 | (breakpoint-enabled): Rename from `breakpoint-enabled-bitmap-face'. |
| 411 | Add `:weight bold' attribute. | 896 | Add `:weight bold' attribute. |
| 412 | (breakpoint-disabled): Renamed from `breakpoint-disabled-bitmap-face'. | 897 | (breakpoint-disabled): Rename from `breakpoint-disabled-bitmap-face'. |
| 413 | 898 | ||
| 414 | 2005-03-19 Juri Linkov <juri@jurta.org> | 899 | 2005-03-19 Juri Linkov <juri@jurta.org> |
| 415 | 900 | ||
| @@ -426,8 +911,7 @@ | |||
| 426 | 911 | ||
| 427 | 2005-03-19 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny changes) | 912 | 2005-03-19 Yoichi NAKAYAMA <yoichi@geiin.org> (tiny changes) |
| 428 | 913 | ||
| 429 | * finder.el (finder-current-item): Throw an error on an empty | 914 | * finder.el (finder-current-item): Throw an error on an empty line. |
| 430 | line. | ||
| 431 | 915 | ||
| 432 | * man.el (Man-follow-manual-reference): If current-word returns | 916 | * man.el (Man-follow-manual-reference): If current-word returns |
| 433 | nil, use "". | 917 | nil, use "". |
| @@ -466,8 +950,8 @@ | |||
| 466 | 950 | ||
| 467 | 2005-03-19 Vinicius Jose Latorre <viniciusjl@ig.com.br> | 951 | 2005-03-19 Vinicius Jose Latorre <viniciusjl@ig.com.br> |
| 468 | 952 | ||
| 469 | * ps-print.el (ps-generate-string-list, ps-generate-header-line): Use | 953 | * ps-print.el (ps-generate-string-list, ps-generate-header-line): |
| 470 | functionp instead of symbolp and fboundp. Reported by Drkm | 954 | Use functionp instead of symbolp and fboundp. Reported by Drkm |
| 471 | <darkman_spam@yahoo.fr>. | 955 | <darkman_spam@yahoo.fr>. |
| 472 | (ps-print-version): New version 6.6.6. | 956 | (ps-print-version): New version 6.6.6. |
| 473 | 957 | ||
| @@ -2290,7 +2774,7 @@ | |||
| 2290 | * simple.el (eval-expression-print-format): Avoid warning | 2774 | * simple.el (eval-expression-print-format): Avoid warning |
| 2291 | about edebug-active. | 2775 | about edebug-active. |
| 2292 | 2776 | ||
| 2293 | 2005-01-15 "James R. Van Zandt" <jrvz@comcast.net> (Tiny change) | 2777 | 2005-01-15 James R. Van Zandt <jrvz@comcast.net> (Tiny change) |
| 2294 | 2778 | ||
| 2295 | * progmodes/sh-script.el: Code copied from make-mode.el | 2779 | * progmodes/sh-script.el: Code copied from make-mode.el |
| 2296 | with small changes, | 2780 | with small changes, |
| @@ -7012,8 +7496,7 @@ | |||
| 7012 | 7496 | ||
| 7013 | 2004-09-21 Kenichi Handa <handa@m17n.org> | 7497 | 2004-09-21 Kenichi Handa <handa@m17n.org> |
| 7014 | 7498 | ||
| 7015 | * descr-text.el (describe-char): Checking of quail activation | 7499 | * descr-text.el (describe-char): Checking of quail activation fixed. |
| 7016 | fixed. | ||
| 7017 | 7500 | ||
| 7018 | 2004-09-21 Jay Belanger <belanger@truman.edu> | 7501 | 2004-09-21 Jay Belanger <belanger@truman.edu> |
| 7019 | 7502 | ||
diff --git a/lisp/add-log.el b/lisp/add-log.el index 7706a697755..126e7ecbaa5 100644 --- a/lisp/add-log.el +++ b/lisp/add-log.el | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; add-log.el --- change log maintenance commands for Emacs | 1 | ;;; add-log.el --- change log maintenance commands for Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1985, 86, 88, 93, 94, 97, 98, 2000, 03, 2004 | 3 | ;; Copyright (C) 1985, 1986, 1988, 1993, 1994, 1997, 1998, 2000, 2003, |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; 2004, 2005 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| 7 | ;; Keywords: tools | 7 | ;; Keywords: tools |
| @@ -225,20 +225,20 @@ Note: The search is conducted only within 10%, at the beginning of the file." | |||
| 225 | (2 'change-log-email-face))) | 225 | (2 'change-log-email-face))) |
| 226 | ;; | 226 | ;; |
| 227 | ;; File names. | 227 | ;; File names. |
| 228 | ("^\t\\* \\([^ ,:([\n]+\\)" | 228 | ("^\\(?: +\\|\t\\)\\* \\([^ ,:([\n]+\\)" |
| 229 | (1 'change-log-file-face) | 229 | (1 'change-log-file-face) |
| 230 | ;; Possibly further names in a list: | 230 | ;; Possibly further names in a list: |
| 231 | ("\\=, \\([^ ,:([\n]+\\)" nil nil (1 'change-log-file-face)) | 231 | ("\\=, \\([^ ,:([\n]+\\)" nil nil (1 'change-log-file-face)) |
| 232 | ;; Possibly a parenthesized list of names: | 232 | ;; Possibly a parenthesized list of names: |
| 233 | ("\\= (\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" | 233 | ("\\= (\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" |
| 234 | nil nil (1 'change-log-list-face)) | 234 | nil nil (1 'change-log-list-face)) |
| 235 | ("\\=, *\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" | 235 | ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" |
| 236 | nil nil (1 'change-log-list-face))) | 236 | nil nil (1 'change-log-list-face))) |
| 237 | ;; | 237 | ;; |
| 238 | ;; Function or variable names. | 238 | ;; Function or variable names. |
| 239 | ("^\t(\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" | 239 | ("^\t(\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" |
| 240 | (1 'change-log-list-face) | 240 | (1 'change-log-list-face) |
| 241 | ("\\=, *\\([^() ,\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil | 241 | ("\\=, *\\([^(),\n]+\\|(\\(setf\\|SETF\\) [^() ,\n]+)\\)" nil nil |
| 242 | (1 'change-log-list-face))) | 242 | (1 'change-log-list-face))) |
| 243 | ;; | 243 | ;; |
| 244 | ;; Conditionals. | 244 | ;; Conditionals. |
diff --git a/lisp/autorevert.el b/lisp/autorevert.el index d4a3d10d167..36b5a6f5a37 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; autorevert.el --- revert buffers when files on disk change | 1 | ;;; autorevert.el --- revert buffers when files on disk change |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997, 1998, 1999, 2001, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997, 1998, 1999, 2001, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Anders Lindgren <andersl@andersl.com> | 5 | ;; Author: Anders Lindgren <andersl@andersl.com> |
| 6 | ;; Keywords: convenience | 6 | ;; Keywords: convenience |
| @@ -246,7 +246,7 @@ This currently works by automatically updating the version | |||
| 246 | control info every `auto-revert-interval' seconds. Nevertheless, | 246 | control info every `auto-revert-interval' seconds. Nevertheless, |
| 247 | it should not cause excessive CPU usage on a reasonably fast | 247 | it should not cause excessive CPU usage on a reasonably fast |
| 248 | machine, if it does not apply to too many version controlled | 248 | machine, if it does not apply to too many version controlled |
| 249 | buffers. CPU usage depends on the version control system" | 249 | buffers. CPU usage depends on the version control system." |
| 250 | :group 'auto-revert | 250 | :group 'auto-revert |
| 251 | :type 'boolean | 251 | :type 'boolean |
| 252 | :version "22.1") | 252 | :version "22.1") |
| @@ -290,7 +290,7 @@ This is a minor mode that affects only the current buffer. | |||
| 290 | Use `global-auto-revert-mode' to automatically revert all buffers. | 290 | Use `global-auto-revert-mode' to automatically revert all buffers. |
| 291 | Use `auto-revert-tail-mode' if you know that the file will only grow | 291 | Use `auto-revert-tail-mode' if you know that the file will only grow |
| 292 | without being changed in the part that is already in the buffer." | 292 | without being changed in the part that is already in the buffer." |
| 293 | nil auto-revert-mode-text nil | 293 | :group 'auto-revert :lighter auto-revert-mode-text |
| 294 | (if auto-revert-mode | 294 | (if auto-revert-mode |
| 295 | (if (not (memq (current-buffer) auto-revert-buffer-list)) | 295 | (if (not (memq (current-buffer) auto-revert-buffer-list)) |
| 296 | (push (current-buffer) auto-revert-buffer-list)) | 296 | (push (current-buffer) auto-revert-buffer-list)) |
diff --git a/lisp/battery.el b/lisp/battery.el index 69bd68bb0b9..42ceec0c90c 100644 --- a/lisp/battery.el +++ b/lisp/battery.el | |||
| @@ -114,7 +114,7 @@ The text being displayed in the mode line is controlled by the variables | |||
| 114 | `battery-mode-line-format' and `battery-status-function'. | 114 | `battery-mode-line-format' and `battery-status-function'. |
| 115 | The mode line will be updated automatically every `battery-update-interval' | 115 | The mode line will be updated automatically every `battery-update-interval' |
| 116 | seconds." | 116 | seconds." |
| 117 | :global t | 117 | :global t :group 'battery |
| 118 | (setq battery-mode-line-string "") | 118 | (setq battery-mode-line-string "") |
| 119 | (or global-mode-string (setq global-mode-string '(""))) | 119 | (or global-mode-string (setq global-mode-string '(""))) |
| 120 | (and battery-update-timer (cancel-timer battery-update-timer)) | 120 | (and battery-update-timer (cancel-timer battery-update-timer)) |
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 949434baffb..869896b087a 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el | |||
| @@ -2111,12 +2111,12 @@ strings returned are not." | |||
| 2111 | (define-key map [write] '("Save Bookmarks As..." . bookmark-write)) | 2111 | (define-key map [write] '("Save Bookmarks As..." . bookmark-write)) |
| 2112 | (define-key map [save] '("Save Bookmarks" . bookmark-save)) | 2112 | (define-key map [save] '("Save Bookmarks" . bookmark-save)) |
| 2113 | (define-key map [edit] '("Edit Bookmark List" . bookmark-bmenu-list)) | 2113 | (define-key map [edit] '("Edit Bookmark List" . bookmark-bmenu-list)) |
| 2114 | (define-key map [delete] '("Delete Bookmark" . bookmark-delete)) | 2114 | (define-key map [delete] '("Delete Bookmark..." . bookmark-delete)) |
| 2115 | (define-key map [rename] '("Rename Bookmark" . bookmark-rename)) | 2115 | (define-key map [rename] '("Rename Bookmark..." . bookmark-rename)) |
| 2116 | (define-key map [locate] '("Insert Location" . bookmark-locate)) | 2116 | (define-key map [locate] '("Insert Location..." . bookmark-locate)) |
| 2117 | (define-key map [insert] '("Insert Contents" . bookmark-insert)) | 2117 | (define-key map [insert] '("Insert Contents..." . bookmark-insert)) |
| 2118 | (define-key map [set] '("Set Bookmark" . bookmark-set)) | 2118 | (define-key map [set] '("Set Bookmark..." . bookmark-set)) |
| 2119 | (define-key map [jump] '("Jump to Bookmark" . bookmark-jump)) | 2119 | (define-key map [jump] '("Jump to Bookmark..." . bookmark-jump)) |
| 2120 | map)) | 2120 | map)) |
| 2121 | 2121 | ||
| 2122 | ;;;###autoload | 2122 | ;;;###autoload |
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el index 2d2f66b1ebf..4f45419c136 100644 --- a/lisp/calc/calc-embed.el +++ b/lisp/calc/calc-embed.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; calc-embed.el --- embed Calc in a buffer | 1 | ;;; calc-embed.el --- embed Calc in a buffer |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: David Gillespie <daveg@synaptics.com> | 5 | ;; Author: David Gillespie <daveg@synaptics.com> |
| 6 | ;; Maintainer: Jay Belanger <belanger@truman.edu> | 6 | ;; Maintainer: Jay Belanger <belanger@truman.edu> |
| @@ -48,48 +48,18 @@ | |||
| 48 | (defvar calc-embedded-some-active nil) | 48 | (defvar calc-embedded-some-active nil) |
| 49 | (make-variable-buffer-local 'calc-embedded-some-active) | 49 | (make-variable-buffer-local 'calc-embedded-some-active) |
| 50 | 50 | ||
| 51 | (defvar calc-embedded-open-formula "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n" | 51 | ;; The following variables are customizable and defined in calc.el. |
| 52 | "*A regular expression for the opening delimiter of a formula used by | 52 | (defvar calc-embedded-announce-formula) |
| 53 | calc-embedded.") | 53 | (defvar calc-embedded-open-formula) |
| 54 | 54 | (defvar calc-embedded-close-formula) | |
| 55 | (defvar calc-embedded-close-formula "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n" | 55 | (defvar calc-embedded-open-word) |
| 56 | "*A regular expression for the closing delimiter of a formula used by | 56 | (defvar calc-embedded-close-word) |
| 57 | calc-embedded.") | 57 | (defvar calc-embedded-open-plain) |
| 58 | 58 | (defvar calc-embedded-close-plain) | |
| 59 | (defvar calc-embedded-open-word "^\\|[^-+0-9.eE]" | 59 | (defvar calc-embedded-open-new-formula) |
| 60 | "*A regular expression for the opening delimiter of a formula used by | 60 | (defvar calc-embedded-close-new-formula) |
| 61 | calc-embedded-word.") | 61 | (defvar calc-embedded-open-mode) |
| 62 | 62 | (defvar calc-embedded-close-mode) | |
| 63 | (defvar calc-embedded-close-word "$\\|[^-+0-9.eE]" | ||
| 64 | "*A regular expression for the closing delimiter of a formula used by | ||
| 65 | calc-embedded-word.") | ||
| 66 | |||
| 67 | (defvar calc-embedded-open-plain "%%% " | ||
| 68 | "*A string which is the opening delimiter for a \"plain\" formula. | ||
| 69 | If calc-show-plain mode is enabled, this is inserted at the front of | ||
| 70 | each formula.") | ||
| 71 | |||
| 72 | (defvar calc-embedded-close-plain " %%%\n" | ||
| 73 | "*A string which is the closing delimiter for a \"plain\" formula. | ||
| 74 | See calc-embedded-open-plain.") | ||
| 75 | |||
| 76 | (defvar calc-embedded-open-new-formula "\n\n" | ||
| 77 | "*A string which is inserted at front of formula by calc-embedded-new-formula.") | ||
| 78 | |||
| 79 | (defvar calc-embedded-close-new-formula "\n\n" | ||
| 80 | "*A string which is inserted at end of formula by calc-embedded-new-formula.") | ||
| 81 | |||
| 82 | (defvar calc-embedded-announce-formula "%Embed\n\\(% .*\n\\)*" | ||
| 83 | "*A regular expression which is sure to be followed by a calc-embedded formula." ) | ||
| 84 | |||
| 85 | (defvar calc-embedded-open-mode "% " | ||
| 86 | "*A string which should precede calc-embedded mode annotations. | ||
| 87 | This is not required to be present for user-written mode annotations.") | ||
| 88 | |||
| 89 | (defvar calc-embedded-close-mode "\n" | ||
| 90 | "*A string which should follow calc-embedded mode annotations. | ||
| 91 | This is not required to be present for user-written mode annotations.") | ||
| 92 | |||
| 93 | 63 | ||
| 94 | (defconst calc-embedded-mode-vars '(("precision" . calc-internal-prec) | 64 | (defconst calc-embedded-mode-vars '(("precision" . calc-internal-prec) |
| 95 | ("word-size" . calc-word-size) | 65 | ("word-size" . calc-word-size) |
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el index 662de5db867..6a58a6215fa 100644 --- a/lisp/calc/calc-graph.el +++ b/lisp/calc/calc-graph.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; calc-graph.el --- graph output functions for Calc | 1 | ;;; calc-graph.el --- graph output functions for Calc |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: David Gillespie <daveg@synaptics.com> | 5 | ;; Author: David Gillespie <daveg@synaptics.com> |
| 6 | ;; Maintainer: Jay Belanger <belanger@truman.edu> | 6 | ;; Maintainer: Jay Belanger <belanger@truman.edu> |
| @@ -33,14 +33,10 @@ | |||
| 33 | 33 | ||
| 34 | ;;; Graphics | 34 | ;;; Graphics |
| 35 | 35 | ||
| 36 | (defvar calc-gnuplot-name "gnuplot" | 36 | ;; The following three variables are customizable and defined in calc.el. |
| 37 | "*Name of GNUPLOT program, for calc-graph features.") | 37 | (defvar calc-gnuplot-name) |
| 38 | 38 | (defvar calc-gnuplot-plot-command) | |
| 39 | (defvar calc-gnuplot-plot-command nil | 39 | (defvar calc-gnuplot-print-command) |
| 40 | "*Name of command for displaying GNUPLOT output; %s = file name to print.") | ||
| 41 | |||
| 42 | (defvar calc-gnuplot-print-command "lp %s" | ||
| 43 | "*Name of command for printing GNUPLOT output; %s = file name to print.") | ||
| 44 | 40 | ||
| 45 | (defvar calc-gnuplot-tempfile "calc") | 41 | (defvar calc-gnuplot-tempfile "calc") |
| 46 | 42 | ||
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el index dc7f0b17c1d..46b8cec2ac6 100644 --- a/lisp/calc/calc-help.el +++ b/lisp/calc/calc-help.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; calc-help.el --- help display functions for Calc, | 1 | ;;; calc-help.el --- help display functions for Calc, |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2004 | 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: David Gillespie <daveg@synaptics.com> | 6 | ;; Author: David Gillespie <daveg@synaptics.com> |
| @@ -409,10 +409,10 @@ C-w Describe how there is no warranty for Calc." | |||
| 409 | (defun calc-full-help () | 409 | (defun calc-full-help () |
| 410 | (interactive) | 410 | (interactive) |
| 411 | (with-output-to-temp-buffer "*Help*" | 411 | (with-output-to-temp-buffer "*Help*" |
| 412 | (princ (format "GNU Emacs Calculator version %s of %s.\n" | 412 | (princ (format "GNU Emacs Calculator version %s.\n" |
| 413 | calc-version calc-version-date)) | 413 | calc-version)) |
| 414 | (princ " By Dave Gillespie, daveg@synaptics.com.\n") | 414 | (princ " By Dave Gillespie.\n") |
| 415 | (princ " Copyright (C) 1990, 1993 Free Software Foundation, Inc.\n\n") | 415 | (princ " Copyright (C) 2005 Free Software Foundation, Inc.\n\n") |
| 416 | (princ "Type `h s' for a more detailed summary.\n") | 416 | (princ "Type `h s' for a more detailed summary.\n") |
| 417 | (princ "Or type `h i' to read the full Calc manual on-line.\n\n") | 417 | (princ "Or type `h i' to read the full Calc manual on-line.\n\n") |
| 418 | (princ "Basic keys:\n") | 418 | (princ "Basic keys:\n") |
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el index 2e5737349bc..9510507e276 100644 --- a/lisp/calc/calc-lang.el +++ b/lisp/calc/calc-lang.el | |||
| @@ -388,6 +388,9 @@ | |||
| 388 | ( \\arg . calcFunc-arg ) | 388 | ( \\arg . calcFunc-arg ) |
| 389 | ( \\cos . calcFunc-cos ) | 389 | ( \\cos . calcFunc-cos ) |
| 390 | ( \\cosh . calcFunc-cosh ) | 390 | ( \\cosh . calcFunc-cosh ) |
| 391 | ( \\cot . calcFunc-cot ) | ||
| 392 | ( \\coth . calcFunc-coth ) | ||
| 393 | ( \\csc . calcFunc-csc ) | ||
| 391 | ( \\det . calcFunc-det ) | 394 | ( \\det . calcFunc-det ) |
| 392 | ( \\exp . calcFunc-exp ) | 395 | ( \\exp . calcFunc-exp ) |
| 393 | ( \\gcd . calcFunc-gcd ) | 396 | ( \\gcd . calcFunc-gcd ) |
| @@ -395,10 +398,11 @@ | |||
| 395 | ( \\log . calcFunc-log10 ) | 398 | ( \\log . calcFunc-log10 ) |
| 396 | ( \\max . calcFunc-max ) | 399 | ( \\max . calcFunc-max ) |
| 397 | ( \\min . calcFunc-min ) | 400 | ( \\min . calcFunc-min ) |
| 398 | ( \\tan . calcFunc-tan ) | 401 | ( \\sec . calcFunc-sec ) |
| 399 | ( \\sin . calcFunc-sin ) | 402 | ( \\sin . calcFunc-sin ) |
| 400 | ( \\sinh . calcFunc-sinh ) | 403 | ( \\sinh . calcFunc-sinh ) |
| 401 | ( \\sqrt . calcFunc-sqrt ) | 404 | ( \\sqrt . calcFunc-sqrt ) |
| 405 | ( \\tan . calcFunc-tan ) | ||
| 402 | ( \\tanh . calcFunc-tanh ) | 406 | ( \\tanh . calcFunc-tanh ) |
| 403 | ( \\phi . calcFunc-totient ) | 407 | ( \\phi . calcFunc-totient ) |
| 404 | ( \\mu . calcFunc-moebius ))) | 408 | ( \\mu . calcFunc-moebius ))) |
| @@ -686,6 +690,10 @@ | |||
| 686 | ( Conjugate . calcFunc-conj ) | 690 | ( Conjugate . calcFunc-conj ) |
| 687 | ( Cos . calcFunc-cos ) | 691 | ( Cos . calcFunc-cos ) |
| 688 | ( Cosh . calcFunc-cosh ) | 692 | ( Cosh . calcFunc-cosh ) |
| 693 | ( Cot . calcFunc-cot ) | ||
| 694 | ( Coth . calcFunc-coth ) | ||
| 695 | ( Csc . calcFunc-csc ) | ||
| 696 | ( Csch . calcFunc-csch ) | ||
| 689 | ( D . calcFunc-deriv ) | 697 | ( D . calcFunc-deriv ) |
| 690 | ( Dt . calcFunc-tderiv ) | 698 | ( Dt . calcFunc-tderiv ) |
| 691 | ( Det . calcFunc-det ) | 699 | ( Det . calcFunc-det ) |
| @@ -708,6 +716,8 @@ | |||
| 708 | ( Random . calcFunc-random ) | 716 | ( Random . calcFunc-random ) |
| 709 | ( Round . calcFunc-round ) | 717 | ( Round . calcFunc-round ) |
| 710 | ( Re . calcFunc-re ) | 718 | ( Re . calcFunc-re ) |
| 719 | ( Sec . calcFunc-sec ) | ||
| 720 | ( Sech . calcFunc-sech ) | ||
| 711 | ( Sign . calcFunc-sign ) | 721 | ( Sign . calcFunc-sign ) |
| 712 | ( Sin . calcFunc-sin ) | 722 | ( Sin . calcFunc-sin ) |
| 713 | ( Sinh . calcFunc-sinh ) | 723 | ( Sinh . calcFunc-sinh ) |
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 24336ad9333..ceee013e493 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; calc.el --- the GNU Emacs calculator | 1 | ;;; calc.el --- the GNU Emacs calculator |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: David Gillespie <daveg@synaptics.com> | 6 | ;; Author: David Gillespie <daveg@synaptics.com> |
| 6 | ;; Maintainer: Jay Belanger <belanger@truman.edu> | 7 | ;; Maintainer: Jay Belanger <belanger@truman.edu> |
| @@ -205,9 +206,122 @@ | |||
| 205 | 206 | ||
| 206 | (require 'calc-macs) | 207 | (require 'calc-macs) |
| 207 | 208 | ||
| 209 | (defgroup calc nil | ||
| 210 | "GNU Calc" | ||
| 211 | :prefix "calc-" | ||
| 212 | :tag "Calc") | ||
| 213 | |||
| 208 | ;;;###autoload | 214 | ;;;###autoload |
| 209 | (defvar calc-settings-file (convert-standard-filename "~/.calc.el") | 215 | (defcustom calc-settings-file |
| 210 | "*File in which to record permanent settings.") | 216 | (convert-standard-filename "~/.calc.el") |
| 217 | "*File in which to record permanent settings." | ||
| 218 | :group 'calc | ||
| 219 | :type '(file)) | ||
| 220 | |||
| 221 | (defcustom calc-language-alist | ||
| 222 | '((latex-mode . latex) | ||
| 223 | (tex-mode . tex) | ||
| 224 | (plain-tex-mode . tex) | ||
| 225 | (context-mode . tex) | ||
| 226 | (nroff-mode . eqn) | ||
| 227 | (pascal-mode . pascal) | ||
| 228 | (c-mode . c) | ||
| 229 | (c++-mode . c) | ||
| 230 | (fortran-mode . fortran) | ||
| 231 | (f90-mode . fortran)) | ||
| 232 | "*Alist of major modes with appropriate Calc languages." | ||
| 233 | :group 'calc | ||
| 234 | :type '(alist :key-type (symbol :tag "Major mode") | ||
| 235 | :value-type (symbol :tag "Calc language"))) | ||
| 236 | |||
| 237 | (defcustom calc-embedded-announce-formula | ||
| 238 | "%Embed\n\\(% .*\n\\)*" | ||
| 239 | "*A regular expression which is sure to be followed by a calc-embedded formula." | ||
| 240 | :group 'calc | ||
| 241 | :type '(regexp)) | ||
| 242 | |||
| 243 | (defcustom calc-embedded-open-formula | ||
| 244 | "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n" | ||
| 245 | "*A regular expression for the opening delimiter of a formula used by calc-embedded." | ||
| 246 | :group 'calc | ||
| 247 | :type '(regexp)) | ||
| 248 | |||
| 249 | (defcustom calc-embedded-close-formula | ||
| 250 | "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n" | ||
| 251 | "*A regular expression for the closing delimiter of a formula used by calc-embedded." | ||
| 252 | :group 'calc | ||
| 253 | :type '(regexp)) | ||
| 254 | |||
| 255 | (defcustom calc-embedded-open-word | ||
| 256 | "^\\|[^-+0-9.eE]" | ||
| 257 | "*A regular expression for the opening delimiter of a formula used by calc-embedded-word." | ||
| 258 | :group 'calc | ||
| 259 | :type '(regexp)) | ||
| 260 | |||
| 261 | (defcustom calc-embedded-close-word | ||
| 262 | "$\\|[^-+0-9.eE]" | ||
| 263 | "*A regular expression for the closing delimiter of a formula used by calc-embedded-word." | ||
| 264 | :group 'calc | ||
| 265 | :type '(regexp)) | ||
| 266 | |||
| 267 | (defcustom calc-embedded-open-plain | ||
| 268 | "%%% " | ||
| 269 | "*A string which is the opening delimiter for a \"plain\" formula. | ||
| 270 | If calc-show-plain mode is enabled, this is inserted at the front of | ||
| 271 | each formula." | ||
| 272 | :group 'calc | ||
| 273 | :type '(string)) | ||
| 274 | |||
| 275 | (defcustom calc-embedded-close-plain | ||
| 276 | " %%%\n" | ||
| 277 | "*A string which is the closing delimiter for a \"plain\" formula. | ||
| 278 | See calc-embedded-open-plain." | ||
| 279 | :group 'calc | ||
| 280 | :type '(string)) | ||
| 281 | |||
| 282 | (defcustom calc-embedded-open-new-formula | ||
| 283 | "\n\n" | ||
| 284 | "*A string which is inserted at front of formula by calc-embedded-new-formula." | ||
| 285 | :group 'calc | ||
| 286 | :type '(string)) | ||
| 287 | |||
| 288 | (defcustom calc-embedded-close-new-formula | ||
| 289 | "\n\n" | ||
| 290 | "*A string which is inserted at end of formula by calc-embedded-new-formula." | ||
| 291 | :group 'calc | ||
| 292 | :type '(string)) | ||
| 293 | |||
| 294 | (defcustom calc-embedded-open-mode | ||
| 295 | "% " | ||
| 296 | "*A string which should precede calc-embedded mode annotations. | ||
| 297 | This is not required to be present for user-written mode annotations." | ||
| 298 | :group 'calc | ||
| 299 | :type '(string)) | ||
| 300 | |||
| 301 | (defcustom calc-embedded-close-mode | ||
| 302 | "\n" | ||
| 303 | "*A string which should follow calc-embedded mode annotations. | ||
| 304 | This is not required to be present for user-written mode annotations." | ||
| 305 | :group 'calc | ||
| 306 | :type '(string)) | ||
| 307 | |||
| 308 | (defcustom calc-gnuplot-name | ||
| 309 | "gnuplot" | ||
| 310 | "*Name of GNUPLOT program, for calc-graph features." | ||
| 311 | :group 'calc | ||
| 312 | :type '(string)) | ||
| 313 | |||
| 314 | (defcustom calc-gnuplot-plot-command | ||
| 315 | nil | ||
| 316 | "*Name of command for displaying GNUPLOT output; %s = file name to print." | ||
| 317 | :group 'calc | ||
| 318 | :type '(choice (string) (sexp))) | ||
| 319 | |||
| 320 | (defcustom calc-gnuplot-print-command | ||
| 321 | "lp %s" | ||
| 322 | "*Name of command for printing GNUPLOT output; %s = file name to print." | ||
| 323 | :group 'calc | ||
| 324 | :type '(choice (string) (sexp))) | ||
| 211 | 325 | ||
| 212 | (defvar calc-bug-address "belanger@truman.edu" | 326 | (defvar calc-bug-address "belanger@truman.edu" |
| 213 | "Address of the author of Calc, for use by `report-calc-bug'.") | 327 | "Address of the author of Calc, for use by `report-calc-bug'.") |
| @@ -656,8 +770,7 @@ If nil, selections displayed but ignored.") | |||
| 656 | (put 'math-underflow 'error-conditions '(error math-underflow calc-error)) | 770 | (put 'math-underflow 'error-conditions '(error math-underflow calc-error)) |
| 657 | (put 'math-underflow 'error-message "Floating-point underflow occurred") | 771 | (put 'math-underflow 'error-message "Floating-point underflow occurred") |
| 658 | 772 | ||
| 659 | (defconst calc-version "2.02g") | 773 | (defconst calc-version "2.1") |
| 660 | (defconst calc-version-date "Mon Nov 19 2001") | ||
| 661 | (defvar calc-trail-pointer nil) ; "Current" entry in trail buffer. | 774 | (defvar calc-trail-pointer nil) ; "Current" entry in trail buffer. |
| 662 | (defvar calc-trail-overlay nil) ; Value of overlay-arrow-string. | 775 | (defvar calc-trail-overlay nil) ; Value of overlay-arrow-string. |
| 663 | (defvar calc-undo-list nil) ; List of previous operations for undo. | 776 | (defvar calc-undo-list nil) ; List of previous operations for undo. |
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index e11129414d3..8ace0be910b 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | ;;; appt.el --- appointment notification functions | 1 | ;;; appt.el --- appointment notification functions |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1989, 1990, 1994, 1998, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1989, 1990, 1994, 1998, 2004 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Neil Mager <neilm@juliet.ll.mit.edu> | 5 | ;; Author: Neil Mager <neilm@juliet.ll.mit.edu> |
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk> |
| 7 | ;; Keywords: calendar | 7 | ;; Keywords: calendar |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| @@ -181,7 +181,7 @@ Only relevant if reminders are being displayed in a window." | |||
| 181 | 181 | ||
| 182 | ;;; Internal variables below this point. | 182 | ;;; Internal variables below this point. |
| 183 | 183 | ||
| 184 | (defvar appt-buffer-name " *appt-buf*" | 184 | (defconst appt-buffer-name " *appt-buf*" |
| 185 | "Name of the appointments buffer.") | 185 | "Name of the appointments buffer.") |
| 186 | 186 | ||
| 187 | (defvar appt-time-msg-list nil | 187 | (defvar appt-time-msg-list nil |
| @@ -486,9 +486,8 @@ Usually just deletes the appointment buffer." | |||
| 486 | 486 | ||
| 487 | ;;;###autoload | 487 | ;;;###autoload |
| 488 | (defun appt-add (new-appt-time new-appt-msg) | 488 | (defun appt-add (new-appt-time new-appt-msg) |
| 489 | "Add an appointment for the day at NEW-APPT-TIME and issue message NEW-APPT-MSG. | 489 | "Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG. |
| 490 | The time should be in either 24 hour format or am/pm format." | 490 | The time should be in either 24 hour format or am/pm format." |
| 491 | |||
| 492 | (interactive "sTime (hh:mm[am/pm]): \nsMessage: ") | 491 | (interactive "sTime (hh:mm[am/pm]): \nsMessage: ") |
| 493 | (unless (string-match "[0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?" | 492 | (unless (string-match "[0-9]?[0-9][:.][0-9][0-9]\\(am\\|pm\\)?" |
| 494 | new-appt-time) | 493 | new-appt-time) |
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el index 6e506b93f7d..303193e3d73 100644 --- a/lisp/calendar/cal-china.el +++ b/lisp/calendar/cal-china.el | |||
| @@ -38,8 +38,8 @@ | |||
| 38 | ;; The date of Chinese New Year is correct from 1644-2051. | 38 | ;; The date of Chinese New Year is correct from 1644-2051. |
| 39 | 39 | ||
| 40 | ;; Technical details of all the calendrical calculations can be found in | 40 | ;; Technical details of all the calendrical calculations can be found in |
| 41 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 41 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 42 | ;; Cambridge University Press (1997). | 42 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 43 | 43 | ||
| 44 | ;; Comments, corrections, and improvements should be sent to | 44 | ;; Comments, corrections, and improvements should be sent to |
| 45 | ;; Edward M. Reingold Department of Computer Science | 45 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el index df1201a23c4..2aa111f2109 100644 --- a/lisp/calendar/cal-coptic.el +++ b/lisp/calendar/cal-coptic.el | |||
| @@ -29,8 +29,8 @@ | |||
| 29 | ;; diary.el that deal with the Coptic and Ethiopic calendars. | 29 | ;; diary.el that deal with the Coptic and Ethiopic calendars. |
| 30 | 30 | ||
| 31 | ;; Technical details of all the calendrical calculations can be found in | 31 | ;; Technical details of all the calendrical calculations can be found in |
| 32 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 32 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 33 | ;; Cambridge University Press (1997). | 33 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 34 | 34 | ||
| 35 | ;; Comments, corrections, and improvements should be sent to | 35 | ;; Comments, corrections, and improvements should be sent to |
| 36 | ;; Edward M. Reingold Department of Computer Science | 36 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el index d988b008f53..c42e415eb25 100644 --- a/lisp/calendar/cal-french.el +++ b/lisp/calendar/cal-french.el | |||
| @@ -29,8 +29,8 @@ | |||
| 29 | ;; diary.el that deal with the French Revolutionary calendar. | 29 | ;; diary.el that deal with the French Revolutionary calendar. |
| 30 | 30 | ||
| 31 | ;; Technical details of the French Revolutionary calendar can be found in | 31 | ;; Technical details of the French Revolutionary calendar can be found in |
| 32 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 32 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 33 | ;; Cambridge University Press (1997), and in | 33 | ;; and Nachum Dershowitz, Cambridge University Press (2001), and in |
| 34 | ;; ``Calendrical Calculations, Part II: Three Historical Calendars'' by | 34 | ;; ``Calendrical Calculations, Part II: Three Historical Calendars'' by |
| 35 | ;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and | 35 | ;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and |
| 36 | ;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404. | 36 | ;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404. |
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el index 776868159be..f66b4966e57 100644 --- a/lisp/calendar/cal-hebrew.el +++ b/lisp/calendar/cal-hebrew.el | |||
| @@ -30,8 +30,8 @@ | |||
| 30 | ;; diary.el that deal with the Hebrew calendar. | 30 | ;; diary.el that deal with the Hebrew calendar. |
| 31 | 31 | ||
| 32 | ;; Technical details of all the calendrical calculations can be found in | 32 | ;; Technical details of all the calendrical calculations can be found in |
| 33 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 33 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 34 | ;; Cambridge University Press (1997). | 34 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 35 | 35 | ||
| 36 | ;; Comments, corrections, and improvements should be sent to | 36 | ;; Comments, corrections, and improvements should be sent to |
| 37 | ;; Edward M. Reingold Department of Computer Science | 37 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el index 8dcf5c29b1f..1ac6f0677b1 100644 --- a/lisp/calendar/cal-islam.el +++ b/lisp/calendar/cal-islam.el | |||
| @@ -29,8 +29,8 @@ | |||
| 29 | ;; diary.el that deal with the Islamic calendar. | 29 | ;; diary.el that deal with the Islamic calendar. |
| 30 | 30 | ||
| 31 | ;; Technical details of all the calendrical calculations can be found in | 31 | ;; Technical details of all the calendrical calculations can be found in |
| 32 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 32 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 33 | ;; Cambridge University Press (1997). | 33 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 34 | 34 | ||
| 35 | ;; Comments, corrections, and improvements should be sent to | 35 | ;; Comments, corrections, and improvements should be sent to |
| 36 | ;; Edward M. Reingold Department of Computer Science | 36 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el index 058bdf071d7..8a40442e4fe 100644 --- a/lisp/calendar/cal-iso.el +++ b/lisp/calendar/cal-iso.el | |||
| @@ -30,8 +30,8 @@ | |||
| 30 | ;; diary.el that deal with the ISO calendar. | 30 | ;; diary.el that deal with the ISO calendar. |
| 31 | 31 | ||
| 32 | ;; Technical details of all the calendrical calculations can be found in | 32 | ;; Technical details of all the calendrical calculations can be found in |
| 33 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 33 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 34 | ;; Cambridge University Press (1997). | 34 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 35 | 35 | ||
| 36 | ;; Comments, corrections, and improvements should be sent to | 36 | ;; Comments, corrections, and improvements should be sent to |
| 37 | ;; Edward M. Reingold Department of Computer Science | 37 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el index 67fb8515b24..2b7278f8ea6 100644 --- a/lisp/calendar/cal-julian.el +++ b/lisp/calendar/cal-julian.el | |||
| @@ -29,8 +29,8 @@ | |||
| 29 | ;; diary.el that deal with the Julian calendar. | 29 | ;; diary.el that deal with the Julian calendar. |
| 30 | 30 | ||
| 31 | ;; Technical details of all the calendrical calculations can be found in | 31 | ;; Technical details of all the calendrical calculations can be found in |
| 32 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 32 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 33 | ;; Cambridge University Press (1997). | 33 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 34 | 34 | ||
| 35 | ;; Comments, corrections, and improvements should be sent to | 35 | ;; Comments, corrections, and improvements should be sent to |
| 36 | ;; Edward M. Reingold Department of Computer Science | 36 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el index c2c3e027c4b..92bbb5df23e 100644 --- a/lisp/calendar/cal-mayan.el +++ b/lisp/calendar/cal-mayan.el | |||
| @@ -44,8 +44,8 @@ | |||
| 44 | ;; Comments, improvements, and bug reports should be sent to Reingold. | 44 | ;; Comments, improvements, and bug reports should be sent to Reingold. |
| 45 | 45 | ||
| 46 | ;; Technical details of the Mayan calendrical calculations can be found in | 46 | ;; Technical details of the Mayan calendrical calculations can be found in |
| 47 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 47 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 48 | ;; Cambridge University Press (1997), and in | 48 | ;; and Nachum Dershowitz, Cambridge University Press (2001), and in |
| 49 | ;; ``Calendrical Calculations, Part II: Three Historical Calendars'' | 49 | ;; ``Calendrical Calculations, Part II: Three Historical Calendars'' |
| 50 | ;; by E. M. Reingold, N. Dershowitz, and S. M. Clamen, | 50 | ;; by E. M. Reingold, N. Dershowitz, and S. M. Clamen, |
| 51 | ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993), | 51 | ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993), |
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el index ff09c14b47d..dcbbcbd637e 100644 --- a/lisp/calendar/cal-persia.el +++ b/lisp/calendar/cal-persia.el | |||
| @@ -29,8 +29,8 @@ | |||
| 29 | ;; diary.el that deal with the Persian calendar. | 29 | ;; diary.el that deal with the Persian calendar. |
| 30 | 30 | ||
| 31 | ;; Technical details of all the calendrical calculations can be found in | 31 | ;; Technical details of all the calendrical calculations can be found in |
| 32 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 32 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 33 | ;; Cambridge University Press (1997). | 33 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 34 | 34 | ||
| 35 | ;; Comments, corrections, and improvements should be sent to | 35 | ;; Comments, corrections, and improvements should be sent to |
| 36 | ;; Edward M. Reingold Department of Computer Science | 36 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el index 97fbb72af61..03b485a438a 100644 --- a/lisp/calendar/cal-x.el +++ b/lisp/calendar/cal-x.el | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | ;;; cal-x.el --- calendar windows in dedicated frames in X | 1 | ;;; cal-x.el --- calendar windows in dedicated frames in X |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1994, 1995, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michael Kifer <kifer@cs.sunysb.edu> | 5 | ;; Author: Michael Kifer <kifer@cs.sunysb.edu> |
| 6 | ;; Edward M. Reingold <reingold@cs.uiuc.edu> | 6 | ;; Edward M. Reingold <reingold@cs.uiuc.edu> |
| 7 | ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 7 | ;; Keywords: calendar | 8 | ;; Keywords: calendar |
| 8 | ;; Human-Keywords: calendar, dedicated frames, X Window System | 9 | ;; Human-Keywords: calendar, dedicated frames, X Window System |
| 9 | 10 | ||
| @@ -88,7 +89,7 @@ This function requires a display capable of multiple frames, else | |||
| 88 | (frame-parameters calendar-frame)))) | 89 | (frame-parameters calendar-frame)))) |
| 89 | (iconify-or-deiconify-frame)) | 90 | (iconify-or-deiconify-frame)) |
| 90 | (calendar-basic-setup arg) | 91 | (calendar-basic-setup arg) |
| 91 | (set-window-dedicated-p (selected-window) 'calendar) | 92 | (set-window-dedicated-p (selected-window) t) |
| 92 | (set-window-dedicated-p | 93 | (set-window-dedicated-p |
| 93 | (display-buffer | 94 | (display-buffer |
| 94 | (if (not (memq 'fancy-diary-display diary-display-hook)) | 95 | (if (not (memq 'fancy-diary-display diary-display-hook)) |
| @@ -96,7 +97,7 @@ This function requires a display capable of multiple frames, else | |||
| 96 | (if (not (bufferp (get-buffer fancy-diary-buffer))) | 97 | (if (not (bufferp (get-buffer fancy-diary-buffer))) |
| 97 | (make-fancy-diary-buffer)) | 98 | (make-fancy-diary-buffer)) |
| 98 | fancy-diary-buffer)) | 99 | fancy-diary-buffer)) |
| 99 | 'diary)))))) | 100 | t)))))) |
| 100 | 101 | ||
| 101 | (defun calendar-only-one-frame-setup (&optional arg) | 102 | (defun calendar-only-one-frame-setup (&optional arg) |
| 102 | "Start calendar and display it in a dedicated frame. | 103 | "Start calendar and display it in a dedicated frame. |
| @@ -117,7 +118,7 @@ This function requires a display capable of multiple frames, else | |||
| 117 | (frame-parameters calendar-frame)))) | 118 | (frame-parameters calendar-frame)))) |
| 118 | (iconify-or-deiconify-frame)) | 119 | (iconify-or-deiconify-frame)) |
| 119 | (calendar-basic-setup arg) | 120 | (calendar-basic-setup arg) |
| 120 | (set-window-dedicated-p (selected-window) 'calendar)))))) | 121 | (set-window-dedicated-p (selected-window) t)))))) |
| 121 | 122 | ||
| 122 | (defun calendar-two-frame-setup (&optional arg) | 123 | (defun calendar-two-frame-setup (&optional arg) |
| 123 | "Start calendar and diary in separate, dedicated frames. | 124 | "Start calendar and diary in separate, dedicated frames. |
| @@ -139,7 +140,7 @@ This function requires a display capable of multiple frames, else | |||
| 139 | (frame-parameters calendar-frame)))) | 140 | (frame-parameters calendar-frame)))) |
| 140 | (iconify-or-deiconify-frame)) | 141 | (iconify-or-deiconify-frame)) |
| 141 | (display-buffer calendar-buffer) | 142 | (display-buffer calendar-buffer) |
| 142 | (set-window-dedicated-p (selected-window) 'calendar) | 143 | (set-window-dedicated-p (selected-window) t) |
| 143 | (setq diary-frame (make-frame diary-frame-parameters)) | 144 | (setq diary-frame (make-frame diary-frame-parameters)) |
| 144 | (run-hooks 'calendar-after-frame-setup-hooks) | 145 | (run-hooks 'calendar-after-frame-setup-hooks) |
| 145 | (select-frame diary-frame) | 146 | (select-frame diary-frame) |
| @@ -154,7 +155,7 @@ This function requires a display capable of multiple frames, else | |||
| 154 | (if (not (bufferp (get-buffer fancy-diary-buffer))) | 155 | (if (not (bufferp (get-buffer fancy-diary-buffer))) |
| 155 | (make-fancy-diary-buffer)) | 156 | (make-fancy-diary-buffer)) |
| 156 | fancy-diary-buffer)) | 157 | fancy-diary-buffer)) |
| 157 | 'diary))))) | 158 | t))))) |
| 158 | 159 | ||
| 159 | ;; Formerly (get-file-buffer diary-file) was added to the list here, | 160 | ;; Formerly (get-file-buffer diary-file) was added to the list here, |
| 160 | ;; but that isn't clean, and the value could even be nil. | 161 | ;; but that isn't clean, and the value could even be nil. |
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index 89d32c4952b..5fc23a15cc9 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el | |||
| @@ -75,13 +75,13 @@ | |||
| 75 | ;; solar.el Sunrise/sunset, equinoxes/solstices | 75 | ;; solar.el Sunrise/sunset, equinoxes/solstices |
| 76 | 76 | ||
| 77 | ;; Technical details of all the calendrical calculations can be found in | 77 | ;; Technical details of all the calendrical calculations can be found in |
| 78 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 78 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 79 | ;; Cambridge University Press (1997). | 79 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 80 | 80 | ||
| 81 | ;; An earlier version of the technical details appeared in | 81 | ;; An earlier version of the technical details appeared in |
| 82 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 82 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, |
| 83 | ;; Software--Practice and Experience, Volume 20, Number 9 (September, 1990), | 83 | ;; Software--Practice and Experience, Volume 20, Number 9 (September, 1990), |
| 84 | ;; pages 899-928. ``Calendrical Calculations, Part II: Three Historical | 84 | ;; pages 899-928, and in ``Calendrical Calculations, Part II: Three Historical |
| 85 | ;; Calendars'' by E. M. Reingold, N. Dershowitz, and S. M. Clamen, | 85 | ;; Calendars'' by E. M. Reingold, N. Dershowitz, and S. M. Clamen, |
| 86 | ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993), | 86 | ;; Software--Practice and Experience, Volume 23, Number 4 (April, 1993), |
| 87 | ;; pages 383-404. | 87 | ;; pages 383-404. |
| @@ -2763,7 +2763,7 @@ in `calendar-day-name-array'. These abbreviations may be used | |||
| 2763 | instead of the full names in the diary file. Do not include a | 2763 | instead of the full names in the diary file. Do not include a |
| 2764 | trailing `.' in the strings specified in this variable, though | 2764 | trailing `.' in the strings specified in this variable, though |
| 2765 | you may use such in the diary file. If any element of this array | 2765 | you may use such in the diary file. If any element of this array |
| 2766 | is nil, then the abbreviation will be constructed as the first | 2766 | is nil, then the abbreviation will be constructed as the first |
| 2767 | `calendar-abbrev-length' characters of the corresponding full name.") | 2767 | `calendar-abbrev-length' characters of the corresponding full name.") |
| 2768 | 2768 | ||
| 2769 | (defvar calendar-month-name-array | 2769 | (defvar calendar-month-name-array |
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el index 4493bd02a9c..6596657d454 100644 --- a/lisp/calendar/holidays.el +++ b/lisp/calendar/holidays.el | |||
| @@ -30,8 +30,8 @@ | |||
| 30 | ;; in calendar.el. | 30 | ;; in calendar.el. |
| 31 | 31 | ||
| 32 | ;; Technical details of all the calendrical calculations can be found in | 32 | ;; Technical details of all the calendrical calculations can be found in |
| 33 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 33 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 34 | ;; Cambridge University Press (1997). | 34 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 35 | 35 | ||
| 36 | ;; An earlier version of the technical details appeared in | 36 | ;; An earlier version of the technical details appeared in |
| 37 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 37 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, |
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el index 7efed3ff275..057419969fc 100644 --- a/lisp/calendar/lunar.el +++ b/lisp/calendar/lunar.el | |||
| @@ -38,8 +38,8 @@ | |||
| 38 | ;; person rewrite the code for the lunar calculations in this file! | 38 | ;; person rewrite the code for the lunar calculations in this file! |
| 39 | 39 | ||
| 40 | ;; Technical details of all the calendrical calculations can be found in | 40 | ;; Technical details of all the calendrical calculations can be found in |
| 41 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 41 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 42 | ;; Cambridge University Press (1997). | 42 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 43 | 43 | ||
| 44 | ;; Comments, corrections, and improvements should be sent to | 44 | ;; Comments, corrections, and improvements should be sent to |
| 45 | ;; Edward M. Reingold Department of Computer Science | 45 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index 8a514fa6415..57a6c6a40a8 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el | |||
| @@ -48,8 +48,8 @@ | |||
| 48 | ;; 1951--2050. For other years the times will be within +/- 1 minute. | 48 | ;; 1951--2050. For other years the times will be within +/- 1 minute. |
| 49 | 49 | ||
| 50 | ;; Technical details of all the calendrical calculations can be found in | 50 | ;; Technical details of all the calendrical calculations can be found in |
| 51 | ;; ``Calendrical Calculations'' by Nachum Dershowitz and Edward M. Reingold, | 51 | ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold |
| 52 | ;; Cambridge University Press (1997). | 52 | ;; and Nachum Dershowitz, Cambridge University Press (2001). |
| 53 | 53 | ||
| 54 | ;; Comments, corrections, and improvements should be sent to | 54 | ;; Comments, corrections, and improvements should be sent to |
| 55 | ;; Edward M. Reingold Department of Computer Science | 55 | ;; Edward M. Reingold Department of Computer Science |
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el index a4acb8b9291..7160d26ef42 100644 --- a/lisp/calendar/time-date.el +++ b/lisp/calendar/time-date.el | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; time-date.el --- date and time handling functions | 1 | ;;; time-date.el --- Date and time handling functions |
| 2 | ;; Copyright (C) 1998, 1999, 2000, 2004, 2005 Free Software Foundation, Inc. | 2 | ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> | 4 | ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 5 | ;; Masanobu Umeda <umerin@mse.kyutech.ac.jp> | 5 | ;; Masanobu Umeda <umerin@mse.kyutech.ac.jp> |
diff --git a/lisp/complete.el b/lisp/complete.el index 337af81de71..60bddd01f17 100644 --- a/lisp/complete.el +++ b/lisp/complete.el | |||
| @@ -937,12 +937,11 @@ absolute rather than relative to some directory on the SEARCH-PATH." | |||
| 937 | ((not completion-table) nil) | 937 | ((not completion-table) nil) |
| 938 | ((eq action nil) (try-completion str2 completion-table nil)) | 938 | ((eq action nil) (try-completion str2 completion-table nil)) |
| 939 | ((eq action t) (all-completions str2 completion-table nil)) | 939 | ((eq action t) (all-completions str2 completion-table nil)) |
| 940 | ((eq action 'lambda) | 940 | ((eq action 'lambda) (test-completion str2 completion-table nil)))) |
| 941 | (eq (try-completion str2 completion-table nil) t)))) | ||
| 942 | (funcall PC-old-read-file-name-internal string dir action))) | 941 | (funcall PC-old-read-file-name-internal string dir action))) |
| 943 | 942 | ||
| 944 | 943 | ||
| 945 | (provide 'complete) | 944 | (provide 'complete) |
| 946 | 945 | ||
| 947 | ;;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458 | 946 | ;; arch-tag: fc7e2768-ff44-4e22-b579-4d825b968458 |
| 948 | ;;; complete.el ends here | 947 | ;;; complete.el ends here |
diff --git a/lisp/desktop.el b/lisp/desktop.el index 6ec81fcac70..ed663d375d5 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; desktop.el --- save partial status of Emacs when killed | 1 | ;;; desktop.el --- save partial status of Emacs when killed |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001 | 3 | ;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2005 |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Morten Welinder <terra@diku.dk> | 6 | ;; Author: Morten Welinder <terra@diku.dk> |
| @@ -158,14 +158,14 @@ If nil, just print error messages in the message buffer." | |||
| 158 | 158 | ||
| 159 | (defcustom desktop-no-desktop-file-hook nil | 159 | (defcustom desktop-no-desktop-file-hook nil |
| 160 | "Normal hook run when `desktop-read' can't find a desktop file. | 160 | "Normal hook run when `desktop-read' can't find a desktop file. |
| 161 | May e.g. be used to show a dired buffer." | 161 | May be used to show a dired buffer." |
| 162 | :type 'hook | 162 | :type 'hook |
| 163 | :group 'desktop | 163 | :group 'desktop |
| 164 | :version "22.1") | 164 | :version "22.1") |
| 165 | 165 | ||
| 166 | (defcustom desktop-after-read-hook nil | 166 | (defcustom desktop-after-read-hook nil |
| 167 | "Normal hook run after a successful `desktop-read'. | 167 | "Normal hook run after a successful `desktop-read'. |
| 168 | May e.g. be used to show a buffer list." | 168 | May be used to show a buffer list." |
| 169 | :type 'hook | 169 | :type 'hook |
| 170 | :group 'desktop | 170 | :group 'desktop |
| 171 | :version "22.1") | 171 | :version "22.1") |
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el index c945a6a7221..d69685ac86f 100644 --- a/lisp/diff-mode.el +++ b/lisp/diff-mode.el | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; diff-mode.el --- a mode for viewing/editing context diffs | 1 | ;;; diff-mode.el --- a mode for viewing/editing context diffs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 | 3 | ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> | 6 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> |
| 7 | ;; Keywords: convenience patch diff | 7 | ;; Keywords: convenience patch diff |
| @@ -263,7 +263,7 @@ when editing big diffs)." | |||
| 263 | (save-excursion | 263 | (save-excursion |
| 264 | (while (re-search-backward re start t) | 264 | (while (re-search-backward re start t) |
| 265 | (replace-match "" t t))))))) | 265 | (replace-match "" t t))))))) |
| 266 | 266 | ||
| 267 | 267 | ||
| 268 | (defvar diff-font-lock-keywords | 268 | (defvar diff-font-lock-keywords |
| 269 | `(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified | 269 | `(("^\\(@@ -[0-9,]+ \\+[0-9,]+ @@\\)\\(.*\\)$" ;unified |
| @@ -484,7 +484,7 @@ If the OLD prefix arg is passed, tell the file NAME of the old file." | |||
| 484 | (let ((fs (diff-hunk-file-names old))) | 484 | (let ((fs (diff-hunk-file-names old))) |
| 485 | (unless fs (error "No file name to look for")) | 485 | (unless fs (error "No file name to look for")) |
| 486 | (push (cons fs name) diff-remembered-files-alist))) | 486 | (push (cons fs name) diff-remembered-files-alist))) |
| 487 | 487 | ||
| 488 | (defun diff-hunk-file-names (&optional old) | 488 | (defun diff-hunk-file-names (&optional old) |
| 489 | "Give the list of file names textually mentioned for the current hunk." | 489 | "Give the list of file names textually mentioned for the current hunk." |
| 490 | (save-excursion | 490 | (save-excursion |
| @@ -952,7 +952,7 @@ a diff with \\[diff-reverse-direction]." | |||
| 952 | (define-minor-mode diff-minor-mode | 952 | (define-minor-mode diff-minor-mode |
| 953 | "Minor mode for viewing/editing context diffs. | 953 | "Minor mode for viewing/editing context diffs. |
| 954 | \\{diff-minor-mode-map}" | 954 | \\{diff-minor-mode-map}" |
| 955 | nil " Diff" nil | 955 | :group 'diff-mode :lighter " Diff" |
| 956 | ;; FIXME: setup font-lock | 956 | ;; FIXME: setup font-lock |
| 957 | ;; setup change hooks | 957 | ;; setup change hooks |
| 958 | (if (not diff-update-on-the-fly) | 958 | (if (not diff-update-on-the-fly) |
diff --git a/lisp/dired.el b/lisp/dired.el index b42d4f8cece..8ee19486a7e 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -1252,7 +1252,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." | |||
| 1252 | '("--")) | 1252 | '("--")) |
| 1253 | 1253 | ||
| 1254 | (define-key map [menu-bar immediate compare-directories] | 1254 | (define-key map [menu-bar immediate compare-directories] |
| 1255 | '(menu-item "Compare directories" dired-compare-directories | 1255 | '(menu-item "Compare directories..." dired-compare-directories |
| 1256 | :help "Mark files with different attributes in two dired buffers")) | 1256 | :help "Mark files with different attributes in two dired buffers")) |
| 1257 | (define-key map [menu-bar immediate backup-diff] | 1257 | (define-key map [menu-bar immediate backup-diff] |
| 1258 | '(menu-item "Compare with Backup" dired-backup-diff | 1258 | '(menu-item "Compare with Backup" dired-backup-diff |
diff --git a/lisp/ediff-hook.el b/lisp/ediff-hook.el index 7ea6f24d7bb..5394923aa36 100644 --- a/lisp/ediff-hook.el +++ b/lisp/ediff-hook.el | |||
| @@ -131,10 +131,10 @@ | |||
| 131 | )) | 131 | )) |
| 132 | (defvar ediff-misc-menu | 132 | (defvar ediff-misc-menu |
| 133 | '("Ediff Miscellanea" | 133 | '("Ediff Miscellanea" |
| 134 | ["Ediff Manual..." ediff-documentation t] | 134 | ["Ediff Manual" ediff-documentation t] |
| 135 | ["Customize Ediff..." ediff-customize t] | 135 | ["Customize Ediff" ediff-customize t] |
| 136 | ["List Ediff Sessions..." ediff-show-registry t] | 136 | ["List Ediff Sessions" ediff-show-registry t] |
| 137 | ["Use separate frame for Ediff control buffer..." | 137 | ["Use separate frame for Ediff control buffer" |
| 138 | ediff-toggle-multiframe | 138 | ediff-toggle-multiframe |
| 139 | :style toggle | 139 | :style toggle |
| 140 | :selected (if (and (featurep 'ediff-util) | 140 | :selected (if (and (featurep 'ediff-util) |
| @@ -242,14 +242,14 @@ | |||
| 242 | 242 | ||
| 243 | ;; define ediff miscellanea | 243 | ;; define ediff miscellanea |
| 244 | (define-key menu-bar-ediff-misc-menu [emultiframe] | 244 | (define-key menu-bar-ediff-misc-menu [emultiframe] |
| 245 | '("Toggle use of separate control buffer frame..." | 245 | '("Toggle use of separate control buffer frame" |
| 246 | . ediff-toggle-multiframe)) | 246 | . ediff-toggle-multiframe)) |
| 247 | (define-key menu-bar-ediff-misc-menu [eregistry] | 247 | (define-key menu-bar-ediff-misc-menu [eregistry] |
| 248 | '("List Ediff Sessions..." . ediff-show-registry)) | 248 | '("List Ediff Sessions" . ediff-show-registry)) |
| 249 | (define-key menu-bar-ediff-misc-menu [ediff-cust] | 249 | (define-key menu-bar-ediff-misc-menu [ediff-cust] |
| 250 | '("Customize Ediff..." . ediff-customize)) | 250 | '("Customize Ediff" . ediff-customize)) |
| 251 | (define-key menu-bar-ediff-misc-menu [ediff-doc] | 251 | (define-key menu-bar-ediff-misc-menu [ediff-doc] |
| 252 | '("Ediff Manual..." . ediff-documentation)) | 252 | '("Ediff Manual" . ediff-documentation)) |
| 253 | ) | 253 | ) |
| 254 | 254 | ||
| 255 | ) ; emacs case | 255 | ) ; emacs case |
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 0a75a43827e..68d1287d98c 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el | |||
| @@ -72,7 +72,7 @@ or macro definition or a defcustom)." | |||
| 72 | (let ((car (car-safe form)) expand) | 72 | (let ((car (car-safe form)) expand) |
| 73 | (cond | 73 | (cond |
| 74 | ;; For complex cases, try again on the macro-expansion. | 74 | ;; For complex cases, try again on the macro-expansion. |
| 75 | ((and (memq car '(easy-mmode-define-global-mode | 75 | ((and (memq car '(easy-mmode-define-global-mode define-global-minor-mode |
| 76 | easy-mmode-define-minor-mode define-minor-mode)) | 76 | easy-mmode-define-minor-mode define-minor-mode)) |
| 77 | (setq expand (let ((load-file-name file)) (macroexpand form))) | 77 | (setq expand (let ((load-file-name file)) (macroexpand form))) |
| 78 | (eq (car expand) 'progn) | 78 | (eq (car expand) 'progn) |
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 1e45439658c..2149cba8720 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el | |||
| @@ -632,24 +632,31 @@ which must be written in Lisp, not predefined. | |||
| 632 | Use \\[cancel-debug-on-entry] to cancel the effect of this command. | 632 | Use \\[cancel-debug-on-entry] to cancel the effect of this command. |
| 633 | Redefining FUNCTION also cancels it." | 633 | Redefining FUNCTION also cancels it." |
| 634 | (interactive "aDebug on entry (to function): ") | 634 | (interactive "aDebug on entry (to function): ") |
| 635 | ;; Handle a function that has been aliased to some other function. | 635 | (when (and (subrp (symbol-function function)) |
| 636 | (if (and (subrp (symbol-function function)) | 636 | (eq (cdr (subr-arity (symbol-function function))) 'unevalled)) |
| 637 | (eq (cdr (subr-arity (symbol-function function))) 'unevalled)) | 637 | (error "Function %s is a special form" function)) |
| 638 | (error "Function %s is a special form" function)) | 638 | (if (or (symbolp (symbol-function function)) |
| 639 | (if (or (symbolp (symbol-function function)) | ||
| 640 | (subrp (symbol-function function))) | 639 | (subrp (symbol-function function))) |
| 641 | ;; Create a wrapper in which we can then add the necessary debug call. | 640 | ;; The function is built-in or aliased to another function. |
| 641 | ;; Create a wrapper in which we can add the debug call. | ||
| 642 | (fset function `(lambda (&rest debug-on-entry-args) | 642 | (fset function `(lambda (&rest debug-on-entry-args) |
| 643 | ,(interactive-form (symbol-function function)) | 643 | ,(interactive-form (symbol-function function)) |
| 644 | (apply ',(symbol-function function) | 644 | (apply ',(symbol-function function) |
| 645 | debug-on-entry-args)))) | 645 | debug-on-entry-args))) |
| 646 | (or (consp (symbol-function function)) | 646 | (when (eq (car-safe (symbol-function function)) 'autoload) |
| 647 | (debug-convert-byte-code function)) | 647 | ;; The function is autoloaded. Load its real definition. |
| 648 | (or (consp (symbol-function function)) | 648 | (load (cadr (symbol-function function)) nil noninteractive nil t)) |
| 649 | (error "Definition of %s is not a list" function)) | 649 | (when (or (not (consp (symbol-function function))) |
| 650 | (and (eq (car (symbol-function function)) 'macro) | ||
| 651 | (not (consp (cdr (symbol-function function)))))) | ||
| 652 | ;; The function is byte-compiled. Create a wrapper in which | ||
| 653 | ;; we can add the debug call. | ||
| 654 | (debug-convert-byte-code function))) | ||
| 655 | (unless (consp (symbol-function function)) | ||
| 656 | (error "Definition of %s is not a list" function)) | ||
| 650 | (fset function (debug-on-entry-1 function t)) | 657 | (fset function (debug-on-entry-1 function t)) |
| 651 | (or (memq function debug-function-list) | 658 | (unless (memq function debug-function-list) |
| 652 | (push function debug-function-list)) | 659 | (push function debug-function-list)) |
| 653 | function) | 660 | function) |
| 654 | 661 | ||
| 655 | ;;;###autoload | 662 | ;;;###autoload |
| @@ -664,45 +671,52 @@ If argument is nil or an empty string, cancel for all functions." | |||
| 664 | (if name (intern name))))) | 671 | (if name (intern name))))) |
| 665 | (if (and function (not (string= function ""))) | 672 | (if (and function (not (string= function ""))) |
| 666 | (progn | 673 | (progn |
| 667 | (let ((f (debug-on-entry-1 function nil))) | 674 | (let ((defn (debug-on-entry-1 function nil))) |
| 668 | (condition-case nil | 675 | (condition-case nil |
| 669 | (if (and (equal (nth 1 f) '(&rest debug-on-entry-args)) | 676 | (when (and (equal (nth 1 defn) '(&rest debug-on-entry-args)) |
| 670 | (eq (car (nth 3 f)) 'apply)) | 677 | (eq (car (nth 3 defn)) 'apply)) |
| 671 | ;; `f' is a wrapper introduced in debug-on-entry. | 678 | ;; `defn' is a wrapper introduced in debug-on-entry. |
| 672 | ;; Get rid of it since we don't need it any more. | 679 | ;; Get rid of it since we don't need it any more. |
| 673 | (setq f (nth 1 (nth 1 (nth 3 f))))) | 680 | (setq defn (nth 1 (nth 1 (nth 3 defn))))) |
| 674 | (error nil)) | 681 | (error nil)) |
| 675 | (fset function f)) | 682 | (fset function defn)) |
| 676 | (setq debug-function-list (delq function debug-function-list)) | 683 | (setq debug-function-list (delq function debug-function-list)) |
| 677 | function) | 684 | function) |
| 678 | (message "Cancelling debug-on-entry for all functions") | 685 | (message "Cancelling debug-on-entry for all functions") |
| 679 | (mapcar 'cancel-debug-on-entry debug-function-list))) | 686 | (mapcar 'cancel-debug-on-entry debug-function-list))) |
| 680 | 687 | ||
| 681 | (defun debug-convert-byte-code (function) | 688 | (defun debug-convert-byte-code (function) |
| 682 | (let ((defn (symbol-function function))) | 689 | (let* ((defn (symbol-function function)) |
| 683 | (if (not (consp defn)) | 690 | (macro (eq (car-safe defn) 'macro))) |
| 684 | ;; Assume a compiled code object. | 691 | (when macro (setq defn (cdr defn))) |
| 685 | (let* ((contents (append defn nil)) | 692 | (unless (consp defn) |
| 686 | (body | 693 | ;; Assume a compiled code object. |
| 687 | (list (list 'byte-code (nth 1 contents) | 694 | (let* ((contents (append defn nil)) |
| 688 | (nth 2 contents) (nth 3 contents))))) | 695 | (body |
| 689 | (if (nthcdr 5 contents) | 696 | (list (list 'byte-code (nth 1 contents) |
| 690 | (setq body (cons (list 'interactive (nth 5 contents)) body))) | 697 | (nth 2 contents) (nth 3 contents))))) |
| 691 | (if (nth 4 contents) | 698 | (if (nthcdr 5 contents) |
| 692 | ;; Use `documentation' here, to get the actual string, | 699 | (setq body (cons (list 'interactive (nth 5 contents)) body))) |
| 693 | ;; in case the compiled function has a reference | 700 | (if (nth 4 contents) |
| 694 | ;; to the .elc file. | 701 | ;; Use `documentation' here, to get the actual string, |
| 695 | (setq body (cons (documentation function) body))) | 702 | ;; in case the compiled function has a reference |
| 696 | (fset function (cons 'lambda (cons (car contents) body))))))) | 703 | ;; to the .elc file. |
| 704 | (setq body (cons (documentation function) body))) | ||
| 705 | (setq defn (cons 'lambda (cons (car contents) body)))) | ||
| 706 | (when macro (setq defn (cons 'macro defn))) | ||
| 707 | (fset function defn)))) | ||
| 697 | 708 | ||
| 698 | (defun debug-on-entry-1 (function flag) | 709 | (defun debug-on-entry-1 (function flag) |
| 699 | (let* ((defn (symbol-function function)) | 710 | (let* ((defn (symbol-function function)) |
| 700 | (tail defn)) | 711 | (tail defn)) |
| 701 | (if (subrp tail) | 712 | (when (eq (car-safe tail) 'macro) |
| 702 | (error "%s is a built-in function" function) | 713 | (setq tail (cdr tail))) |
| 703 | (if (eq (car tail) 'macro) (setq tail (cdr tail))) | 714 | (if (not (eq (car-safe tail) 'lambda)) |
| 704 | (if (eq (car tail) 'lambda) (setq tail (cdr tail)) | 715 | ;; Only signal an error when we try to set debug-on-entry. |
| 705 | (error "%s not user-defined Lisp function" function)) | 716 | ;; When we try to clear debug-on-entry, we are now done. |
| 717 | (when flag | ||
| 718 | (error "%s is not a user-defined Lisp function" function)) | ||
| 719 | (setq tail (cdr tail)) | ||
| 706 | ;; Skip the docstring. | 720 | ;; Skip the docstring. |
| 707 | (when (and (stringp (cadr tail)) (cddr tail)) | 721 | (when (and (stringp (cadr tail)) (cddr tail)) |
| 708 | (setq tail (cdr tail))) | 722 | (setq tail (cdr tail))) |
| @@ -713,8 +727,8 @@ If argument is nil or an empty string, cancel for all functions." | |||
| 713 | ;; Add/remove debug statement as needed. | 727 | ;; Add/remove debug statement as needed. |
| 714 | (if flag | 728 | (if flag |
| 715 | (setcdr tail (cons '(implement-debug-on-entry) (cdr tail))) | 729 | (setcdr tail (cons '(implement-debug-on-entry) (cdr tail))) |
| 716 | (setcdr tail (cddr tail)))) | 730 | (setcdr tail (cddr tail))))) |
| 717 | defn))) | 731 | defn)) |
| 718 | 732 | ||
| 719 | (defun debugger-list-functions () | 733 | (defun debugger-list-functions () |
| 720 | "Display a list of all the functions now set to debug on entry." | 734 | "Display a list of all the functions now set to debug on entry." |
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index b6b91710ed4..a96b1741139 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; easy-mmode.el --- easy definition for major and minor modes | 1 | ;;; easy-mmode.el --- easy definition for major and minor modes |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997,2000,01,02,03,2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: Georges Brun-Cottan <Georges.Brun-Cottan@inria.fr> | 6 | ;; Author: Georges Brun-Cottan <Georges.Brun-Cottan@inria.fr> |
| 6 | ;; Maintainer: Stefan Monnier <monnier@gnu.org> | 7 | ;; Maintainer: Stefan Monnier <monnier@gnu.org> |
| @@ -152,8 +153,8 @@ For example, you could write | |||
| 152 | (unless group | 153 | (unless group |
| 153 | ;; We might as well provide a best-guess default group. | 154 | ;; We might as well provide a best-guess default group. |
| 154 | (setq group | 155 | (setq group |
| 155 | `(:group ',(or (custom-current-group) | 156 | `(:group (or (custom-current-group) |
| 156 | (intern (replace-regexp-in-string | 157 | ',(intern (replace-regexp-in-string |
| 157 | "-mode\\'" "" mode-name)))))) | 158 | "-mode\\'" "" mode-name)))))) |
| 158 | 159 | ||
| 159 | `(progn | 160 | `(progn |
| @@ -253,8 +254,9 @@ With zero or negative ARG turn mode off. | |||
| 253 | ;;; | 254 | ;;; |
| 254 | 255 | ||
| 255 | ;;;###autoload | 256 | ;;;###autoload |
| 256 | (defmacro easy-mmode-define-global-mode (global-mode mode turn-on | 257 | (defalias 'easy-mmode-define-global-mode 'define-global-minor-mode) |
| 257 | &rest keys) | 258 | ;;;###autoload |
| 259 | (defmacro define-global-minor-mode (global-mode mode turn-on &rest keys) | ||
| 258 | "Make GLOBAL-MODE out of the buffer-local minor MODE. | 260 | "Make GLOBAL-MODE out of the buffer-local minor MODE. |
| 259 | TURN-ON is a function that will be called with no args in every buffer | 261 | TURN-ON is a function that will be called with no args in every buffer |
| 260 | and that should try to turn MODE on if applicable for that buffer. | 262 | and that should try to turn MODE on if applicable for that buffer. |
| @@ -278,8 +280,8 @@ KEYS is a list of CL-style keyword arguments: | |||
| 278 | (unless group | 280 | (unless group |
| 279 | ;; We might as well provide a best-guess default group. | 281 | ;; We might as well provide a best-guess default group. |
| 280 | (setq group | 282 | (setq group |
| 281 | `(:group ',(or (custom-current-group) | 283 | `(:group (or (custom-current-group) |
| 282 | (intern (replace-regexp-in-string | 284 | ',(intern (replace-regexp-in-string |
| 283 | "-mode\\'" "" (symbol-name mode))))))) | 285 | "-mode\\'" "" (symbol-name mode))))))) |
| 284 | 286 | ||
| 285 | `(progn | 287 | `(progn |
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index bc868759d92..f31dafb7b11 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; eldoc.el --- show function arglist or variable docstring in echo area | 1 | ;;; eldoc.el --- show function arglist or variable docstring in echo area |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1996, 97, 98, 99, 2000, 2003 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: Noah Friedman <friedman@splode.com> | 6 | ;; Author: Noah Friedman <friedman@splode.com> |
| 6 | ;; Maintainer: friedman@splode.com | 7 | ;; Maintainer: friedman@splode.com |
| @@ -150,7 +151,7 @@ If point is over a documented variable, print that variable's docstring | |||
| 150 | instead. | 151 | instead. |
| 151 | 152 | ||
| 152 | With prefix ARG, turn ElDoc mode on if and only if ARG is positive." | 153 | With prefix ARG, turn ElDoc mode on if and only if ARG is positive." |
| 153 | nil eldoc-minor-mode-string nil | 154 | :group 'eldoc :lighter eldoc-minor-mode-string |
| 154 | (setq eldoc-last-message nil) | 155 | (setq eldoc-last-message nil) |
| 155 | (if eldoc-mode | 156 | (if eldoc-mode |
| 156 | (progn | 157 | (progn |
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index d72dc91ad2b..8852999db2d 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el | |||
| @@ -1016,7 +1016,7 @@ If ARG is the atom `-', scroll upward by nearly full screen." | |||
| 1016 | (scroll-down arg) | 1016 | (scroll-down arg) |
| 1017 | (beginning-of-buffer (goto-char (point-min))))))) | 1017 | (beginning-of-buffer (goto-char (point-min))))))) |
| 1018 | 1018 | ||
| 1019 | (put 'cua-scroll-up 'CUA 'move) | 1019 | (put 'cua-scroll-down 'CUA 'move) |
| 1020 | 1020 | ||
| 1021 | ;;; Cursor indications | 1021 | ;;; Cursor indications |
| 1022 | 1022 | ||
| @@ -1307,6 +1307,7 @@ highlight the region using `transient-mark-mode'), and typed text replaces | |||
| 1307 | the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and | 1307 | the active selection. C-z, C-x, C-c, and C-v will undo, cut, copy, and |
| 1308 | paste (in addition to the normal emacs bindings)." | 1308 | paste (in addition to the normal emacs bindings)." |
| 1309 | :global t | 1309 | :global t |
| 1310 | :group 'cua | ||
| 1310 | :set-after '(cua-enable-modeline-indications cua-use-hyper-key) | 1311 | :set-after '(cua-enable-modeline-indications cua-use-hyper-key) |
| 1311 | :require 'cua-base | 1312 | :require 'cua-base |
| 1312 | :link '(emacs-commentary-link "cua-base.el") | 1313 | :link '(emacs-commentary-link "cua-base.el") |
diff --git a/lisp/files.el b/lisp/files.el index dbc43e4a5a9..4551e6ddb66 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -291,7 +291,7 @@ from `mode-require-final-newline'." | |||
| 291 | :group 'editing-basics) | 291 | :group 'editing-basics) |
| 292 | 292 | ||
| 293 | (defcustom mode-require-final-newline t | 293 | (defcustom mode-require-final-newline t |
| 294 | "*Whether to add a newline at the end of the file, in certain major modes. | 294 | "*Whether to add a newline at end of file, in certain major modes. |
| 295 | Those modes set `require-final-newline' to this value when you enable them. | 295 | Those modes set `require-final-newline' to this value when you enable them. |
| 296 | They do so because they are used for files that are supposed | 296 | They do so because they are used for files that are supposed |
| 297 | to end in newlines, and the question is how to arrange that. | 297 | to end in newlines, and the question is how to arrange that. |
| @@ -299,10 +299,16 @@ to end in newlines, and the question is how to arrange that. | |||
| 299 | A value of t means do this only when the file is about to be saved. | 299 | A value of t means do this only when the file is about to be saved. |
| 300 | A value of `visit' means do this right after the file is visited. | 300 | A value of `visit' means do this right after the file is visited. |
| 301 | A value of `visit-save' means do it at both of those times. | 301 | A value of `visit-save' means do it at both of those times. |
| 302 | Any other non-nil value means ask user whether to add a newline, when saving." | 302 | Any other non-nil value means ask user whether to add a newline, when saving. |
| 303 | nil means don't add newlines. | ||
| 304 | |||
| 305 | You will have to be careful if you set this to nil: you will have | ||
| 306 | to remember to manually add a final newline whenever you finish a | ||
| 307 | file that really needs one." | ||
| 303 | :type '(choice (const :tag "When visiting" visit) | 308 | :type '(choice (const :tag "When visiting" visit) |
| 304 | (const :tag "When saving" t) | 309 | (const :tag "When saving" t) |
| 305 | (const :tag "When visiting or saving" visit-save) | 310 | (const :tag "When visiting or saving" visit-save) |
| 311 | (const :tag "Never" nil) | ||
| 306 | (other :tag "Ask" ask)) | 312 | (other :tag "Ask" ask)) |
| 307 | :group 'editing-basics | 313 | :group 'editing-basics |
| 308 | :version "22.1") | 314 | :version "22.1") |
| @@ -928,20 +934,31 @@ documentation for additional customization information." | |||
| 928 | (defvar find-file-default nil | 934 | (defvar find-file-default nil |
| 929 | "Used within `find-file-read-args'.") | 935 | "Used within `find-file-read-args'.") |
| 930 | 936 | ||
| 937 | (defmacro minibuffer-with-setup-hook (fun &rest body) | ||
| 938 | "Add FUN to `minibuffer-setup-hook' while executing BODY. | ||
| 939 | BODY should use the minibuffer at most once. | ||
| 940 | Recursive uses of the minibuffer will not be affected." | ||
| 941 | (declare (indent 1) (debug t)) | ||
| 942 | (let ((hook (make-symbol "setup-hook"))) | ||
| 943 | `(let ((,hook | ||
| 944 | (lambda () | ||
| 945 | ;; Clear out this hook so it does not interfere | ||
| 946 | ;; with any recursive minibuffer usage. | ||
| 947 | (remove-hook 'minibuffer-setup-hook ,hook) | ||
| 948 | (,fun)))) | ||
| 949 | (unwind-protect | ||
| 950 | (progn | ||
| 951 | (add-hook 'minibuffer-setup-hook ,hook) | ||
| 952 | ,@body) | ||
| 953 | (remove-hook 'minibuffer-setup-hook ,hook))))) | ||
| 954 | |||
| 931 | (defun find-file-read-args (prompt mustmatch) | 955 | (defun find-file-read-args (prompt mustmatch) |
| 932 | (list (let ((find-file-default | 956 | (list (let ((find-file-default |
| 933 | (and buffer-file-name | 957 | (and buffer-file-name |
| 934 | (abbreviate-file-name buffer-file-name))) | 958 | (abbreviate-file-name buffer-file-name)))) |
| 935 | (munge-default-fun | 959 | (minibuffer-with-setup-hook |
| 936 | (lambda () | 960 | (lambda () (setq minibuffer-default find-file-default)) |
| 937 | (setq minibuffer-default find-file-default) | 961 | (read-file-name prompt nil default-directory mustmatch))) |
| 938 | ;; Clear out this hook so it does not interfere | ||
| 939 | ;; with any recursive minibuffer usage. | ||
| 940 | (pop minibuffer-setup-hook))) | ||
| 941 | (minibuffer-setup-hook | ||
| 942 | minibuffer-setup-hook)) | ||
| 943 | (add-hook 'minibuffer-setup-hook munge-default-fun) | ||
| 944 | (read-file-name prompt nil default-directory mustmatch)) | ||
| 945 | t)) | 962 | t)) |
| 946 | 963 | ||
| 947 | (defun find-file (filename &optional wildcards) | 964 | (defun find-file (filename &optional wildcards) |
diff --git a/lisp/filesets.el b/lisp/filesets.el index faba379db03..5a4dd7bda9a 100644 --- a/lisp/filesets.el +++ b/lisp/filesets.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; filesets.el --- handle group of files | 1 | ;;; filesets.el --- handle group of files |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2002 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2002, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Thomas Link <t.link@gmx.at> | 5 | ;; Author: Thomas Link <t.link@gmx.at> |
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| @@ -250,8 +250,15 @@ key is supported." | |||
| 250 | ; (customize-set-variable var val)) | 250 | ; (customize-set-variable var val)) |
| 251 | ; (filesets-build-menu)) | 251 | ; (filesets-build-menu)) |
| 252 | 252 | ||
| 253 | ;; It seems this is a workaround for the XEmacs issue described in the | ||
| 254 | ;; doc-string of filesets-menu-ensure-use-cached. Under Emacs this is | ||
| 255 | ;; essentially just `set-default'. | ||
| 253 | (defun filesets-set-default (sym val &optional init-flag) | 256 | (defun filesets-set-default (sym val &optional init-flag) |
| 254 | "Set-default wrapper function used in conjunction with `defcustom'." | 257 | "Set-default wrapper function used in conjunction with `defcustom'. |
| 258 | If SYM is in the list `filesets-ignore-next-set-default', delete | ||
| 259 | it from that list, and return nil. Otherwise, set the value of | ||
| 260 | SYM to VAL and return t. If INIT-FLAG is non-nil, set with | ||
| 261 | `custom-initialize-set', otherwise with `set-default'." | ||
| 255 | (let ((ignore-flag (member sym filesets-ignore-next-set-default))) | 262 | (let ((ignore-flag (member sym filesets-ignore-next-set-default))) |
| 256 | (if ignore-flag | 263 | (if ignore-flag |
| 257 | (setq filesets-ignore-next-set-default | 264 | (setq filesets-ignore-next-set-default |
| @@ -304,31 +311,26 @@ key is supported." | |||
| 304 | :type 'sexp | 311 | :type 'sexp |
| 305 | :group 'filesets) | 312 | :group 'filesets) |
| 306 | 313 | ||
| 307 | (if filesets-running-xemacs | 314 | (defcustom filesets-menu-path nil |
| 308 | (progn | 315 | "*The menu under which the filesets menu should be inserted. |
| 309 | (defcustom filesets-menu-path nil | 316 | See `add-submenu' for documentation." |
| 310 | "*The menu under which the filesets menu should be inserted. | 317 | :set (function filesets-set-default) |
| 311 | XEmacs specific; see `add-submenu' for documentation." | 318 | :type 'sexp |
| 312 | :set (function filesets-set-default) | 319 | :group 'filesets) |
| 313 | :type 'sexp | 320 | |
| 314 | :group 'filesets) | 321 | (defcustom filesets-menu-before "File" |
| 315 | 322 | "*The name of a menu before which this menu should be added. | |
| 316 | (defcustom filesets-menu-before "File" | 323 | See `add-submenu' for documentation." |
| 317 | "*The name of a menu before which this menu should be added. | 324 | :set (function filesets-set-default) |
| 318 | XEmacs specific; see `add-submenu' for documentation." | 325 | :type 'sexp |
| 319 | :set (function filesets-set-default) | 326 | :group 'filesets) |
| 320 | :type 'sexp | 327 | |
| 321 | :group 'filesets) | 328 | (defcustom filesets-menu-in-menu nil |
| 322 | 329 | "*Use that instead of `current-menubar' as the menu to change. | |
| 323 | (defcustom filesets-menu-in-menu nil | 330 | See `add-submenu' for documentation." |
| 324 | "*Use that instead of `current-menubar' as the menu to change. | 331 | :set (function filesets-set-default) |
| 325 | XEmacs specific; see `add-submenu' for documentation." | 332 | :type 'sexp |
| 326 | :set (function filesets-set-default) | 333 | :group 'filesets) |
| 327 | :type 'sexp | ||
| 328 | :group 'filesets)) | ||
| 329 | (defvar filesets-menu-path nil) | ||
| 330 | (defvar filesets-menu-before nil) | ||
| 331 | (defvar filesets-menu-in-menu nil)) | ||
| 332 | 334 | ||
| 333 | (defcustom filesets-menu-shortcuts-flag t | 335 | (defcustom filesets-menu-shortcuts-flag t |
| 334 | "*Non-nil means to prepend menus with hopefully unique shortcuts." | 336 | "*Non-nil means to prepend menus with hopefully unique shortcuts." |
| @@ -351,7 +353,7 @@ XEmacs specific; see `add-submenu' for documentation." | |||
| 351 | (defcustom filesets-menu-cache-file | 353 | (defcustom filesets-menu-cache-file |
| 352 | (if filesets-running-xemacs | 354 | (if filesets-running-xemacs |
| 353 | "~/.xemacs/filesets-cache.el" | 355 | "~/.xemacs/filesets-cache.el" |
| 354 | "~/.filesets-cache.el") | 356 | "~/.emacs.d/filesets-cache.el") |
| 355 | "*File to be used for saving the filesets menu between sessions. | 357 | "*File to be used for saving the filesets menu between sessions. |
| 356 | Set this to \"\", to disable caching of menus. | 358 | Set this to \"\", to disable caching of menus. |
| 357 | Don't forget to check out `filesets-menu-ensure-use-cached'." | 359 | Don't forget to check out `filesets-menu-ensure-use-cached'." |
| @@ -1070,9 +1072,7 @@ defined in `filesets-ingroup-patterns'." | |||
| 1070 | ;;; Emacs compatibility | 1072 | ;;; Emacs compatibility |
| 1071 | (eval-and-compile | 1073 | (eval-and-compile |
| 1072 | (if filesets-running-xemacs | 1074 | (if filesets-running-xemacs |
| 1073 | (progn | 1075 | (fset 'filesets-error 'error) |
| 1074 | (fset 'filesets-error 'error) | ||
| 1075 | (fset 'filesets-add-submenu 'add-submenu)) | ||
| 1076 | 1076 | ||
| 1077 | (require 'easymenu) | 1077 | (require 'easymenu) |
| 1078 | 1078 | ||
| @@ -1080,12 +1080,6 @@ defined in `filesets-ingroup-patterns'." | |||
| 1080 | "`error' wrapper." | 1080 | "`error' wrapper." |
| 1081 | (error (mapconcat 'identity args " "))) | 1081 | (error (mapconcat 'identity args " "))) |
| 1082 | 1082 | ||
| 1083 | ;; This should work for 21.1 Emacs | ||
| 1084 | (defun filesets-add-submenu (menu-path submenu &optional | ||
| 1085 | before in-menu) | ||
| 1086 | "`easy-menu-define' wrapper." | ||
| 1087 | (easy-menu-define | ||
| 1088 | filesets-submenu global-map "Filesets menu" submenu)) | ||
| 1089 | )) | 1083 | )) |
| 1090 | 1084 | ||
| 1091 | (defun filesets-filter-dir-names (lst &optional negative) | 1085 | (defun filesets-filter-dir-names (lst &optional negative) |
| @@ -2339,7 +2333,7 @@ bottom up, set `filesets-submenus' to nil, first.)" | |||
| 2339 | (filesets-menu-cache-file-save-maybe))) | 2333 | (filesets-menu-cache-file-save-maybe))) |
| 2340 | (let ((cb (current-buffer))) | 2334 | (let ((cb (current-buffer))) |
| 2341 | (when (not (member cb filesets-updated-buffers)) | 2335 | (when (not (member cb filesets-updated-buffers)) |
| 2342 | (filesets-add-submenu | 2336 | (add-submenu |
| 2343 | filesets-menu-path | 2337 | filesets-menu-path |
| 2344 | `(,filesets-menu-name | 2338 | `(,filesets-menu-name |
| 2345 | ("# Filesets" | 2339 | ("# Filesets" |
diff --git a/lisp/font-core.el b/lisp/font-core.el index ea1880baac7..5bf30d4d6c5 100644 --- a/lisp/font-core.el +++ b/lisp/font-core.el | |||
| @@ -148,7 +148,7 @@ buffer local value for `font-lock-defaults', via its mode hook. | |||
| 148 | The above is the default behavior of `font-lock-mode'; you may specify | 148 | The above is the default behavior of `font-lock-mode'; you may specify |
| 149 | your own function which is called when `font-lock-mode' is toggled via | 149 | your own function which is called when `font-lock-mode' is toggled via |
| 150 | `font-lock-function'. " | 150 | `font-lock-function'. " |
| 151 | nil nil nil | 151 | :group 'font-lock |
| 152 | ;; Don't turn on Font Lock mode if we don't have a display (we're running a | 152 | ;; Don't turn on Font Lock mode if we don't have a display (we're running a |
| 153 | ;; batch job) or if the buffer is invisible (the name starts with a space). | 153 | ;; batch job) or if the buffer is invisible (the name starts with a space). |
| 154 | (when (or noninteractive (eq (aref (buffer-name) 0) ?\ )) | 154 | (when (or noninteractive (eq (aref (buffer-name) 0) ?\ )) |
diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 2cdda321092..38d3b94bccf 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el | |||
| @@ -1097,7 +1097,7 @@ delimit the region to fontify." | |||
| 1097 | ((error quit) (message "Fontifying block...%s" error-data))))))) | 1097 | ((error quit) (message "Fontifying block...%s" error-data))))))) |
| 1098 | 1098 | ||
| 1099 | (if (boundp 'facemenu-keymap) | 1099 | (if (boundp 'facemenu-keymap) |
| 1100 | (define-key facemenu-keymap "\M-g" 'font-lock-fontify-block)) | 1100 | (define-key facemenu-keymap "\M-o" 'font-lock-fontify-block)) |
| 1101 | 1101 | ||
| 1102 | ;;; End of Fontification functions. | 1102 | ;;; End of Fontification functions. |
| 1103 | 1103 | ||
diff --git a/lisp/generic-x.el b/lisp/generic-x.el index d39edbb7ef6..019456aae6b 100644 --- a/lisp/generic-x.el +++ b/lisp/generic-x.el | |||
| @@ -170,7 +170,8 @@ generic-x to enable the specified modes." | |||
| 170 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1) | 170 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1) |
| 171 | ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1) | 171 | ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1) |
| 172 | ("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1)))))) | 172 | ("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1)))))) |
| 173 | "Generic mode for Apache or HTTPD configuration files.")) | 173 | "Generic mode for Apache or HTTPD configuration files." |
| 174 | :group 'generic-x)) | ||
| 174 | 175 | ||
| 175 | (when (memq 'apache-log-generic-mode generic-extras-enable-list) | 176 | (when (memq 'apache-log-generic-mode generic-extras-enable-list) |
| 176 | 177 | ||
| @@ -183,7 +184,8 @@ generic-x to enable the specified modes." | |||
| 183 | (2 font-lock-variable-name-face))) | 184 | (2 font-lock-variable-name-face))) |
| 184 | '("access_log\\'") | 185 | '("access_log\\'") |
| 185 | nil | 186 | nil |
| 186 | "Mode for Apache log files")) | 187 | "Mode for Apache log files" |
| 188 | :group 'generic-x)) | ||
| 187 | 189 | ||
| 188 | ;;; Samba | 190 | ;;; Samba |
| 189 | (when (memq 'samba-generic-mode generic-extras-enable-list) | 191 | (when (memq 'samba-generic-mode generic-extras-enable-list) |
| @@ -197,7 +199,8 @@ generic-x to enable the specified modes." | |||
| 197 | (2 font-lock-type-face))) | 199 | (2 font-lock-type-face))) |
| 198 | '("smb\\.conf\\'") | 200 | '("smb\\.conf\\'") |
| 199 | '(generic-bracket-support) | 201 | '(generic-bracket-support) |
| 200 | "Generic mode for Samba configuration files.")) | 202 | "Generic mode for Samba configuration files." |
| 203 | :group 'generic-x)) | ||
| 201 | 204 | ||
| 202 | ;;; Fvwm | 205 | ;;; Fvwm |
| 203 | ;; This is pretty basic. Also, modes for other window managers could | 206 | ;; This is pretty basic. Also, modes for other window managers could |
| @@ -222,7 +225,8 @@ generic-x to enable the specified modes." | |||
| 222 | nil | 225 | nil |
| 223 | '("\\.fvwmrc\\'" "\\.fvwm2rc\\'") | 226 | '("\\.fvwmrc\\'" "\\.fvwm2rc\\'") |
| 224 | nil | 227 | nil |
| 225 | "Generic mode for FVWM configuration files.")) | 228 | "Generic mode for FVWM configuration files." |
| 229 | :group 'generic-x)) | ||
| 226 | 230 | ||
| 227 | ;;; X Resource | 231 | ;;; X Resource |
| 228 | ;; I'm pretty sure I've seen an actual mode to do this, but I don't | 232 | ;; I'm pretty sure I've seen an actual mode to do this, but I don't |
| @@ -235,7 +239,8 @@ generic-x to enable the specified modes." | |||
| 235 | '(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face)) | 239 | '(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face)) |
| 236 | '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'") | 240 | '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'") |
| 237 | nil | 241 | nil |
| 238 | "Generic mode for X Resource configuration files.")) | 242 | "Generic mode for X Resource configuration files." |
| 243 | :group 'generic-x)) | ||
| 239 | 244 | ||
| 240 | ;;; Hosts | 245 | ;;; Hosts |
| 241 | (when (memq 'hosts-generic-mode generic-extras-enable-list) | 246 | (when (memq 'hosts-generic-mode generic-extras-enable-list) |
| @@ -246,7 +251,8 @@ generic-x to enable the specified modes." | |||
| 246 | '(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face)) | 251 | '(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face)) |
| 247 | '("[hH][oO][sS][tT][sS]\\'") | 252 | '("[hH][oO][sS][tT][sS]\\'") |
| 248 | nil | 253 | nil |
| 249 | "Generic mode for HOSTS files.")) | 254 | "Generic mode for HOSTS files." |
| 255 | :group 'generic-x)) | ||
| 250 | 256 | ||
| 251 | ;;; Windows INF files | 257 | ;;; Windows INF files |
| 252 | (when (memq 'inf-generic-mode generic-extras-enable-list) | 258 | (when (memq 'inf-generic-mode generic-extras-enable-list) |
| @@ -257,7 +263,8 @@ generic-x to enable the specified modes." | |||
| 257 | '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)) | 263 | '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)) |
| 258 | '("\\.[iI][nN][fF]\\'") | 264 | '("\\.[iI][nN][fF]\\'") |
| 259 | '(generic-bracket-support) | 265 | '(generic-bracket-support) |
| 260 | "Generic mode for MS-Windows INF files.")) | 266 | "Generic mode for MS-Windows INF files." |
| 267 | :group 'generic-x)) | ||
| 261 | 268 | ||
| 262 | ;;; Windows INI files | 269 | ;;; Windows INI files |
| 263 | ;; Should define escape character as well! | 270 | ;; Should define escape character as well! |
| @@ -277,7 +284,8 @@ generic-x to enable the specified modes." | |||
| 277 | (setq imenu-generic-expression | 284 | (setq imenu-generic-expression |
| 278 | '((nil "^\\[\\(.*\\)\\]" 1) | 285 | '((nil "^\\[\\(.*\\)\\]" 1) |
| 279 | ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1)))))) | 286 | ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1)))))) |
| 280 | "Generic mode for MS-Windows INI files.")) | 287 | "Generic mode for MS-Windows INI files." |
| 288 | :group 'generic-x)) | ||
| 281 | 289 | ||
| 282 | ;;; Windows REG files | 290 | ;;; Windows REG files |
| 283 | ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax! | 291 | ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax! |
| @@ -294,7 +302,8 @@ generic-x to enable the specified modes." | |||
| 294 | (lambda () | 302 | (lambda () |
| 295 | (setq imenu-generic-expression | 303 | (setq imenu-generic-expression |
| 296 | '((nil "^\\s-*\\(.*\\)\\s-*=" 1)))))) | 304 | '((nil "^\\s-*\\(.*\\)\\s-*=" 1)))))) |
| 297 | "Generic mode for MS-Windows Registry files.")) | 305 | "Generic mode for MS-Windows Registry files." |
| 306 | :group 'generic-x)) | ||
| 298 | 307 | ||
| 299 | ;;; DOS/Windows BAT files | 308 | ;;; DOS/Windows BAT files |
| 300 | (when (memq 'bat-generic-mode generic-extras-enable-list) | 309 | (when (memq 'bat-generic-mode generic-extras-enable-list) |
| @@ -368,7 +377,8 @@ generic-x to enable the specified modes." | |||
| 368 | "\\`[cC][oO][nN][fF][iI][gG]\\." | 377 | "\\`[cC][oO][nN][fF][iI][gG]\\." |
| 369 | "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.") | 378 | "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.") |
| 370 | '(generic-bat-mode-setup-function) | 379 | '(generic-bat-mode-setup-function) |
| 371 | "Generic mode for MS-Windows BAT files.") | 380 | "Generic mode for MS-Windows BAT files." |
| 381 | :group 'generic-x) | ||
| 372 | 382 | ||
| 373 | (defvar bat-generic-mode-syntax-table nil | 383 | (defvar bat-generic-mode-syntax-table nil |
| 374 | "Syntax table in use in bat-generic-mode buffers.") | 384 | "Syntax table in use in bat-generic-mode buffers.") |
| @@ -446,7 +456,8 @@ generic-x to enable the specified modes." | |||
| 446 | (lambda () | 456 | (lambda () |
| 447 | (setq imenu-generic-expression | 457 | (setq imenu-generic-expression |
| 448 | '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1)))))) | 458 | '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1)))))) |
| 449 | "Mode for Mailagent rules files.")) | 459 | "Mode for Mailagent rules files." |
| 460 | :group 'generic-x)) | ||
| 450 | 461 | ||
| 451 | ;; Solaris/Sys V prototype files | 462 | ;; Solaris/Sys V prototype files |
| 452 | (when (memq 'prototype-generic-mode generic-extras-enable-list) | 463 | (when (memq 'prototype-generic-mode generic-extras-enable-list) |
| @@ -469,7 +480,8 @@ generic-x to enable the specified modes." | |||
| 469 | (2 font-lock-variable-name-face))) | 480 | (2 font-lock-variable-name-face))) |
| 470 | '("prototype\\'") | 481 | '("prototype\\'") |
| 471 | nil | 482 | nil |
| 472 | "Mode for Sys V prototype files.")) | 483 | "Mode for Sys V prototype files." |
| 484 | :group 'generic-x)) | ||
| 473 | 485 | ||
| 474 | ;; Solaris/Sys V pkginfo files | 486 | ;; Solaris/Sys V pkginfo files |
| 475 | (when (memq 'pkginfo-generic-mode generic-extras-enable-list) | 487 | (when (memq 'pkginfo-generic-mode generic-extras-enable-list) |
| @@ -482,7 +494,8 @@ generic-x to enable the specified modes." | |||
| 482 | (2 font-lock-variable-name-face))) | 494 | (2 font-lock-variable-name-face))) |
| 483 | '("pkginfo\\'") | 495 | '("pkginfo\\'") |
| 484 | nil | 496 | nil |
| 485 | "Mode for Sys V pkginfo files.")) | 497 | "Mode for Sys V pkginfo files." |
| 498 | :group 'generic-x)) | ||
| 486 | 499 | ||
| 487 | ;; Javascript mode | 500 | ;; Javascript mode |
| 488 | ;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU] | 501 | ;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU] |
| @@ -559,7 +572,8 @@ generic-x to enable the specified modes." | |||
| 559 | (setq imenu-generic-expression | 572 | (setq imenu-generic-expression |
| 560 | '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1) | 573 | '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1) |
| 561 | ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1)))))) | 574 | ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1)))))) |
| 562 | "Mode for JavaScript files.") | 575 | "Mode for JavaScript files." |
| 576 | :group 'generic-x) | ||
| 563 | 577 | ||
| 564 | ;; VRML files | 578 | ;; VRML files |
| 565 | (define-generic-mode vrml-generic-mode | 579 | (define-generic-mode vrml-generic-mode |
| @@ -610,7 +624,8 @@ generic-x to enable the specified modes." | |||
| 610 | ("*Definitions*" | 624 | ("*Definitions*" |
| 611 | "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{" | 625 | "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{" |
| 612 | 1)))))) | 626 | 1)))))) |
| 613 | "Generic Mode for VRML files.") | 627 | "Generic Mode for VRML files." |
| 628 | :group 'generic-x) | ||
| 614 | 629 | ||
| 615 | ;; Java Manifests | 630 | ;; Java Manifests |
| 616 | (define-generic-mode java-manifest-generic-mode | 631 | (define-generic-mode java-manifest-generic-mode |
| @@ -629,7 +644,8 @@ generic-x to enable the specified modes." | |||
| 629 | (2 font-lock-constant-face))) | 644 | (2 font-lock-constant-face))) |
| 630 | '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'") | 645 | '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'") |
| 631 | nil | 646 | nil |
| 632 | "Mode for Java Manifest files") | 647 | "Mode for Java Manifest files" |
| 648 | :group 'generic-x) | ||
| 633 | 649 | ||
| 634 | ;; Java properties files | 650 | ;; Java properties files |
| 635 | (define-generic-mode java-properties-generic-mode | 651 | (define-generic-mode java-properties-generic-mode |
| @@ -659,7 +675,8 @@ generic-x to enable the specified modes." | |||
| 659 | (lambda () | 675 | (lambda () |
| 660 | (setq imenu-generic-expression | 676 | (setq imenu-generic-expression |
| 661 | '((nil "^\\([^#! \t\n\r=:]+\\)" 1)))))) | 677 | '((nil "^\\([^#! \t\n\r=:]+\\)" 1)))))) |
| 662 | "Mode for Java properties files.") | 678 | "Mode for Java properties files." |
| 679 | :group 'generic-x) | ||
| 663 | 680 | ||
| 664 | ;; C shell alias definitions | 681 | ;; C shell alias definitions |
| 665 | (when (memq 'alias-generic-mode generic-extras-enable-list) | 682 | (when (memq 'alias-generic-mode generic-extras-enable-list) |
| @@ -677,7 +694,8 @@ generic-x to enable the specified modes." | |||
| 677 | (lambda () | 694 | (lambda () |
| 678 | (setq imenu-generic-expression | 695 | (setq imenu-generic-expression |
| 679 | '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))))) | 696 | '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))))) |
| 680 | "Mode for C Shell alias files.")) | 697 | "Mode for C Shell alias files." |
| 698 | :group 'generic-x)) | ||
| 681 | 699 | ||
| 682 | ;;; Windows RC files | 700 | ;;; Windows RC files |
| 683 | ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira) | 701 | ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira) |
| @@ -769,7 +787,8 @@ generic-x to enable the specified modes." | |||
| 769 | (2 font-lock-variable-name-face nil t)))) | 787 | (2 font-lock-variable-name-face nil t)))) |
| 770 | '("\\.[rR][cC]$") | 788 | '("\\.[rR][cC]$") |
| 771 | nil | 789 | nil |
| 772 | "Generic mode for MS-Windows Resource files.")) | 790 | "Generic mode for MS-Windows Resource files." |
| 791 | :group 'generic-x)) | ||
| 773 | 792 | ||
| 774 | ;; InstallShield RUL files | 793 | ;; InstallShield RUL files |
| 775 | ;; Contributed by Alfred.Correira@Pervasive.Com | 794 | ;; Contributed by Alfred.Correira@Pervasive.Com |
| @@ -1389,7 +1408,8 @@ generic-x to enable the specified modes." | |||
| 1389 | font-lock-variable-name-face "[^_]" "[^_]"))) ; is this face the best choice? | 1408 | font-lock-variable-name-face "[^_]" "[^_]"))) ; is this face the best choice? |
| 1390 | '("\\.[rR][uU][lL]$") | 1409 | '("\\.[rR][uU][lL]$") |
| 1391 | '(generic-rul-mode-setup-function) | 1410 | '(generic-rul-mode-setup-function) |
| 1392 | "Generic mode for InstallShield RUL files.") | 1411 | "Generic mode for InstallShield RUL files." |
| 1412 | :group 'generic-x) | ||
| 1393 | 1413 | ||
| 1394 | (define-skeleton rul-if | 1414 | (define-skeleton rul-if |
| 1395 | "Insert an if statement." | 1415 | "Insert an if statement." |
| @@ -1437,7 +1457,8 @@ generic-x to enable the specified modes." | |||
| 1437 | (2 font-lock-variable-name-face))) | 1457 | (2 font-lock-variable-name-face))) |
| 1438 | '("\\.mailrc\\'") | 1458 | '("\\.mailrc\\'") |
| 1439 | nil | 1459 | nil |
| 1440 | "Mode for mailrc files.") | 1460 | "Mode for mailrc files." |
| 1461 | :group 'generic-x) | ||
| 1441 | 1462 | ||
| 1442 | ;; Inetd.conf | 1463 | ;; Inetd.conf |
| 1443 | (when (memq 'inetd-conf-generic-mode generic-extras-enable-list) | 1464 | (when (memq 'inetd-conf-generic-mode generic-extras-enable-list) |
| @@ -1457,7 +1478,8 @@ generic-x to enable the specified modes." | |||
| 1457 | (function | 1478 | (function |
| 1458 | (lambda () | 1479 | (lambda () |
| 1459 | (setq imenu-generic-expression | 1480 | (setq imenu-generic-expression |
| 1460 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))))) | 1481 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) |
| 1482 | :group 'generic-x)) | ||
| 1461 | 1483 | ||
| 1462 | ;; Services | 1484 | ;; Services |
| 1463 | (when (memq 'etc-services-generic-mode generic-extras-enable-list) | 1485 | (when (memq 'etc-services-generic-mode generic-extras-enable-list) |
| @@ -1475,7 +1497,8 @@ generic-x to enable the specified modes." | |||
| 1475 | (function | 1497 | (function |
| 1476 | (lambda () | 1498 | (lambda () |
| 1477 | (setq imenu-generic-expression | 1499 | (setq imenu-generic-expression |
| 1478 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))))) | 1500 | '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) |
| 1501 | :group 'generic-x)) | ||
| 1479 | 1502 | ||
| 1480 | ;; Password and Group files | 1503 | ;; Password and Group files |
| 1481 | (when (memq 'etc-passwd-generic-mode generic-extras-enable-list) | 1504 | (when (memq 'etc-passwd-generic-mode generic-extras-enable-list) |
| @@ -1517,7 +1540,8 @@ generic-x to enable the specified modes." | |||
| 1517 | (function | 1540 | (function |
| 1518 | (lambda () | 1541 | (lambda () |
| 1519 | (setq imenu-generic-expression | 1542 | (setq imenu-generic-expression |
| 1520 | '((nil "^\\([-A-Za-z0-9_]+\\):" 1)))))))) | 1543 | '((nil "^\\([-A-Za-z0-9_]+\\):" 1)))))) |
| 1544 | :group 'generic-x)) | ||
| 1521 | 1545 | ||
| 1522 | ;; Fstab | 1546 | ;; Fstab |
| 1523 | (when (memq 'etc-fstab-generic-mode generic-extras-enable-list) | 1547 | (when (memq 'etc-fstab-generic-mode generic-extras-enable-list) |
| @@ -1567,7 +1591,8 @@ generic-x to enable the specified modes." | |||
| 1567 | (function | 1591 | (function |
| 1568 | (lambda () | 1592 | (lambda () |
| 1569 | (setq imenu-generic-expression | 1593 | (setq imenu-generic-expression |
| 1570 | '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1)))))))) | 1594 | '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1)))))) |
| 1595 | :group 'generic-x)) | ||
| 1571 | 1596 | ||
| 1572 | ;; From Jacques Duthen <jacques.duthen@sncf.fr> | 1597 | ;; From Jacques Duthen <jacques.duthen@sncf.fr> |
| 1573 | (eval-when-compile | 1598 | (eval-when-compile |
| @@ -1609,7 +1634,8 @@ generic-x to enable the specified modes." | |||
| 1609 | nil ;; no auto-mode-alist | 1634 | nil ;; no auto-mode-alist |
| 1610 | ;; '(show-tabs-generic-mode-hook-fun) | 1635 | ;; '(show-tabs-generic-mode-hook-fun) |
| 1611 | nil | 1636 | nil |
| 1612 | "Generic mode to show tabs and trailing spaces") | 1637 | "Generic mode to show tabs and trailing spaces" |
| 1638 | :group 'generic-x) | ||
| 1613 | 1639 | ||
| 1614 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 1640 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 1615 | ;; DNS modes | 1641 | ;; DNS modes |
| @@ -1630,7 +1656,8 @@ generic-x to enable the specified modes." | |||
| 1630 | ;; List of additional automode-alist expressions | 1656 | ;; List of additional automode-alist expressions |
| 1631 | '("/etc/named.boot\\'") | 1657 | '("/etc/named.boot\\'") |
| 1632 | ;; List of set up functions to call | 1658 | ;; List of set up functions to call |
| 1633 | nil) | 1659 | nil |
| 1660 | :group 'generic-x) | ||
| 1634 | 1661 | ||
| 1635 | (define-generic-mode named-database-generic-mode | 1662 | (define-generic-mode named-database-generic-mode |
| 1636 | ;; List of comment characters | 1663 | ;; List of comment characters |
| @@ -1643,7 +1670,8 @@ generic-x to enable the specified modes." | |||
| 1643 | ;; List of additional automode-alist expressions | 1670 | ;; List of additional automode-alist expressions |
| 1644 | nil | 1671 | nil |
| 1645 | ;; List of set up functions to call | 1672 | ;; List of set up functions to call |
| 1646 | nil) | 1673 | nil |
| 1674 | :group 'generic-x) | ||
| 1647 | 1675 | ||
| 1648 | (defvar named-database-time-string "%Y%m%d%H" | 1676 | (defvar named-database-time-string "%Y%m%d%H" |
| 1649 | "Timestring for named serial numbers.") | 1677 | "Timestring for named serial numbers.") |
| @@ -1663,7 +1691,8 @@ generic-x to enable the specified modes." | |||
| 1663 | ;; List of additional automode-alist expressions | 1691 | ;; List of additional automode-alist expressions |
| 1664 | '("/etc/resolv[e]?.conf\\'") | 1692 | '("/etc/resolv[e]?.conf\\'") |
| 1665 | ;; List of set up functions to call | 1693 | ;; List of set up functions to call |
| 1666 | nil) | 1694 | nil |
| 1695 | :group 'generic-x) | ||
| 1667 | 1696 | ||
| 1668 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 1697 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 1669 | ;; Modes for spice and common electrical engineering circuit netlist formats | 1698 | ;; Modes for spice and common electrical engineering circuit netlist formats |
| @@ -1705,7 +1734,8 @@ generic-x to enable the specified modes." | |||
| 1705 | (function | 1734 | (function |
| 1706 | (lambda() | 1735 | (lambda() |
| 1707 | (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) | 1736 | (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) |
| 1708 | "Generic mode for SPICE circuit netlist files.") | 1737 | "Generic mode for SPICE circuit netlist files." |
| 1738 | :group 'generic-x) | ||
| 1709 | 1739 | ||
| 1710 | (define-generic-mode ibis-generic-mode | 1740 | (define-generic-mode ibis-generic-mode |
| 1711 | '(?|) | 1741 | '(?|) |
| @@ -1714,7 +1744,8 @@ generic-x to enable the specified modes." | |||
| 1714 | ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face)) | 1744 | ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face)) |
| 1715 | '("\\.[iI][bB][sS]\\'") | 1745 | '("\\.[iI][bB][sS]\\'") |
| 1716 | '(generic-bracket-support) | 1746 | '(generic-bracket-support) |
| 1717 | "Generic mode for IBIS circuit netlist files.") | 1747 | "Generic mode for IBIS circuit netlist files." |
| 1748 | :group 'generic-x) | ||
| 1718 | 1749 | ||
| 1719 | (define-generic-mode astap-generic-mode | 1750 | (define-generic-mode astap-generic-mode |
| 1720 | nil | 1751 | nil |
| @@ -1749,7 +1780,8 @@ generic-x to enable the specified modes." | |||
| 1749 | (function | 1780 | (function |
| 1750 | (lambda() | 1781 | (lambda() |
| 1751 | (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) | 1782 | (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) |
| 1752 | "Generic mode for ASTAP circuit netlist files.") | 1783 | "Generic mode for ASTAP circuit netlist files." |
| 1784 | :group 'generic-x) | ||
| 1753 | 1785 | ||
| 1754 | (define-generic-mode etc-modules-conf-generic-mode | 1786 | (define-generic-mode etc-modules-conf-generic-mode |
| 1755 | ;; List of comment characters | 1787 | ;; List of comment characters |
| @@ -1791,7 +1823,8 @@ generic-x to enable the specified modes." | |||
| 1791 | ;; List of additional automode-alist expressions | 1823 | ;; List of additional automode-alist expressions |
| 1792 | '("/etc/modules.conf" "/etc/conf.modules") | 1824 | '("/etc/modules.conf" "/etc/conf.modules") |
| 1793 | ;; List of set up functions to call | 1825 | ;; List of set up functions to call |
| 1794 | nil) | 1826 | nil |
| 1827 | :group 'generic-x) | ||
| 1795 | 1828 | ||
| 1796 | (provide 'generic-x) | 1829 | (provide 'generic-x) |
| 1797 | 1830 | ||
diff --git a/lisp/generic.el b/lisp/generic.el index e20f73688c7..e170d05e0f3 100644 --- a/lisp/generic.el +++ b/lisp/generic.el | |||
| @@ -185,7 +185,8 @@ the regexp in `generic-find-file-regexp'. If the value is nil, | |||
| 185 | ;;;###autoload | 185 | ;;;###autoload |
| 186 | (defmacro define-generic-mode (mode comment-list keyword-list | 186 | (defmacro define-generic-mode (mode comment-list keyword-list |
| 187 | font-lock-list auto-mode-list | 187 | font-lock-list auto-mode-list |
| 188 | function-list &optional docstring) | 188 | function-list &optional docstring |
| 189 | &rest custom-keyword-args) | ||
| 189 | "Create a new generic mode MODE. | 190 | "Create a new generic mode MODE. |
| 190 | 191 | ||
| 191 | MODE is the name of the command for the generic mode; it need not | 192 | MODE is the name of the command for the generic mode; it need not |
| @@ -216,59 +217,90 @@ as soon as `define-generic-mode' is called. | |||
| 216 | FUNCTION-LIST is a list of functions to call to do some | 217 | FUNCTION-LIST is a list of functions to call to do some |
| 217 | additional setup. | 218 | additional setup. |
| 218 | 219 | ||
| 220 | The optional CUSTOM-KEYWORD-ARGS are pairs of keywords and | ||
| 221 | values. They will be passed to the generated `defcustom' form of | ||
| 222 | the mode hook variable MODE-hook. You can specify keyword | ||
| 223 | arguments without specifying a docstring. | ||
| 224 | |||
| 219 | See the file generic-x.el for some examples of `define-generic-mode'." | 225 | See the file generic-x.el for some examples of `define-generic-mode'." |
| 220 | (let* ((name-unquoted (if (eq (car-safe mode) 'quote) ; Backward compatibility. | 226 | (declare (debug (sexp def-form def-form def-form form def-form |
| 221 | (eval mode) | 227 | &optional stringp)) |
| 222 | mode)) | 228 | (indent 1)) |
| 223 | (name-string (symbol-name name-unquoted)) | 229 | |
| 230 | ;; Backward compatibility. | ||
| 231 | (when (eq (car-safe mode) 'quote) | ||
| 232 | (setq mode (eval mode))) | ||
| 233 | |||
| 234 | (when (and docstring (not (stringp docstring))) | ||
| 235 | ;; DOCSTRING is not a string so we assume that it's actually the | ||
| 236 | ;; first keyword of CUSTOM-KEYWORD-ARGS. | ||
| 237 | (push docstring custom-keyword-args) | ||
| 238 | (setq docstring nil)) | ||
| 239 | |||
| 240 | (let* ((mode-name (symbol-name mode)) | ||
| 224 | (pretty-name (capitalize (replace-regexp-in-string | 241 | (pretty-name (capitalize (replace-regexp-in-string |
| 225 | "-mode\\'" "" name-string)))) | 242 | "-mode\\'" "" mode-name))) |
| 243 | (mode-hook (intern (concat mode-name "-hook")))) | ||
| 244 | |||
| 245 | (unless (plist-get custom-keyword-args :group) | ||
| 246 | (setq custom-keyword-args | ||
| 247 | (plist-put custom-keyword-args | ||
| 248 | :group `(or (custom-current-group) | ||
| 249 | ',(intern (replace-regexp-in-string | ||
| 250 | "-mode\\'" "" mode-name)))))) | ||
| 226 | 251 | ||
| 227 | `(progn | 252 | `(progn |
| 228 | ;; Add a new entry. | 253 | ;; Add a new entry. |
| 229 | (add-to-list 'generic-mode-list ,name-string) | 254 | (add-to-list 'generic-mode-list ,mode-name) |
| 230 | 255 | ||
| 231 | ;; Add it to auto-mode-alist | 256 | ;; Add it to auto-mode-alist |
| 232 | (dolist (re ,auto-mode-list) | 257 | (dolist (re ,auto-mode-list) |
| 233 | (add-to-list 'auto-mode-alist (cons re ',name-unquoted))) | 258 | (add-to-list 'auto-mode-alist (cons re ',mode))) |
| 259 | |||
| 260 | (defcustom ,mode-hook nil | ||
| 261 | ,(concat "Hook run when entering " pretty-name " mode.") | ||
| 262 | :type 'hook | ||
| 263 | ,@custom-keyword-args) | ||
| 234 | 264 | ||
| 235 | (defun ,name-unquoted () | 265 | (defun ,mode () |
| 236 | ,(or docstring | 266 | ,(or docstring |
| 237 | (concat pretty-name " mode.\n" | 267 | (concat pretty-name " mode.\n" |
| 238 | "This a generic mode defined with `define-generic-mode'.")) | 268 | "This a generic mode defined with `define-generic-mode'.")) |
| 239 | (interactive) | 269 | (interactive) |
| 240 | (generic-mode-internal ',name-unquoted ,comment-list ,keyword-list | 270 | (generic-mode-internal ',mode ,comment-list ,keyword-list |
| 241 | ,font-lock-list ,function-list))))) | 271 | ,font-lock-list ,function-list))))) |
| 242 | 272 | ||
| 243 | ;;;###autoload | 273 | ;;;###autoload |
| 244 | (defun generic-mode-internal (mode comments keywords font-lock-list funs) | 274 | (defun generic-mode-internal (mode comment-list keyword-list |
| 275 | font-lock-list function-list) | ||
| 245 | "Go into the generic mode MODE." | 276 | "Go into the generic mode MODE." |
| 246 | (let* ((modename (symbol-name mode)) | 277 | (let* ((mode-name (symbol-name mode)) |
| 247 | (generic-mode-hooks (intern (concat modename "-hook"))) | ||
| 248 | (pretty-name (capitalize (replace-regexp-in-string | 278 | (pretty-name (capitalize (replace-regexp-in-string |
| 249 | "-mode\\'" "" modename)))) | 279 | "-mode\\'" "" mode-name))) |
| 280 | (mode-hook (intern (concat mode-name "-hook")))) | ||
| 250 | 281 | ||
| 251 | (kill-all-local-variables) | 282 | (kill-all-local-variables) |
| 252 | 283 | ||
| 253 | (setq major-mode mode | 284 | (setq major-mode mode |
| 254 | mode-name pretty-name) | 285 | mode-name pretty-name) |
| 255 | 286 | ||
| 256 | (generic-mode-set-comments comments) | 287 | (generic-mode-set-comments comment-list) |
| 257 | 288 | ||
| 258 | ;; Font-lock functionality. | 289 | ;; Font-lock functionality. |
| 259 | ;; Font-lock-defaults is always set even if there are no keywords | 290 | ;; Font-lock-defaults is always set even if there are no keywords |
| 260 | ;; or font-lock expressions, so comments can be highlighted. | 291 | ;; or font-lock expressions, so comments can be highlighted. |
| 261 | (setq generic-font-lock-keywords | 292 | (setq generic-font-lock-keywords |
| 262 | (append | 293 | (append |
| 263 | (when keywords | 294 | (when keyword-list |
| 264 | (list (generic-make-keywords-list keywords font-lock-keyword-face))) | 295 | (list (generic-make-keywords-list keyword-list |
| 296 | font-lock-keyword-face))) | ||
| 265 | font-lock-list)) | 297 | font-lock-list)) |
| 266 | (setq font-lock-defaults '(generic-font-lock-keywords nil)) | 298 | (setq font-lock-defaults '(generic-font-lock-keywords nil)) |
| 267 | 299 | ||
| 268 | ;; Call a list of functions | 300 | ;; Call a list of functions |
| 269 | (mapcar 'funcall funs) | 301 | (mapcar 'funcall function-list) |
| 270 | 302 | ||
| 271 | (run-hooks generic-mode-hooks))) | 303 | (run-mode-hooks mode-hook))) |
| 272 | 304 | ||
| 273 | ;;;###autoload | 305 | ;;;###autoload |
| 274 | (defun generic-mode (mode) | 306 | (defun generic-mode (mode) |
| @@ -359,7 +391,7 @@ Some generic modes are defined in `generic-x.el'." | |||
| 359 | imenu-case-fold-search t)) | 391 | imenu-case-fold-search t)) |
| 360 | 392 | ||
| 361 | ;; This generic mode is always defined | 393 | ;; This generic mode is always defined |
| 362 | (define-generic-mode default-generic-mode (list ?#) nil nil nil nil) | 394 | (define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 'generic) |
| 363 | 395 | ||
| 364 | ;; A more general solution would allow us to enter generic-mode for | 396 | ;; A more general solution would allow us to enter generic-mode for |
| 365 | ;; *any* comment character, but would require us to synthesize a new | 397 | ;; *any* comment character, but would require us to synthesize a new |
| @@ -392,7 +424,7 @@ This hook will be installed if the variable | |||
| 392 | 424 | ||
| 393 | (defun generic-mode-ini-file-find-file-hook () | 425 | (defun generic-mode-ini-file-find-file-hook () |
| 394 | "Hook function to enter Default-Generic mode automatically for INI files. | 426 | "Hook function to enter Default-Generic mode automatically for INI files. |
| 395 | Done if the first few lines of a file in Fundamental mode look like an | 427 | Done if the first few lines of a file in Fundamental mode look like an |
| 396 | INI file. This hook is NOT installed by default." | 428 | INI file. This hook is NOT installed by default." |
| 397 | (and (eq major-mode 'fundamental-mode) | 429 | (and (eq major-mode 'fundamental-mode) |
| 398 | (save-excursion | 430 | (save-excursion |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 5d15a6f9646..b19598eb3ab 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,99 @@ | |||
| 1 | 2005-04-03 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 2 | |||
| 3 | * gnus-sum.el (gnus-summary-make-menu-bar): Fix an | ||
| 4 | "unrecognised menu descriptor" error. | ||
| 5 | |||
| 6 | 2005-03-25 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 7 | |||
| 8 | * message.el (message-resend): Bind rfc2047-encode-encoded-words. | ||
| 9 | |||
| 10 | * mm-util.el (mm-replace-in-string): New function. | ||
| 11 | (mm-xemacs-find-mime-charset-1): Ignore errors while loading | ||
| 12 | latin-unity, which cannot be used with XEmacs 21.1. | ||
| 13 | |||
| 14 | * rfc2047.el (rfc2047-encode-function-alist): Rename from | ||
| 15 | rfc2047-encoding-function-alist in order to avoid conflicting with | ||
| 16 | the old version. | ||
| 17 | (rfc2047-encode-message-header): Remove useless goto-char. | ||
| 18 | (rfc2047-encodable-p): Don't move point. | ||
| 19 | (rfc2047-syntax-table): Treat `(' and `)' as is. | ||
| 20 | (rfc2047-encode-region): Concatenate words containing non-ASCII | ||
| 21 | characters in structured fields; don't encode space-delimited | ||
| 22 | ASCII words even in unstructured fields; don't break words at | ||
| 23 | char-category boundaries; encode encoded words in structured | ||
| 24 | fields; treat text within parentheses as special; show the | ||
| 25 | original text when error has occurred; move point to the end of | ||
| 26 | the region after encoding, suggested by IRIE Tetsuya | ||
| 27 | <irie@t.email.ne.jp>; treat backslash-quoted characters as | ||
| 28 | non-special; check carefully whether to encode special characters; | ||
| 29 | fix some kind of misconfigured headers; signal a real error if | ||
| 30 | debug-on-quit or debug-on-error is non-nil; don't infloop, | ||
| 31 | suggested by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>; assume | ||
| 32 | the close parenthesis may be included in the encoded word; encode | ||
| 33 | bogus delimiters. | ||
| 34 | (rfc2047-encode-string): Use mm-with-multibyte-buffer. | ||
| 35 | (rfc2047-encode-max-chars): New variable. | ||
| 36 | (rfc2047-encode-1): New function. | ||
| 37 | (rfc2047-encode): Use it; encode text so that it occupies the | ||
| 38 | maximum width within 76-column; work correctly on Q encoding for | ||
| 39 | iso-2022-* charsets; fold the line before encoding; don't append a | ||
| 40 | space if the encoded word includes close parenthesis. | ||
| 41 | (rfc2047-fold-region): Use existing whitespace for LWSP; make it | ||
| 42 | sure not to break a line just after the header name. | ||
| 43 | (rfc2047-b-encode-region): Remove. | ||
| 44 | (rfc2047-b-encode-string): New function. | ||
| 45 | (rfc2047-q-encode-region): Remove. | ||
| 46 | (rfc2047-q-encode-string): New function. | ||
| 47 | (rfc2047-encode-parameter): New function. | ||
| 48 | (rfc2047-encoded-word-regexp): Don't use shy group. | ||
| 49 | (rfc2047-decode-region): Follow rfc2047-encoded-word-regexp change. | ||
| 50 | (rfc2047-parse-and-decode): Ditto. | ||
| 51 | (rfc2047-decode): Treat the ascii coding-system as raw-text by | ||
| 52 | default. | ||
| 53 | |||
| 54 | 2005-03-25 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 55 | |||
| 56 | * rfc2047.el (rfc2047-encode-encoded-words): New variable. | ||
| 57 | (rfc2047-field-value): Strip props. | ||
| 58 | (rfc2047-encode-message-header): Disabled header folding -- not | ||
| 59 | all headers can be folded, and this should be done by the message | ||
| 60 | composition mode. Probably. I think. | ||
| 61 | (rfc2047-encodable-p): Say that =? needs encoding. | ||
| 62 | (rfc2047-encode-region): Encode =? strings. | ||
| 63 | |||
| 64 | 2005-03-25 Jesper Harder <harder@ifa.au.dk> | ||
| 65 | |||
| 66 | * rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231 | ||
| 67 | language tags; remove unnecessary '+'. Reported by Stefan Wiens | ||
| 68 | <s.wi@gmx.net>. | ||
| 69 | (rfc2047-decode-string): Don't cons a string unnecessarily. | ||
| 70 | (rfc2047-parse-and-decode, rfc2047-decode): Use a character for | ||
| 71 | the encoding to avoid consing a string. | ||
| 72 | (rfc2047-decode): Use mm-subst-char-in-string instead of | ||
| 73 | mm-replace-chars-in-string. | ||
| 74 | |||
| 75 | 2005-03-25 TSUCHIYA Masatoshi <tsuchiya@namazu.org> | ||
| 76 | |||
| 77 | * rfc2047.el (rfc2047-encode): Use uppercase letters to specify | ||
| 78 | encodings of MIME-encoded words, in order to improve | ||
| 79 | interoperability with several broken MUAs. | ||
| 80 | |||
| 81 | 2005-03-21 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 82 | |||
| 83 | * gnus-srvr.el (gnus-browse-select-group): Add NUMBER argument and | ||
| 84 | pass it to `gnus-browse-read-group'. | ||
| 85 | (gnus-browse-read-group): Add NUMBER argument and pass it to | ||
| 86 | `gnus-group-read-ephemeral-group'. | ||
| 87 | |||
| 88 | * gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER | ||
| 89 | argument and pass it to `gnus-group-read-group'. | ||
| 90 | |||
| 91 | 2005-03-19 Aidan Kehoe <kehoea@parhasard.net> | ||
| 92 | |||
| 93 | * mm-util.el (mm-xemacs-find-mime-charset): Only call | ||
| 94 | mm-xemacs-find-mime-charset-1 if we have the mule feature | ||
| 95 | available at runtime. | ||
| 96 | |||
| 1 | 2005-03-25 Werner Lemberg <wl@gnu.org> | 97 | 2005-03-25 Werner Lemberg <wl@gnu.org> |
| 2 | 98 | ||
| 3 | * nnmaildir.el: Replace `illegal' with `invalid'. | 99 | * nnmaildir.el: Replace `illegal' with `invalid'. |
| @@ -618,7 +714,7 @@ | |||
| 618 | unless plugged. Disable the agent so that an open failure causes | 714 | unless plugged. Disable the agent so that an open failure causes |
| 619 | an error. | 715 | an error. |
| 620 | 716 | ||
| 621 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Reiner Steib <Reiner.Steib@gmx.de> | 717 | 2004-10-18 Reiner Steib <Reiner.Steib@gmx.de> |
| 622 | 718 | ||
| 623 | * gnus-agent.el (gnus-agent-fetched-hook): Add :version. | 719 | * gnus-agent.el (gnus-agent-fetched-hook): Add :version. |
| 624 | (gnus-agent-go-online): Change :version. | 720 | (gnus-agent-go-online): Change :version. |
| @@ -660,21 +756,21 @@ | |||
| 660 | (gnus-convert-mark-converter-prompt) | 756 | (gnus-convert-mark-converter-prompt) |
| 661 | (gnus-convert-converter-needs-prompt): Fix use of property list. | 757 | (gnus-convert-converter-needs-prompt): Fix use of property list. |
| 662 | 758 | ||
| 663 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Katsumi Yamaoka <yamaoka@jpl.org> | 759 | 2004-10-18 Katsumi Yamaoka <yamaoka@jpl.org> |
| 664 | 760 | ||
| 665 | * gnus-agent.el (gnus-agent-restore-gcc): Use ^ and regexp-quote. | 761 | * gnus-agent.el (gnus-agent-restore-gcc): Use ^ and regexp-quote. |
| 666 | 762 | ||
| 667 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen <larsi@gnus.org> | 763 | 2004-10-18 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 668 | 764 | ||
| 669 | * gnus-start.el (gnus-get-unread-articles-in-group): Don't do | 765 | * gnus-start.el (gnus-get-unread-articles-in-group): Don't do |
| 670 | stuff for non-living groups. | 766 | stuff for non-living groups. |
| 671 | 767 | ||
| 672 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen <larsi@gnus.org> | 768 | 2004-10-18 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 673 | 769 | ||
| 674 | * gnus-agent.el (gnus-agent-synchronize-flags): Default to nil. | 770 | * gnus-agent.el (gnus-agent-synchronize-flags): Default to nil. |
| 675 | (gnus-agent-regenerate-group): Using nil messages aren't valid. | 771 | (gnus-agent-regenerate-group): Using nil messages aren't valid. |
| 676 | 772 | ||
| 677 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Lars Magne Ingebrigtsen <larsi@gnus.org> | 773 | 2004-10-18 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 678 | 774 | ||
| 679 | * gnus-agent.el (gnus-agent-read-agentview): | 775 | * gnus-agent.el (gnus-agent-read-agentview): |
| 680 | Inline gnus-uncompress-range. | 776 | Inline gnus-uncompress-range. |
| @@ -691,7 +787,7 @@ | |||
| 691 | message-send-mail-function. The change makes the agent real-time | 787 | message-send-mail-function. The change makes the agent real-time |
| 692 | responsive to user changes to message-send-mail-function. | 788 | responsive to user changes to message-send-mail-function. |
| 693 | 789 | ||
| 694 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Reiner Steib <Reiner.Steib@gmx.de> | 790 | 2004-10-18 Reiner Steib <Reiner.Steib@gmx.de> |
| 695 | 791 | ||
| 696 | * gnus-start.el (gnus-get-unread-articles): Fix last commit. | 792 | * gnus-start.el (gnus-get-unread-articles): Fix last commit. |
| 697 | 793 | ||
| @@ -732,12 +828,12 @@ | |||
| 732 | 828 | ||
| 733 | * gnus-util.el (gnus-rename-file): New function. | 829 | * gnus-util.el (gnus-rename-file): New function. |
| 734 | 830 | ||
| 735 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Katsumi Yamaoka <yamaoka@jpl.org> | 831 | 2004-10-18 Katsumi Yamaoka <yamaoka@jpl.org> |
| 736 | 832 | ||
| 737 | * gnus-agent.el (gnus-agent-regenerate-group): Activate the group | 833 | * gnus-agent.el (gnus-agent-regenerate-group): Activate the group |
| 738 | when the group's active is not available. | 834 | when the group's active is not available. |
| 739 | 835 | ||
| 740 | 2004-10-18 Kevin Greiner <kevin.greiner@compsol.cc> for Katsumi Yamaoka <yamaoka@jpl.org> | 836 | 2004-10-18 Katsumi Yamaoka <yamaoka@jpl.org> |
| 741 | 837 | ||
| 742 | * gnus-agent.el (gnus-agent-read-agentview): Add a missing arg to | 838 | * gnus-agent.el (gnus-agent-read-agentview): Add a missing arg to |
| 743 | error. | 839 | error. |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 767bdacb78e..6d38626998c 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -1984,7 +1984,8 @@ confirmation is required." | |||
| 1984 | (defun gnus-group-read-ephemeral-group (group method &optional activate | 1984 | (defun gnus-group-read-ephemeral-group (group method &optional activate |
| 1985 | quit-config request-only | 1985 | quit-config request-only |
| 1986 | select-articles | 1986 | select-articles |
| 1987 | parameters) | 1987 | parameters |
| 1988 | number) | ||
| 1988 | "Read GROUP from METHOD as an ephemeral group. | 1989 | "Read GROUP from METHOD as an ephemeral group. |
| 1989 | If ACTIVATE, request the group first. | 1990 | If ACTIVATE, request the group first. |
| 1990 | If QUIT-CONFIG, use that window configuration when exiting from the | 1991 | If QUIT-CONFIG, use that window configuration when exiting from the |
| @@ -1992,6 +1993,7 @@ ephemeral group. | |||
| 1992 | If REQUEST-ONLY, don't actually read the group; just request it. | 1993 | If REQUEST-ONLY, don't actually read the group; just request it. |
| 1993 | If SELECT-ARTICLES, only select those articles. | 1994 | If SELECT-ARTICLES, only select those articles. |
| 1994 | If PARAMETERS, use those as the group parameters. | 1995 | If PARAMETERS, use those as the group parameters. |
| 1996 | If NUMBER, fetch this number of articles. | ||
| 1995 | 1997 | ||
| 1996 | Return the name of the group if selection was successful." | 1998 | Return the name of the group if selection was successful." |
| 1997 | (interactive | 1999 | (interactive |
| @@ -2039,7 +2041,7 @@ Return the name of the group if selection was successful." | |||
| 2039 | (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup) | 2041 | (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup) |
| 2040 | (gnus-fetch-old-headers | 2042 | (gnus-fetch-old-headers |
| 2041 | gnus-fetch-old-ephemeral-headers)) | 2043 | gnus-fetch-old-ephemeral-headers)) |
| 2042 | (gnus-group-read-group t t group select-articles)) | 2044 | (gnus-group-read-group (or number t) t group select-articles)) |
| 2043 | group) | 2045 | group) |
| 2044 | ;;(error nil) | 2046 | ;;(error nil) |
| 2045 | (quit | 2047 | (quit |
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el index e8c7d354145..7b3c033fddb 100644 --- a/lisp/gnus/gnus-srvr.el +++ b/lisp/gnus/gnus-srvr.el | |||
| @@ -851,23 +851,26 @@ buffer. | |||
| 851 | (setq buffer-read-only t) | 851 | (setq buffer-read-only t) |
| 852 | (gnus-run-hooks 'gnus-browse-mode-hook)) | 852 | (gnus-run-hooks 'gnus-browse-mode-hook)) |
| 853 | 853 | ||
| 854 | (defun gnus-browse-read-group (&optional no-article) | 854 | (defun gnus-browse-read-group (&optional no-article number) |
| 855 | "Enter the group at the current line." | 855 | "Enter the group at the current line. |
| 856 | (interactive) | 856 | If NUMBER, fetch this number of articles." |
| 857 | (interactive "P") | ||
| 857 | (let ((group (gnus-browse-group-name))) | 858 | (let ((group (gnus-browse-group-name))) |
| 858 | (if (or (not (gnus-get-info group)) | 859 | (if (or (not (gnus-get-info group)) |
| 859 | (gnus-ephemeral-group-p group)) | 860 | (gnus-ephemeral-group-p group)) |
| 860 | (unless (gnus-group-read-ephemeral-group | 861 | (unless (gnus-group-read-ephemeral-group |
| 861 | group gnus-browse-current-method nil | 862 | group gnus-browse-current-method nil |
| 862 | (cons (current-buffer) 'browse)) | 863 | (cons (current-buffer) 'browse) |
| 864 | nil nil nil number) | ||
| 863 | (error "Couldn't enter %s" group)) | 865 | (error "Couldn't enter %s" group)) |
| 864 | (unless (gnus-group-read-group nil no-article group) | 866 | (unless (gnus-group-read-group nil no-article group) |
| 865 | (error "Couldn't enter %s" group))))) | 867 | (error "Couldn't enter %s" group))))) |
| 866 | 868 | ||
| 867 | (defun gnus-browse-select-group () | 869 | (defun gnus-browse-select-group (&optional number) |
| 868 | "Select the current group." | 870 | "Select the current group. |
| 869 | (interactive) | 871 | If NUMBER, fetch this number of articles." |
| 870 | (gnus-browse-read-group 'no)) | 872 | (interactive "P") |
| 873 | (gnus-browse-read-group 'no number)) | ||
| 871 | 874 | ||
| 872 | (defun gnus-browse-next-group (n) | 875 | (defun gnus-browse-next-group (n) |
| 873 | "Go to the next group." | 876 | "Go to the next group." |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index ea8f7e063fe..8d6a5f951b5 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -2250,7 +2250,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) | |||
| 2250 | ,@(if (featurep 'xemacs) '(t) | 2250 | ,@(if (featurep 'xemacs) '(t) |
| 2251 | '(:help "Generate and print a PostScript image"))]) | 2251 | '(:help "Generate and print a PostScript image"))]) |
| 2252 | ("Copy, move,... (Backend)" | 2252 | ("Copy, move,... (Backend)" |
| 2253 | ,@(if (featurep 'xemacs) '(t) | 2253 | ,@(if (featurep 'xemacs) nil |
| 2254 | '(:help "Copying, moving, expiring articles...")) | 2254 | '(:help "Copying, moving, expiring articles...")) |
| 2255 | ["Respool article..." gnus-summary-respool-article t] | 2255 | ["Respool article..." gnus-summary-respool-article t] |
| 2256 | ["Move article..." gnus-summary-move-article | 2256 | ["Move article..." gnus-summary-move-article |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index de56fe2be96..9edbce2620e 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -6364,7 +6364,8 @@ Optional DIGEST will use digest to forward." | |||
| 6364 | (replace-match "X-From-Line: ")) | 6364 | (replace-match "X-From-Line: ")) |
| 6365 | ;; Send it. | 6365 | ;; Send it. |
| 6366 | (let ((message-inhibit-body-encoding t) | 6366 | (let ((message-inhibit-body-encoding t) |
| 6367 | message-required-mail-headers) | 6367 | message-required-mail-headers |
| 6368 | rfc2047-encode-encoded-words) | ||
| 6368 | (message-send-mail)) | 6369 | (message-send-mail)) |
| 6369 | (kill-buffer (current-buffer))) | 6370 | (kill-buffer (current-buffer))) |
| 6370 | (message "Resending message to %s...done" address))) | 6371 | (message "Resending message to %s...done" address))) |
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el index 5b4200d6d52..3be6444f18f 100644 --- a/lisp/gnus/mm-util.el +++ b/lisp/gnus/mm-util.el | |||
| @@ -86,6 +86,32 @@ | |||
| 86 | (multibyte-char-to-unibyte . identity)))) | 86 | (multibyte-char-to-unibyte . identity)))) |
| 87 | 87 | ||
| 88 | (eval-and-compile | 88 | (eval-and-compile |
| 89 | (cond | ||
| 90 | ((fboundp 'replace-in-string) | ||
| 91 | (defalias 'mm-replace-in-string 'replace-in-string)) | ||
| 92 | ((fboundp 'replace-regexp-in-string) | ||
| 93 | (defun mm-replace-in-string (string regexp newtext &optional literal) | ||
| 94 | "Replace all matches for REGEXP with NEWTEXT in STRING. | ||
| 95 | If LITERAL is non-nil, insert NEWTEXT literally. Return a new | ||
| 96 | string containing the replacements. | ||
| 97 | |||
| 98 | This is a compatibility function for different Emacsen." | ||
| 99 | (replace-regexp-in-string regexp newtext string nil literal))) | ||
| 100 | (t | ||
| 101 | (defun mm-replace-in-string (string regexp newtext &optional literal) | ||
| 102 | "Replace all matches for REGEXP with NEWTEXT in STRING. | ||
| 103 | If LITERAL is non-nil, insert NEWTEXT literally. Return a new | ||
| 104 | string containing the replacements. | ||
| 105 | |||
| 106 | This is a compatibility function for different Emacsen." | ||
| 107 | (let ((start 0) tail) | ||
| 108 | (while (string-match regexp string start) | ||
| 109 | (setq tail (- (length string) (match-end 0))) | ||
| 110 | (setq string (replace-match newtext nil literal string)) | ||
| 111 | (setq start (- (length string) tail)))) | ||
| 112 | string)))) | ||
| 113 | |||
| 114 | (eval-and-compile | ||
| 89 | (defalias 'mm-char-or-char-int-p | 115 | (defalias 'mm-char-or-char-int-p |
| 90 | (cond | 116 | (cond |
| 91 | ((fboundp 'char-or-char-int-p) 'char-or-char-int-p) | 117 | ((fboundp 'char-or-char-int-p) 'char-or-char-int-p) |
| @@ -606,7 +632,7 @@ But this is very much a corner case, so don't worry about it." | |||
| 606 | 632 | ||
| 607 | ;; Load the Latin Unity library, if available. | 633 | ;; Load the Latin Unity library, if available. |
| 608 | (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity")) | 634 | (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity")) |
| 609 | (require 'latin-unity)) | 635 | (ignore-errors (require 'latin-unity))) |
| 610 | 636 | ||
| 611 | ;; Now, can we use it? | 637 | ;; Now, can we use it? |
| 612 | (if (featurep 'latin-unity) | 638 | (if (featurep 'latin-unity) |
| @@ -651,7 +677,7 @@ But this is very much a corner case, so don't worry about it." | |||
| 651 | 677 | ||
| 652 | (defmacro mm-xemacs-find-mime-charset (begin end) | 678 | (defmacro mm-xemacs-find-mime-charset (begin end) |
| 653 | (when (featurep 'xemacs) | 679 | (when (featurep 'xemacs) |
| 654 | `(mm-xemacs-find-mime-charset-1 ,begin ,end))) | 680 | `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end)))) |
| 655 | 681 | ||
| 656 | (defun mm-find-mime-charset-region (b e &optional hack-charsets) | 682 | (defun mm-find-mime-charset-region (b e &optional hack-charsets) |
| 657 | "Return the MIME charsets needed to encode the region between B and E. | 683 | "Return the MIME charsets needed to encode the region between B and E. |
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el index 6086f422abd..538e22e0f88 100644 --- a/lisp/gnus/rfc2047.el +++ b/lisp/gnus/rfc2047.el | |||
| @@ -119,12 +119,15 @@ The values can be: | |||
| 119 | Valid encodings are nil, `Q' and `B'. These indicate binary (no) encoding, | 119 | Valid encodings are nil, `Q' and `B'. These indicate binary (no) encoding, |
| 120 | quoted-printable and base64 respectively.") | 120 | quoted-printable and base64 respectively.") |
| 121 | 121 | ||
| 122 | (defvar rfc2047-encoding-function-alist | 122 | (defvar rfc2047-encode-function-alist |
| 123 | '((Q . rfc2047-q-encode-region) | 123 | '((Q . rfc2047-q-encode-string) |
| 124 | (B . rfc2047-b-encode-region) | 124 | (B . rfc2047-b-encode-string) |
| 125 | (nil . ignore)) | 125 | (nil . identity)) |
| 126 | "Alist of RFC2047 encodings to encoding functions.") | 126 | "Alist of RFC2047 encodings to encoding functions.") |
| 127 | 127 | ||
| 128 | (defvar rfc2047-encode-encoded-words t | ||
| 129 | "Whether encoded words should be encoded again.") | ||
| 130 | |||
| 128 | ;;; | 131 | ;;; |
| 129 | ;;; Functions for encoding RFC2047 messages | 132 | ;;; Functions for encoding RFC2047 messages |
| 130 | ;;; | 133 | ;;; |
| @@ -166,7 +169,7 @@ This is either `base64' or `quoted-printable'." | |||
| 166 | (save-restriction | 169 | (save-restriction |
| 167 | (rfc2047-narrow-to-field) | 170 | (rfc2047-narrow-to-field) |
| 168 | (re-search-forward ":[ \t\n]*" nil t) | 171 | (re-search-forward ":[ \t\n]*" nil t) |
| 169 | (buffer-substring (point) (point-max))))) | 172 | (buffer-substring-no-properties (point) (point-max))))) |
| 170 | 173 | ||
| 171 | (defvar rfc2047-encoding-type 'address-mime | 174 | (defvar rfc2047-encoding-type 'address-mime |
| 172 | "The type of encoding done by `rfc2047-encode-region'. | 175 | "The type of encoding done by `rfc2047-encode-region'. |
| @@ -186,24 +189,25 @@ Should be called narrowed to the head of the message." | |||
| 186 | (rfc2047-narrow-to-field) | 189 | (rfc2047-narrow-to-field) |
| 187 | (if (not (rfc2047-encodable-p)) | 190 | (if (not (rfc2047-encodable-p)) |
| 188 | (prog1 | 191 | (prog1 |
| 189 | (if (and (eq (mm-body-7-or-8) '8bit) | 192 | (if (and (eq (mm-body-7-or-8) '8bit) |
| 190 | (mm-multibyte-p) | 193 | (mm-multibyte-p) |
| 191 | (mm-coding-system-p | 194 | (mm-coding-system-p |
| 192 | (car message-posting-charset))) | 195 | (car message-posting-charset))) |
| 193 | ;; 8 bit must be decoded. | 196 | ;; 8 bit must be decoded. |
| 194 | (mm-encode-coding-region | 197 | (mm-encode-coding-region |
| 195 | (point-min) (point-max) | 198 | (point-min) (point-max) |
| 196 | (mm-charset-to-coding-system | 199 | (mm-charset-to-coding-system |
| 197 | (car message-posting-charset)))) | 200 | (car message-posting-charset)))) |
| 198 | ;; No encoding necessary, but folding is nice | 201 | ;; No encoding necessary, but folding is nice |
| 199 | (rfc2047-fold-region | 202 | (when nil |
| 200 | (save-excursion | 203 | (rfc2047-fold-region |
| 201 | (goto-char (point-min)) | 204 | (save-excursion |
| 202 | (skip-chars-forward "^:") | 205 | (goto-char (point-min)) |
| 203 | (when (looking-at ": ") | 206 | (skip-chars-forward "^:") |
| 204 | (forward-char 2)) | 207 | (when (looking-at ": ") |
| 205 | (point)) | 208 | (forward-char 2)) |
| 206 | (point-max))) | 209 | (point)) |
| 210 | (point-max)))) | ||
| 207 | ;; We found something that may perhaps be encoded. | 211 | ;; We found something that may perhaps be encoded. |
| 208 | (setq method nil | 212 | (setq method nil |
| 209 | alist rfc2047-header-encoding-alist) | 213 | alist rfc2047-header-encoding-alist) |
| @@ -213,7 +217,6 @@ Should be called narrowed to the head of the message." | |||
| 213 | (eq (car elem) t)) | 217 | (eq (car elem) t)) |
| 214 | (setq alist nil | 218 | (setq alist nil |
| 215 | method (cdr elem)))) | 219 | method (cdr elem)))) |
| 216 | (goto-char (point-min)) | ||
| 217 | (re-search-forward "^[^:]+: *" nil t) | 220 | (re-search-forward "^[^:]+: *" nil t) |
| 218 | (cond | 221 | (cond |
| 219 | ((eq method 'address-mime) | 222 | ((eq method 'address-mime) |
| @@ -267,8 +270,13 @@ The buffer may be narrowed." | |||
| 267 | (require 'message) ; for message-posting-charset | 270 | (require 'message) ; for message-posting-charset |
| 268 | (let ((charsets | 271 | (let ((charsets |
| 269 | (mm-find-mime-charset-region (point-min) (point-max)))) | 272 | (mm-find-mime-charset-region (point-min) (point-max)))) |
| 270 | (and charsets | 273 | (goto-char (point-min)) |
| 271 | (not (equal charsets (list (car message-posting-charset))))))) | 274 | (or (and rfc2047-encode-encoded-words |
| 275 | (prog1 | ||
| 276 | (search-forward "=?" nil t) | ||
| 277 | (goto-char (point-min)))) | ||
| 278 | (and charsets | ||
| 279 | (not (equal charsets (list (car message-posting-charset)))))))) | ||
| 272 | 280 | ||
| 273 | ;; Use this syntax table when parsing into regions that may need | 281 | ;; Use this syntax table when parsing into regions that may need |
| 274 | ;; encoding. Double quotes are string delimiters, backslash is | 282 | ;; encoding. Double quotes are string delimiters, backslash is |
| @@ -292,8 +300,8 @@ The buffer may be narrowed." | |||
| 292 | table)))) | 300 | table)))) |
| 293 | (modify-syntax-entry ?\\ "\\" table) | 301 | (modify-syntax-entry ?\\ "\\" table) |
| 294 | (modify-syntax-entry ?\" "\"" table) | 302 | (modify-syntax-entry ?\" "\"" table) |
| 295 | (modify-syntax-entry ?\( "." table) | 303 | (modify-syntax-entry ?\( "(" table) |
| 296 | (modify-syntax-entry ?\) "." table) | 304 | (modify-syntax-entry ?\) ")" table) |
| 297 | (modify-syntax-entry ?\< "." table) | 305 | (modify-syntax-entry ?\< "." table) |
| 298 | (modify-syntax-entry ?\> "." table) | 306 | (modify-syntax-entry ?\> "." table) |
| 299 | (modify-syntax-entry ?\[ "." table) | 307 | (modify-syntax-entry ?\[ "." table) |
| @@ -310,183 +318,341 @@ By default, the region is treated as containing RFC2822 addresses. | |||
| 310 | Dynamically bind `rfc2047-encoding-type' to change that." | 318 | Dynamically bind `rfc2047-encoding-type' to change that." |
| 311 | (save-restriction | 319 | (save-restriction |
| 312 | (narrow-to-region b e) | 320 | (narrow-to-region b e) |
| 313 | (if (eq 'mime rfc2047-encoding-type) | 321 | (let ((encodable-regexp (if rfc2047-encode-encoded-words |
| 314 | ;; Simple case. Treat as single word after any initial ASCII | 322 | "[^\000-\177]+\\|=\\?" |
| 315 | ;; part and before any tailing ASCII part. The leading ASCII | 323 | "[^\000-\177]+")) |
| 316 | ;; is relevant for instance in Subject headers with `Re:' for | 324 | start ; start of current token |
| 317 | ;; interoperability with non-MIME clients, and we might as | 325 | end begin csyntax |
| 318 | ;; well avoid the tail too. | 326 | ;; Whether there's an encoded word before the current token, |
| 319 | (progn | 327 | ;; either immediately or separated by space. |
| 320 | (goto-char (point-min)) | 328 | last-encoded |
| 321 | ;; Does it need encoding? | 329 | (orig-text (buffer-substring-no-properties b e))) |
| 322 | (skip-chars-forward "\000-\177") | 330 | (if (eq 'mime rfc2047-encoding-type) |
| 323 | (unless (eobp) | 331 | ;; Simple case. Continuous words in which all those contain |
| 324 | (skip-chars-backward "^ \n") ; beginning of space-delimited word | 332 | ;; non-ASCII characters are encoded collectively. Encoding |
| 325 | (rfc2047-encode (point) (progn | 333 | ;; ASCII words, including `Re:' used in Subject headers, is |
| 326 | (goto-char e) | 334 | ;; avoided for interoperability with non-MIME clients and |
| 327 | (skip-chars-backward "\000-\177") | 335 | ;; for making it easy to find keywords. |
| 328 | (skip-chars-forward "^ \n") | 336 | (progn |
| 329 | ;; end of space-delimited word | 337 | (goto-char (point-min)) |
| 330 | (point))))) | 338 | (while (progn (skip-chars-forward " \t\n") |
| 331 | ;; `address-mime' case -- take care of quoted words, comments. | 339 | (not (eobp))) |
| 332 | (with-syntax-table rfc2047-syntax-table | 340 | (setq start (point)) |
| 333 | (let ((start) ; start of current token | 341 | (while (and (looking-at "[ \t\n]*\\([^ \t\n]+\\)") |
| 334 | end ; end of current token | 342 | (progn |
| 335 | ;; Whether there's an encoded word before the current | 343 | (setq end (match-end 0)) |
| 336 | ;; token, either immediately or separated by space. | 344 | (re-search-forward encodable-regexp end t))) |
| 337 | last-encoded) | 345 | (goto-char end)) |
| 346 | (if (> (point) start) | ||
| 347 | (rfc2047-encode start (point)) | ||
| 348 | (goto-char end)))) | ||
| 349 | ;; `address-mime' case -- take care of quoted words, comments. | ||
| 350 | (with-syntax-table rfc2047-syntax-table | ||
| 338 | (goto-char (point-min)) | 351 | (goto-char (point-min)) |
| 339 | (condition-case nil ; in case of unbalanced quotes | 352 | (condition-case err ; in case of unbalanced quotes |
| 340 | ;; Look for rfc2822-style: sequences of atoms, quoted | 353 | ;; Look for rfc2822-style: sequences of atoms, quoted |
| 341 | ;; strings, specials, whitespace. (Specials mustn't be | 354 | ;; strings, specials, whitespace. (Specials mustn't be |
| 342 | ;; encoded.) | 355 | ;; encoded.) |
| 343 | (while (not (eobp)) | 356 | (while (not (eobp)) |
| 344 | (setq start (point)) | ||
| 345 | ;; Skip whitespace. | 357 | ;; Skip whitespace. |
| 346 | (unless (= 0 (skip-chars-forward " \t\n")) | 358 | (skip-chars-forward " \t\n") |
| 347 | (setq start (point))) | 359 | (setq start (point)) |
| 348 | (cond | 360 | (cond |
| 349 | ((not (char-after))) ; eob | 361 | ((not (char-after))) ; eob |
| 350 | ;; else token start | 362 | ;; else token start |
| 351 | ((eq ?\" (char-syntax (char-after))) | 363 | ((eq ?\" (setq csyntax (char-syntax (char-after)))) |
| 352 | ;; Quoted word. | 364 | ;; Quoted word. |
| 353 | (forward-sexp) | 365 | (forward-sexp) |
| 354 | (setq end (point)) | 366 | (setq end (point)) |
| 355 | ;; Does it need encoding? | 367 | ;; Does it need encoding? |
| 356 | (goto-char start) | 368 | (goto-char start) |
| 357 | (skip-chars-forward "\000-\177" end) | 369 | (if (re-search-forward encodable-regexp end 'move) |
| 358 | (if (= end (point)) | 370 | ;; It needs encoding. Strip the quotes first, |
| 359 | (setq last-encoded nil) | 371 | ;; since encoded words can't occur in quotes. |
| 360 | ;; It needs encoding. Strip the quotes first, | 372 | (progn |
| 361 | ;; since encoded words can't occur in quotes. | 373 | (goto-char end) |
| 362 | (goto-char end) | 374 | (delete-backward-char 1) |
| 363 | (delete-backward-char 1) | 375 | (goto-char start) |
| 364 | (goto-char start) | 376 | (delete-char 1) |
| 365 | (delete-char 1) | 377 | (when last-encoded |
| 366 | (when last-encoded | 378 | ;; There was a preceding quoted word. We need |
| 367 | ;; There was a preceding quoted word. We need | 379 | ;; to include any separating whitespace in this |
| 368 | ;; to include any separating whitespace in this | 380 | ;; word to avoid it getting lost. |
| 369 | ;; word to avoid it getting lost. | 381 | (skip-chars-backward " \t") |
| 370 | (skip-chars-backward " \t") | 382 | ;; A space is needed between the encoded words. |
| 371 | ;; A space is needed between the encoded words. | 383 | (insert ? ) |
| 372 | (insert ? ) | 384 | (setq start (point) |
| 373 | (setq start (point) | 385 | end (1+ end))) |
| 374 | end (1+ end))) | 386 | ;; Adjust the end position for the deleted quotes. |
| 375 | ;; Adjust the end position for the deleted quotes. | 387 | (rfc2047-encode start (- end 2)) |
| 376 | (rfc2047-encode start (- end 2)) | 388 | (setq last-encoded t)) ; record that it was encoded |
| 377 | (setq last-encoded t))) ; record that it was encoded | 389 | (setq last-encoded nil))) |
| 378 | ((eq ?. (char-syntax (char-after))) | 390 | ((eq ?. csyntax) |
| 379 | ;; Skip other delimiters, but record that they've | 391 | ;; Skip other delimiters, but record that they've |
| 380 | ;; potentially separated quoted words. | 392 | ;; potentially separated quoted words. |
| 381 | (forward-char) | 393 | (forward-char) |
| 382 | (setq last-encoded nil)) | 394 | (setq last-encoded nil)) |
| 395 | ((eq ?\) csyntax) | ||
| 396 | (error "Unbalanced parentheses")) | ||
| 397 | ((eq ?\( csyntax) | ||
| 398 | ;; Look for the end of parentheses. | ||
| 399 | (forward-list) | ||
| 400 | ;; Encode text as an unstructured field. | ||
| 401 | (let ((rfc2047-encoding-type 'mime)) | ||
| 402 | (rfc2047-encode-region (1+ start) (1- (point)))) | ||
| 403 | (skip-chars-forward ")")) | ||
| 383 | (t ; normal token/whitespace sequence | 404 | (t ; normal token/whitespace sequence |
| 384 | ;; Find the end. | 405 | ;; Find the end. |
| 385 | (forward-word 1) | 406 | ;; Skip one ASCII word, or encode continuous words |
| 386 | (skip-chars-backward " \t") | 407 | ;; in which all those contain non-ASCII characters. |
| 408 | (setq end nil) | ||
| 409 | (while (not (or end (eobp))) | ||
| 410 | (when (looking-at "[\000-\177]+") | ||
| 411 | (setq begin (point) | ||
| 412 | end (match-end 0)) | ||
| 413 | (when (progn | ||
| 414 | (while (and (or (re-search-forward | ||
| 415 | "[ \t\n]\\|\\Sw" end 'move) | ||
| 416 | (setq end nil)) | ||
| 417 | (eq ?\\ (char-syntax (char-before)))) | ||
| 418 | ;; Skip backslash-quoted characters. | ||
| 419 | (forward-char)) | ||
| 420 | end) | ||
| 421 | (setq end (match-beginning 0)) | ||
| 422 | (if rfc2047-encode-encoded-words | ||
| 423 | (progn | ||
| 424 | (goto-char begin) | ||
| 425 | (when (search-forward "=?" end 'move) | ||
| 426 | (goto-char (match-beginning 0)) | ||
| 427 | (setq end nil))) | ||
| 428 | (goto-char end)))) | ||
| 429 | ;; Where the value nil of `end' means there may be | ||
| 430 | ;; text to have to be encoded following the point. | ||
| 431 | ;; Otherwise, the point reached to the end of ASCII | ||
| 432 | ;; words separated by whitespace or a special char. | ||
| 433 | (unless end | ||
| 434 | (when (looking-at encodable-regexp) | ||
| 435 | (goto-char (setq begin (match-end 0))) | ||
| 436 | (while (and (looking-at "[ \t\n]+\\([^ \t\n]+\\)") | ||
| 437 | (setq end (match-end 0)) | ||
| 438 | (progn | ||
| 439 | (while (re-search-forward | ||
| 440 | encodable-regexp end t)) | ||
| 441 | (< begin (point))) | ||
| 442 | (goto-char begin) | ||
| 443 | (or (not (re-search-forward "\\Sw" end t)) | ||
| 444 | (progn | ||
| 445 | (goto-char (match-beginning 0)) | ||
| 446 | nil))) | ||
| 447 | (goto-char end)) | ||
| 448 | (when (looking-at "[^ \t\n]+") | ||
| 449 | (setq end (match-end 0)) | ||
| 450 | (if (re-search-forward "\\Sw+" end t) | ||
| 451 | ;; There are special characters better | ||
| 452 | ;; to be encoded so that MTAs may parse | ||
| 453 | ;; them safely. | ||
| 454 | (cond ((= end (point))) | ||
| 455 | ((looking-at (concat "\\sw*\\(" | ||
| 456 | encodable-regexp | ||
| 457 | "\\)")) | ||
| 458 | (setq end nil)) | ||
| 459 | (t | ||
| 460 | (goto-char (1- (match-end 0))) | ||
| 461 | (unless (= (point) (match-beginning 0)) | ||
| 462 | ;; Separate encodable text and | ||
| 463 | ;; delimiter. | ||
| 464 | (insert " ")))) | ||
| 465 | (goto-char end) | ||
| 466 | (skip-chars-forward " \t\n") | ||
| 467 | (if (and (looking-at "[^ \t\n]+") | ||
| 468 | (string-match encodable-regexp | ||
| 469 | (match-string 0))) | ||
| 470 | (setq end nil) | ||
| 471 | (goto-char end))))))) | ||
| 472 | (skip-chars-backward " \t\n") | ||
| 387 | (setq end (point)) | 473 | (setq end (point)) |
| 388 | ;; Deal with encoding and leading space as for | ||
| 389 | ;; quoted words. | ||
| 390 | (goto-char start) | 474 | (goto-char start) |
| 391 | (skip-chars-forward "\000-\177" end) | 475 | (if (re-search-forward encodable-regexp end 'move) |
| 392 | (if (= end (point)) | 476 | (progn |
| 393 | (setq last-encoded nil) | 477 | (unless (memq (char-before start) '(nil ?\t ? )) |
| 394 | (when last-encoded | 478 | (if (progn |
| 395 | (goto-char start) | 479 | (goto-char start) |
| 396 | (skip-chars-backward " \t") | 480 | (skip-chars-backward "^ \t\n") |
| 397 | (insert ? ) | 481 | (and (looking-at "\\Sw+") |
| 398 | (setq start (point) | 482 | (= (match-end 0) start))) |
| 399 | end (1+ end))) | 483 | ;; Also encode bogus delimiters. |
| 400 | (rfc2047-encode start end) | 484 | (setq start (point)) |
| 401 | (setq last-encoded t))))) | 485 | ;; Separate encodable text and delimiter. |
| 486 | (goto-char start) | ||
| 487 | (insert " ") | ||
| 488 | (setq start (1+ start) | ||
| 489 | end (1+ end)))) | ||
| 490 | (rfc2047-encode start end) | ||
| 491 | (setq last-encoded t)) | ||
| 492 | (setq last-encoded nil))))) | ||
| 402 | (error | 493 | (error |
| 403 | (error "Invalid data for rfc2047 encoding: %s" | 494 | (if (or debug-on-quit debug-on-error) |
| 404 | (buffer-substring b e))))))) | 495 | (signal (car err) (cdr err)) |
| 405 | (rfc2047-fold-region b (point)))) | 496 | (error "Invalid data for rfc2047 encoding: %s" |
| 497 | (mm-replace-in-string orig-text "[ \t\n]+" " ")))))))) | ||
| 498 | (rfc2047-fold-region b (point)) | ||
| 499 | (goto-char (point-max)))) | ||
| 406 | 500 | ||
| 407 | (defun rfc2047-encode-string (string) | 501 | (defun rfc2047-encode-string (string) |
| 408 | "Encode words in STRING. | 502 | "Encode words in STRING. |
| 409 | By default, the string is treated as containing addresses (see | 503 | By default, the string is treated as containing addresses (see |
| 410 | `rfc2047-encoding-type')." | 504 | `rfc2047-encoding-type')." |
| 411 | (with-temp-buffer | 505 | (mm-with-multibyte-buffer |
| 412 | (insert string) | 506 | (insert string) |
| 413 | (rfc2047-encode-region (point-min) (point-max)) | 507 | (rfc2047-encode-region (point-min) (point-max)) |
| 414 | (buffer-string))) | 508 | (buffer-string))) |
| 415 | 509 | ||
| 510 | (defvar rfc2047-encode-max-chars 76 | ||
| 511 | "Maximum characters of each header line that contain encoded-words. | ||
| 512 | If it is nil, encoded-words will not be folded. Too small value may | ||
| 513 | cause an error. Don't change this for no particular reason.") | ||
| 514 | |||
| 515 | (defun rfc2047-encode-1 (column string cs encoder start crest tail | ||
| 516 | &optional eword) | ||
| 517 | "Subroutine used by `rfc2047-encode'." | ||
| 518 | (cond ((string-equal string "") | ||
| 519 | (or eword "")) | ||
| 520 | ((not rfc2047-encode-max-chars) | ||
| 521 | (concat start | ||
| 522 | (funcall encoder (if cs | ||
| 523 | (mm-encode-coding-string string cs) | ||
| 524 | string)) | ||
| 525 | "?=")) | ||
| 526 | ((>= column rfc2047-encode-max-chars) | ||
| 527 | (when eword | ||
| 528 | (cond ((string-match "\n[ \t]+\\'" eword) | ||
| 529 | ;; Reomove a superfluous empty line. | ||
| 530 | (setq eword (substring eword 0 (match-beginning 0)))) | ||
| 531 | ((string-match "(+\\'" eword) | ||
| 532 | ;; Break the line before the open parenthesis. | ||
| 533 | (setq crest (concat crest (match-string 0 eword)) | ||
| 534 | eword (substring eword 0 (match-beginning 0)))))) | ||
| 535 | (rfc2047-encode-1 (length crest) string cs encoder start " " tail | ||
| 536 | (concat eword "\n" crest))) | ||
| 537 | (t | ||
| 538 | (let ((index 0) | ||
| 539 | (limit (1- (length string))) | ||
| 540 | (prev "") | ||
| 541 | next len) | ||
| 542 | (while (and prev | ||
| 543 | (<= index limit)) | ||
| 544 | (setq next (concat start | ||
| 545 | (funcall encoder | ||
| 546 | (if cs | ||
| 547 | (mm-encode-coding-string | ||
| 548 | (substring string 0 (1+ index)) | ||
| 549 | cs) | ||
| 550 | (substring string 0 (1+ index)))) | ||
| 551 | "?=") | ||
| 552 | len (+ column (length next))) | ||
| 553 | (if (> len rfc2047-encode-max-chars) | ||
| 554 | (setq next prev | ||
| 555 | prev nil) | ||
| 556 | (if (or (< index limit) | ||
| 557 | (<= (+ len (or (string-match "\n" tail) | ||
| 558 | (length tail))) | ||
| 559 | rfc2047-encode-max-chars)) | ||
| 560 | (setq prev next | ||
| 561 | index (1+ index)) | ||
| 562 | (if (string-match "\\`)+" tail) | ||
| 563 | ;; Break the line after the close parenthesis. | ||
| 564 | (setq tail (concat (substring tail 0 (match-end 0)) | ||
| 565 | "\n " | ||
| 566 | (substring tail (match-end 0))) | ||
| 567 | prev next | ||
| 568 | index (1+ index)) | ||
| 569 | (setq next prev | ||
| 570 | prev nil))))) | ||
| 571 | (if (> index limit) | ||
| 572 | (concat eword next tail) | ||
| 573 | (if (= 0 index) | ||
| 574 | (if (and eword | ||
| 575 | (string-match "(+\\'" eword)) | ||
| 576 | (setq crest (concat crest (match-string 0 eword)) | ||
| 577 | eword (substring eword 0 (match-beginning 0))) | ||
| 578 | (setq eword (concat eword next))) | ||
| 579 | (setq crest " " | ||
| 580 | eword (concat eword next))) | ||
| 581 | (when (string-match "\n[ \t]+\\'" eword) | ||
| 582 | ;; Reomove a superfluous empty line. | ||
| 583 | (setq eword (substring eword 0 (match-beginning 0)))) | ||
| 584 | (rfc2047-encode-1 (length crest) (substring string index) | ||
| 585 | cs encoder start " " tail | ||
| 586 | (concat eword "\n" crest))))))) | ||
| 587 | |||
| 416 | (defun rfc2047-encode (b e) | 588 | (defun rfc2047-encode (b e) |
| 417 | "Encode the word(s) in the region B to E. | 589 | "Encode the word(s) in the region B to E. |
| 418 | By default, the region is treated as containing addresses (see | 590 | Point moves to the end of the region." |
| 419 | `rfc2047-encoding-type')." | 591 | (let ((mime-charset (or (mm-find-mime-charset-region b e) (list 'us-ascii))) |
| 420 | (let* ((mime-charset (mm-find-mime-charset-region b e)) | 592 | cs encoding tail crest eword) |
| 421 | (cs (if (> (length mime-charset) 1) | 593 | (cond ((> (length mime-charset) 1) |
| 422 | ;; Fixme: Instead of this, try to break region into | 594 | (error "Can't rfc2047-encode `%s'" |
| 423 | ;; parts that can be encoded separately. | 595 | (buffer-substring-no-properties b e))) |
| 424 | (error "Can't rfc2047-encode `%s'" | 596 | ((= (length mime-charset) 1) |
| 425 | (buffer-substring b e)) | 597 | (setq mime-charset (car mime-charset) |
| 426 | (setq mime-charset (car mime-charset)) | 598 | cs (mm-charset-to-coding-system mime-charset)) |
| 427 | (mm-charset-to-coding-system mime-charset))) | 599 | (unless (and (mm-multibyte-p) |
| 428 | ;; Fixme: Better, calculate the number of non-ASCII | 600 | (mm-coding-system-p cs)) |
| 429 | ;; characters, at least for 8-bit charsets. | 601 | (setq cs nil)) |
| 430 | (encoding (or (cdr (assq mime-charset | 602 | (save-restriction |
| 603 | (narrow-to-region b e) | ||
| 604 | (setq encoding | ||
| 605 | (or (cdr (assq mime-charset | ||
| 431 | rfc2047-charset-encoding-alist)) | 606 | rfc2047-charset-encoding-alist)) |
| 432 | ;; For the charsets that don't have a preferred | 607 | ;; For the charsets that don't have a preferred |
| 433 | ;; encoding, choose the one that's shorter. | 608 | ;; encoding, choose the one that's shorter. |
| 434 | (save-restriction | 609 | (if (eq (rfc2047-qp-or-base64) 'base64) |
| 435 | (narrow-to-region b e) | 610 | 'B |
| 436 | (if (eq (rfc2047-qp-or-base64) 'base64) | 611 | 'Q))) |
| 437 | 'B | 612 | (widen) |
| 438 | 'Q)))) | 613 | (goto-char e) |
| 439 | (start (concat | 614 | (skip-chars-forward "^ \t\n") |
| 440 | "=?" (downcase (symbol-name mime-charset)) "?" | 615 | ;; `tail' may contain a close parenthesis. |
| 441 | (downcase (symbol-name encoding)) "?")) | 616 | (setq tail (buffer-substring-no-properties e (point))) |
| 442 | (factor (case mime-charset | 617 | (goto-char b) |
| 443 | ((iso-8859-5 iso-8859-7 iso-8859-8 koi8-r) 1) | 618 | (setq b (point-marker) |
| 444 | ((big5 gb2312 euc-kr) 2) | 619 | e (set-marker (make-marker) e)) |
| 445 | (utf-8 4) | 620 | (rfc2047-fold-region (rfc2047-point-at-bol) b) |
| 446 | (t 8))) | 621 | (goto-char b) |
| 447 | (pre (- b (save-restriction | 622 | (skip-chars-backward "^ \t\n") |
| 448 | (widen) | 623 | (unless (= 0 (skip-chars-backward " \t")) |
| 449 | (rfc2047-point-at-bol)))) | 624 | ;; `crest' may contain whitespace and an open parenthesis. |
| 450 | ;; encoded-words must not be longer than 75 characters, | 625 | (setq crest (buffer-substring-no-properties (point) b))) |
| 451 | ;; including charset, encoding etc. This leaves us with | 626 | (setq eword (rfc2047-encode-1 |
| 452 | ;; 75 - (length start) - 2 - 2 characters. The last 2 is for | 627 | (- b (rfc2047-point-at-bol)) |
| 453 | ;; possible base64 padding. In the worst case (iso-2022-*) | 628 | (mm-replace-in-string |
| 454 | ;; each character expands to 8 bytes which is expanded by a | 629 | (buffer-substring-no-properties b e) |
| 455 | ;; factor of 4/3 by base64 encoding. | 630 | "\n\\([ \t]?\\)" "\\1") |
| 456 | (length (floor (- 75 (length start) 4) (* factor (/ 4.0 3.0)))) | 631 | cs |
| 457 | ;; Limit line length to 76 characters. | 632 | (or (cdr (assq encoding |
| 458 | (length1 (max 1 (floor (- 76 (length start) 4 pre) | 633 | rfc2047-encode-function-alist)) |
| 459 | (* factor (/ 4.0 3.0))))) | 634 | 'identity) |
| 460 | (first t)) | 635 | (concat "=?" (downcase (symbol-name mime-charset)) |
| 461 | (if mime-charset | 636 | "?" (upcase (symbol-name encoding)) "?") |
| 462 | (save-restriction | 637 | (or crest " ") |
| 463 | (narrow-to-region b e) | 638 | tail)) |
| 464 | (when (eq encoding 'B) | 639 | (delete-region (if (eq (aref eword 0) ?\n) |
| 465 | ;; break into lines before encoding | 640 | (if (bolp) |
| 466 | (goto-char (point-min)) | 641 | ;; The line was folded before encoding. |
| 467 | (while (not (eobp)) | 642 | (1- (point)) |
| 468 | (if first | 643 | (point)) |
| 469 | (progn | 644 | (goto-char b)) |
| 470 | (goto-char (min (point-max) (+ length1 (point)))) | 645 | (+ e (length tail))) |
| 471 | (setq first nil)) | 646 | ;; `eword' contains `crest' and `tail'. |
| 472 | (goto-char (min (point-max) (+ length (point))))) | 647 | (insert eword) |
| 473 | (unless (eobp) | 648 | (set-marker b nil) |
| 474 | (insert ?\n))) | 649 | (set-marker e nil) |
| 475 | (setq first t)) | 650 | (unless (or (/= 0 (length tail)) |
| 476 | (if (and (mm-multibyte-p) | 651 | (eobp) |
| 477 | (mm-coding-system-p cs)) | 652 | (looking-at "[ \t\n)]")) |
| 478 | (mm-encode-coding-region (point-min) (point-max) cs)) | 653 | (insert " ")))) |
| 479 | (funcall (cdr (assq encoding rfc2047-encoding-function-alist)) | 654 | (t |
| 480 | (point-min) (point-max)) | 655 | (goto-char e))))) |
| 481 | (goto-char (point-min)) | ||
| 482 | (while (not (eobp)) | ||
| 483 | (unless first | ||
| 484 | (insert ? )) | ||
| 485 | (setq first nil) | ||
| 486 | (insert start) | ||
| 487 | (end-of-line) | ||
| 488 | (insert "?=") | ||
| 489 | (forward-line 1)))))) | ||
| 490 | 656 | ||
| 491 | (defun rfc2047-fold-field () | 657 | (defun rfc2047-fold-field () |
| 492 | "Fold the current header field." | 658 | "Fold the current header field." |
| @@ -512,6 +678,7 @@ By default, the region is treated as containing addresses (see | |||
| 512 | (goto-char (or break qword-break)) | 678 | (goto-char (or break qword-break)) |
| 513 | (setq break nil | 679 | (setq break nil |
| 514 | qword-break nil) | 680 | qword-break nil) |
| 681 | (skip-chars-backward " \t") | ||
| 515 | (if (looking-at "[ \t]") | 682 | (if (looking-at "[ \t]") |
| 516 | (insert ?\n) | 683 | (insert ?\n) |
| 517 | (insert "\n ")) | 684 | (insert "\n ")) |
| @@ -533,10 +700,8 @@ By default, the region is treated as containing addresses (see | |||
| 533 | (forward-char 1)) | 700 | (forward-char 1)) |
| 534 | ((memq (char-after) '(? ?\t)) | 701 | ((memq (char-after) '(? ?\t)) |
| 535 | (skip-chars-forward " \t") | 702 | (skip-chars-forward " \t") |
| 536 | (if first | 703 | (unless first ;; Don't break just after the header name. |
| 537 | ;; Don't break just after the header name. | 704 | (setq break (point)))) |
| 538 | (setq first nil) | ||
| 539 | (setq break (1- (point))))) | ||
| 540 | ((not break) | 705 | ((not break) |
| 541 | (if (not (looking-at "=\\?[^=]")) | 706 | (if (not (looking-at "=\\?[^=]")) |
| 542 | (if (eq (char-after) ?=) | 707 | (if (eq (char-after) ?=) |
| @@ -547,15 +712,17 @@ By default, the region is treated as containing addresses (see | |||
| 547 | (setq qword-break (point))) | 712 | (setq qword-break (point))) |
| 548 | (skip-chars-forward "^ \t\n\r"))) | 713 | (skip-chars-forward "^ \t\n\r"))) |
| 549 | (t | 714 | (t |
| 550 | (skip-chars-forward "^ \t\n\r")))) | 715 | (skip-chars-forward "^ \t\n\r"))) |
| 716 | (setq first nil)) | ||
| 551 | (when (and (or break qword-break) | 717 | (when (and (or break qword-break) |
| 552 | (> (- (point) bol) 76)) | 718 | (> (- (point) bol) 76)) |
| 553 | (goto-char (or break qword-break)) | 719 | (goto-char (or break qword-break)) |
| 554 | (setq break nil | 720 | (setq break nil |
| 555 | qword-break nil) | 721 | qword-break nil) |
| 556 | (if (looking-at "[ \t]") | 722 | (if (or (> 0 (skip-chars-backward " \t")) |
| 557 | (insert ?\n) | 723 | (looking-at "[ \t]")) |
| 558 | (insert "\n ")) | 724 | (insert ?\n) |
| 725 | (insert "\n ")) | ||
| 559 | (setq bol (1- (point))) | 726 | (setq bol (1- (point))) |
| 560 | ;; Don't break before the first non-LWSP characters. | 727 | ;; Don't break before the first non-LWSP characters. |
| 561 | (skip-chars-forward " \t") | 728 | (skip-chars-forward " \t") |
| @@ -590,48 +757,48 @@ By default, the region is treated as containing addresses (see | |||
| 590 | (setq eol (rfc2047-point-at-eol)) | 757 | (setq eol (rfc2047-point-at-eol)) |
| 591 | (forward-line 1))))) | 758 | (forward-line 1))))) |
| 592 | 759 | ||
| 593 | (defun rfc2047-b-encode-region (b e) | 760 | (defun rfc2047-b-encode-string (string) |
| 594 | "Base64-encode the header contained in region B to E." | 761 | "Base64-encode the header contained in STRING." |
| 595 | (save-restriction | 762 | (base64-encode-string string t)) |
| 596 | (narrow-to-region (goto-char b) e) | 763 | |
| 597 | (while (not (eobp)) | 764 | (defun rfc2047-q-encode-string (string) |
| 598 | (base64-encode-region (point) (progn (end-of-line) (point)) t) | 765 | "Quoted-printable-encode the header in STRING." |
| 599 | (if (and (bolp) (eolp)) | 766 | (mm-with-unibyte-buffer |
| 600 | (delete-backward-char 1)) | 767 | (insert string) |
| 601 | (forward-line)))) | 768 | (quoted-printable-encode-region |
| 602 | 769 | (point-min) (point-max) nil | |
| 603 | (defun rfc2047-q-encode-region (b e) | 770 | ;; = (\075), _ (\137), ? (\077) are used in the encoded word. |
| 604 | "Quoted-printable-encode the header in region B to E." | 771 | ;; Avoid using 8bit characters. |
| 605 | (save-excursion | 772 | ;; This list excludes `especials' (see the RFC2047 syntax), |
| 606 | (save-restriction | 773 | ;; meaning that some characters in non-structured fields will |
| 607 | (narrow-to-region (goto-char b) e) | 774 | ;; get encoded when they con't need to be. The following is |
| 608 | (let ((bol (save-restriction | 775 | ;; what it used to be. |
| 609 | (widen) | 776 | ;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?" |
| 610 | (rfc2047-point-at-bol)))) | 777 | ;;; "\010\012\014\040-\074\076\100-\136\140-\177") |
| 611 | (quoted-printable-encode-region | 778 | "-\b\n\f !#-'*+0-9A-Z\\^`-~\d") |
| 612 | b e nil | 779 | (subst-char-in-region (point-min) (point-max) ? ?_) |
| 613 | ;; = (\075), _ (\137), ? (\077) are used in the encoded word. | 780 | (buffer-string))) |
| 614 | ;; Avoid using 8bit characters. | 781 | |
| 615 | ;; This list excludes `especials' (see the RFC2047 syntax), | 782 | (defun rfc2047-encode-parameter (param value) |
| 616 | ;; meaning that some characters in non-structured fields will | 783 | "Return and PARAM=VALUE string encoded in the RFC2047-like style. |
| 617 | ;; get encoded when they con't need to be. The following is | 784 | This is a replacement for the `rfc2231-encode-string' function. |
| 618 | ;; what it used to be. | 785 | |
| 619 | ;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?" | 786 | When attaching files as MIME parts, we should use the RFC2231 encoding |
| 620 | ;;; "\010\012\014\040-\074\076\100-\136\140-\177") | 787 | to specify the file names containing non-ASCII characters. However, |
| 621 | "-\b\n\f !#-'*+0-9A-Z\\^`-~\d") | 788 | many mail softwares don't support it in practice and recipients won't |
| 622 | (subst-char-in-region (point-min) (point-max) ? ?_) | 789 | be able to extract files with correct names. Instead, the RFC2047-like |
| 623 | ;; The size of QP encapsulation is about 20, so set limit to | 790 | encoding is acceptable generally. This function provides the very |
| 624 | ;; 56=76-20. | 791 | RFC2047-like encoding, resigning to such a regrettable trend. To use |
| 625 | (unless (< (- (point-max) (point-min)) 56) | 792 | it, put the following line in your ~/.gnus.el file: |
| 626 | ;; Don't break if it could fit in one line. | 793 | |
| 627 | ;; Let rfc2047-encode-region break it later. | 794 | \(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter) |
| 628 | (goto-char (1+ (point-min))) | 795 | " |
| 629 | (while (and (not (bobp)) (not (eobp))) | 796 | (let* ((rfc2047-encoding-type 'mime) |
| 630 | (goto-char (min (point-max) (+ 56 bol))) | 797 | (rfc2047-encode-max-chars nil) |
| 631 | (search-backward "=" (- (point) 2) t) | 798 | (string (rfc2047-encode-string value))) |
| 632 | (unless (or (bobp) (eobp)) | 799 | (if (string-match (concat "[" ietf-drums-tspecials "]") string) |
| 633 | (insert ?\n) | 800 | (format "%s=%S" param string) |
| 634 | (setq bol (point))))))))) | 801 | (concat param "=" string)))) |
| 635 | 802 | ||
| 636 | ;;; | 803 | ;;; |
| 637 | ;;; Functions for decoding RFC2047 messages | 804 | ;;; Functions for decoding RFC2047 messages |
| @@ -639,8 +806,8 @@ By default, the region is treated as containing addresses (see | |||
| 639 | 806 | ||
| 640 | (eval-and-compile | 807 | (eval-and-compile |
| 641 | (defconst rfc2047-encoded-word-regexp | 808 | (defconst rfc2047-encoded-word-regexp |
| 642 | "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\ | 809 | "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(\\*[^?]+\\)?\ |
| 643 | \\?\\([!->@-~ +]*\\)\\?=")) | 810 | \\?\\(B\\|Q\\)\\?\\([!->@-~ ]*\\)\\?=")) |
| 644 | 811 | ||
| 645 | (defvar rfc2047-quote-decoded-words-containing-tspecials nil | 812 | (defvar rfc2047-quote-decoded-words-containing-tspecials nil |
| 646 | "If non-nil, quote decoded words containing special characters.") | 813 | "If non-nil, quote decoded words containing special characters.") |
| @@ -671,7 +838,7 @@ By default, the region is treated as containing addresses (see | |||
| 671 | "\\(\n?[ \t]\\)+" | 838 | "\\(\n?[ \t]\\)+" |
| 672 | "\\(" rfc2047-encoded-word-regexp "\\)")) | 839 | "\\(" rfc2047-encoded-word-regexp "\\)")) |
| 673 | nil t) | 840 | nil t) |
| 674 | (delete-region (goto-char (match-end 1)) (match-beginning 6))) | 841 | (delete-region (goto-char (match-end 1)) (match-beginning 7))) |
| 675 | ;; Decode the encoded words. | 842 | ;; Decode the encoded words. |
| 676 | (setq b (goto-char (point-min))) | 843 | (setq b (goto-char (point-min))) |
| 677 | (while (re-search-forward rfc2047-encoded-word-regexp nil t) | 844 | (while (re-search-forward rfc2047-encoded-word-regexp nil t) |
| @@ -774,7 +941,20 @@ By default, the region is treated as containing addresses (see | |||
| 774 | mail-parse-charset | 941 | mail-parse-charset |
| 775 | (not (eq mail-parse-charset 'us-ascii)) | 942 | (not (eq mail-parse-charset 'us-ascii)) |
| 776 | (not (eq mail-parse-charset 'gnus-decoded))) | 943 | (not (eq mail-parse-charset 'gnus-decoded))) |
| 777 | (mm-decode-coding-string string mail-parse-charset) | 944 | ;; `decode-coding-string' in Emacs offers a third optional |
| 945 | ;; arg NOCOPY to avoid consing a new string if the decoding | ||
| 946 | ;; is "trivial". Unfortunately it currently doesn't | ||
| 947 | ;; consider anything else than a `nil' coding system | ||
| 948 | ;; trivial. | ||
| 949 | ;; `rfc2047-decode-string' is called multiple times for each | ||
| 950 | ;; article during summary buffer generation, and we really | ||
| 951 | ;; want to avoid unnecessary consing. So we bypass | ||
| 952 | ;; `decode-coding-string' if the string is purely ASCII. | ||
| 953 | (if (and (fboundp 'detect-coding-string) | ||
| 954 | ;; string is purely ASCII | ||
| 955 | (eq (detect-coding-string string t) 'undecided)) | ||
| 956 | string | ||
| 957 | (mm-decode-coding-string string mail-parse-charset)) | ||
| 778 | (mm-string-as-multibyte string))))) | 958 | (mm-string-as-multibyte string))))) |
| 779 | 959 | ||
| 780 | (defun rfc2047-parse-and-decode (word) | 960 | (defun rfc2047-parse-and-decode (word) |
| @@ -787,8 +967,8 @@ decodable." | |||
| 787 | (condition-case nil | 967 | (condition-case nil |
| 788 | (rfc2047-decode | 968 | (rfc2047-decode |
| 789 | (match-string 1 word) | 969 | (match-string 1 word) |
| 790 | (upcase (match-string 2 word)) | 970 | (string-to-char (match-string 3 word)) |
| 791 | (match-string 3 word)) | 971 | (match-string 4 word)) |
| 792 | (error word)) | 972 | (error word)) |
| 793 | word))) ; un-decodable | 973 | word))) ; un-decodable |
| 794 | 974 | ||
| @@ -809,7 +989,7 @@ decodable." | |||
| 809 | 989 | ||
| 810 | (defun rfc2047-decode (charset encoding string) | 990 | (defun rfc2047-decode (charset encoding string) |
| 811 | "Decode STRING from the given MIME CHARSET in the given ENCODING. | 991 | "Decode STRING from the given MIME CHARSET in the given ENCODING. |
| 812 | Valid ENCODINGs are \"B\" and \"Q\". | 992 | Valid ENCODINGs are the characters \"B\" and \"Q\". |
| 813 | If your Emacs implementation can't decode CHARSET, return nil." | 993 | If your Emacs implementation can't decode CHARSET, return nil." |
| 814 | (if (stringp charset) | 994 | (if (stringp charset) |
| 815 | (setq charset (intern (downcase charset)))) | 995 | (setq charset (intern (downcase charset)))) |
| @@ -824,18 +1004,17 @@ If your Emacs implementation can't decode CHARSET, return nil." | |||
| 824 | (memq 'gnus-unknown mail-parse-ignored-charsets)) | 1004 | (memq 'gnus-unknown mail-parse-ignored-charsets)) |
| 825 | (setq cs (mm-charset-to-coding-system mail-parse-charset))) | 1005 | (setq cs (mm-charset-to-coding-system mail-parse-charset))) |
| 826 | (when cs | 1006 | (when cs |
| 827 | (when (and (eq cs 'ascii) | 1007 | (when (eq cs 'ascii) |
| 828 | mail-parse-charset) | 1008 | (setq cs (or mail-parse-charset 'raw-text))) |
| 829 | (setq cs mail-parse-charset)) | ||
| 830 | (mm-decode-coding-string | 1009 | (mm-decode-coding-string |
| 831 | (cond | 1010 | (cond |
| 832 | ((equal "B" encoding) | 1011 | ((char-equal ?B encoding) |
| 833 | (base64-decode-string | 1012 | (base64-decode-string |
| 834 | (rfc2047-pad-base64 string))) | 1013 | (rfc2047-pad-base64 string))) |
| 835 | ((equal "Q" encoding) | 1014 | ((char-equal ?Q encoding) |
| 836 | (quoted-printable-decode-string | 1015 | (quoted-printable-decode-string |
| 837 | (mm-replace-chars-in-string string ?_ ? ))) | 1016 | (mm-subst-char-in-string ?_ ? string t))) |
| 838 | (t (error "Invalid encoding: %s" encoding))) | 1017 | (t (error "Invalid encoding: %c" encoding))) |
| 839 | cs)))) | 1018 | cs)))) |
| 840 | 1019 | ||
| 841 | (provide 'rfc2047) | 1020 | (provide 'rfc2047) |
diff --git a/lisp/hl-line.el b/lisp/hl-line.el index a3e786dd801..e553636674b 100644 --- a/lisp/hl-line.el +++ b/lisp/hl-line.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; hl-line.el --- highlight the current line | 1 | ;;; hl-line.el --- highlight the current line |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1998, 2000, 2001, 2003 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1998, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Dave Love <fx@gnu.org> | 5 | ;; Author: Dave Love <fx@gnu.org> |
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| @@ -113,7 +113,7 @@ When `hl-line-sticky-flag' is nil, Hl-Line mode highlights the | |||
| 113 | line about point in the selected window only. In this case, it | 113 | line about point in the selected window only. In this case, it |
| 114 | uses the function `hl-line-unhighlight' on `pre-command-hook' in | 114 | uses the function `hl-line-unhighlight' on `pre-command-hook' in |
| 115 | addition to `hl-line-highlight' on `post-command-hook'." | 115 | addition to `hl-line-highlight' on `post-command-hook'." |
| 116 | nil nil nil | 116 | :group 'hl-line |
| 117 | (if hl-line-mode | 117 | (if hl-line-mode |
| 118 | (progn | 118 | (progn |
| 119 | ;; In case `kill-all-local-variables' is called. | 119 | ;; In case `kill-all-local-variables' is called. |
diff --git a/lisp/ido.el b/lisp/ido.el index 86a88d0d491..ddeecbb9b69 100644 --- a/lisp/ido.el +++ b/lisp/ido.el | |||
| @@ -1935,19 +1935,21 @@ If INITIAL is non-nil, it specifies the initial input string." | |||
| 1935 | ;; Internal function for ido-find-file and friends | 1935 | ;; Internal function for ido-find-file and friends |
| 1936 | (unless item | 1936 | (unless item |
| 1937 | (setq item 'file)) | 1937 | (setq item 'file)) |
| 1938 | (let* ((ido-current-directory (ido-expand-directory default)) | 1938 | (let ((ido-current-directory (ido-expand-directory default)) |
| 1939 | (ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory)) | 1939 | (ido-context-switch-command switch-cmd) |
| 1940 | (ido-directory-too-big (and (not ido-directory-nonreadable) | 1940 | ido-directory-nonreadable ido-directory-too-big |
| 1941 | (ido-directory-too-big-p ido-current-directory))) | 1941 | filename) |
| 1942 | (ido-context-switch-command switch-cmd) | 1942 | |
| 1943 | filename) | 1943 | (if (or (not ido-mode) (ido-is-slow-ftp-host)) |
| 1944 | 1944 | (setq filename t | |
| 1945 | (cond | 1945 | ido-exit 'fallback) |
| 1946 | ((or (not ido-mode) (ido-is-slow-ftp-host)) | 1946 | (setq ido-directory-nonreadable |
| 1947 | (setq filename t | 1947 | (ido-nonreadable-directory-p ido-current-directory) |
| 1948 | ido-exit 'fallback)) | 1948 | ido-directory-too-big |
| 1949 | 1949 | (and (not ido-directory-nonreadable) | |
| 1950 | ((and (eq item 'file) | 1950 | (ido-directory-too-big-p ido-current-directory)))) |
| 1951 | |||
| 1952 | (when (and (eq item 'file) | ||
| 1951 | (or ido-use-url-at-point ido-use-filename-at-point)) | 1953 | (or ido-use-url-at-point ido-use-filename-at-point)) |
| 1952 | (let (fn d) | 1954 | (let (fn d) |
| 1953 | (require 'ffap) | 1955 | (require 'ffap) |
| @@ -1966,7 +1968,7 @@ If INITIAL is non-nil, it specifies the initial input string." | |||
| 1966 | (setq d (file-name-directory fn)) | 1968 | (setq d (file-name-directory fn)) |
| 1967 | (file-directory-p d)) | 1969 | (file-directory-p d)) |
| 1968 | (setq ido-current-directory d) | 1970 | (setq ido-current-directory d) |
| 1969 | (setq initial (file-name-nondirectory fn))))))) | 1971 | (setq initial (file-name-nondirectory fn)))))) |
| 1970 | 1972 | ||
| 1971 | (let (ido-saved-vc-hb | 1973 | (let (ido-saved-vc-hb |
| 1972 | (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) | 1974 | (vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends)) |
diff --git a/lisp/iimage.el b/lisp/iimage.el index 9b183ebb01d..32f6aef9abd 100644 --- a/lisp/iimage.el +++ b/lisp/iimage.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; iimage.el --- Inline image minor mode. | 1 | ;;; iimage.el --- Inline image minor mode. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2004 Free Software Foundation | 3 | ;; Copyright (C) 2004, 2005 Free Software Foundation |
| 4 | 4 | ||
| 5 | ;; Author: KOSEKI Yoshinori <kose@meadowy.org> | 5 | ;; Author: KOSEKI Yoshinori <kose@meadowy.org> |
| 6 | ;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org> | 6 | ;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org> |
| @@ -51,6 +51,11 @@ | |||
| 51 | (eval-when-compile | 51 | (eval-when-compile |
| 52 | (require 'image-file)) | 52 | (require 'image-file)) |
| 53 | 53 | ||
| 54 | (defgroup iimage nil | ||
| 55 | "Support for inline images." | ||
| 56 | :version "22.1" | ||
| 57 | :group 'image) | ||
| 58 | |||
| 54 | (defconst iimage-version "1.1") | 59 | (defconst iimage-version "1.1") |
| 55 | (defvar iimage-mode nil) | 60 | (defvar iimage-mode nil) |
| 56 | (defvar iimage-mode-map nil) | 61 | (defvar iimage-mode-map nil) |
| @@ -137,7 +142,7 @@ With numeric ARG, display the images if and only if ARG is positive." | |||
| 137 | ;;;###autoload | 142 | ;;;###autoload |
| 138 | (define-minor-mode iimage-mode | 143 | (define-minor-mode iimage-mode |
| 139 | "Toggle inline image minor mode." | 144 | "Toggle inline image minor mode." |
| 140 | nil " iImg" iimage-mode-map | 145 | :group 'iimage :lighter " iImg" :keymap iimage-mode-map |
| 141 | (run-hooks 'iimage-mode-hook) | 146 | (run-hooks 'iimage-mode-hook) |
| 142 | (iimage-mode-buffer iimage-mode)) | 147 | (iimage-mode-buffer iimage-mode)) |
| 143 | 148 | ||
diff --git a/lisp/info.el b/lisp/info.el index 870e1ad89f6..cefe603a400 100644 --- a/lisp/info.el +++ b/lisp/info.el | |||
| @@ -3026,12 +3026,12 @@ if point is in a menu item description, follow that menu item." | |||
| 3026 | :help "Go to menu of visited nodes"] | 3026 | :help "Go to menu of visited nodes"] |
| 3027 | ["Table of Contents" Info-toc | 3027 | ["Table of Contents" Info-toc |
| 3028 | :help "Go to table of contents"] | 3028 | :help "Go to table of contents"] |
| 3029 | ("Index..." | 3029 | ("Index" |
| 3030 | ["Lookup a String" Info-index | 3030 | ["Lookup a String..." Info-index |
| 3031 | :help "Look for a string in the index items"] | 3031 | :help "Look for a string in the index items"] |
| 3032 | ["Next Matching Item" Info-index-next | 3032 | ["Next Matching Item" Info-index-next :active Info-index-alternatives |
| 3033 | :help "Look for another occurrence of previous item"] | 3033 | :help "Look for another occurrence of previous item"] |
| 3034 | ["Lookup a string in all indices" info-apropos | 3034 | ["Lookup a string in all indices..." info-apropos |
| 3035 | :help "Look for a string in the indices of all manuals"]) | 3035 | :help "Look for a string in the indices of all manuals"]) |
| 3036 | ["Edit" Info-edit :help "Edit contents of this node" | 3036 | ["Edit" Info-edit :help "Edit contents of this node" |
| 3037 | :active Info-enable-edit] | 3037 | :active Info-enable-edit] |
diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 727c9e6b9ff..77eb49807c0 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el | |||
| @@ -884,8 +884,8 @@ | |||
| 884 | (set-case-syntax-pair | 884 | (set-case-syntax-pair |
| 885 | (decode-char 'ucs (1- c)) (decode-char 'ucs c) tbl)) | 885 | (decode-char 'ucs (1- c)) (decode-char 'ucs c) tbl)) |
| 886 | (setq c (1+ c))) | 886 | (setq c (1+ c))) |
| 887 | ;;(set-downcase-syntax ?$,1 P(B ?i tbl) | 887 | (set-downcase-syntax ?$,1 P(B ?i tbl) |
| 888 | ;;(set-upcase-syntax ?I ?$,1 Q(B tbl) | 888 | (set-upcase-syntax ?I ?$,1 Q(B tbl) |
| 889 | (set-case-syntax-pair ?$,1 R(B ?$,1 S(B tbl) | 889 | (set-case-syntax-pair ?$,1 R(B ?$,1 S(B tbl) |
| 890 | (set-case-syntax-pair ?$,1 T(B ?$,1 U(B tbl) | 890 | (set-case-syntax-pair ?$,1 T(B ?$,1 U(B tbl) |
| 891 | (set-case-syntax-pair ?$,1 V(B ?$,1 W(B tbl) | 891 | (set-case-syntax-pair ?$,1 V(B ?$,1 W(B tbl) |
diff --git a/lisp/international/encoded-kb.el b/lisp/international/encoded-kb.el index aa6d35c340f..fdb35b34533 100644 --- a/lisp/international/encoded-kb.el +++ b/lisp/international/encoded-kb.el | |||
| @@ -269,7 +269,7 @@ automatically. | |||
| 269 | In Encoded-kbd mode, a text sent from keyboard is accepted | 269 | In Encoded-kbd mode, a text sent from keyboard is accepted |
| 270 | as a multilingual text encoded in a coding system set by | 270 | as a multilingual text encoded in a coding system set by |
| 271 | \\[set-keyboard-coding-system]." | 271 | \\[set-keyboard-coding-system]." |
| 272 | :global t | 272 | :global t :group 'keyboard :group 'mule |
| 273 | 273 | ||
| 274 | (if encoded-kbd-mode | 274 | (if encoded-kbd-mode |
| 275 | ;; We are turning on Encoded-kbd mode. | 275 | ;; We are turning on Encoded-kbd mode. |
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 86665d31ba8..5e9f3014dc2 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el | |||
| @@ -384,6 +384,7 @@ See also `coding-category-list' and `coding-system-category'." | |||
| 384 | ;; CODING-SYSTEM is no-conversion or undecided. | 384 | ;; CODING-SYSTEM is no-conversion or undecided. |
| 385 | (error "Can't prefer the coding system `%s'" coding-system)) | 385 | (error "Can't prefer the coding system `%s'" coding-system)) |
| 386 | (set coding-category (or base coding-system)) | 386 | (set coding-category (or base coding-system)) |
| 387 | ;; Changing the binding of a coding category requires this call. | ||
| 387 | (update-coding-systems-internal) | 388 | (update-coding-systems-internal) |
| 388 | (or (eq coding-category (car coding-category-list)) | 389 | (or (eq coding-category (car coding-category-list)) |
| 389 | ;; We must change the order. | 390 | ;; We must change the order. |
| @@ -1691,6 +1692,7 @@ The default status is as follows: | |||
| 1691 | coding-category-ccl | 1692 | coding-category-ccl |
| 1692 | coding-category-binary)) | 1693 | coding-category-binary)) |
| 1693 | 1694 | ||
| 1695 | ;; Changing the binding of a coding category requires this call. | ||
| 1694 | (update-coding-systems-internal) | 1696 | (update-coding-systems-internal) |
| 1695 | 1697 | ||
| 1696 | (set-default-coding-systems nil) | 1698 | (set-default-coding-systems nil) |
| @@ -1904,6 +1906,7 @@ of `buffer-file-coding-system' set by this function." | |||
| 1904 | (while priority | 1906 | (while priority |
| 1905 | (set (car categories) (car priority)) | 1907 | (set (car categories) (car priority)) |
| 1906 | (setq priority (cdr priority) categories (cdr categories))) | 1908 | (setq priority (cdr priority) categories (cdr categories))) |
| 1909 | ;; Changing the binding of a coding category requires this call. | ||
| 1907 | (update-coding-systems-internal))))) | 1910 | (update-coding-systems-internal))))) |
| 1908 | 1911 | ||
| 1909 | (defsubst princ-list (&rest args) | 1912 | (defsubst princ-list (&rest args) |
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el index 7c51409422b..8ac56b4bd65 100644 --- a/lisp/international/mule-util.el +++ b/lisp/international/mule-util.el | |||
| @@ -327,6 +327,7 @@ coding systems ordered by priority." | |||
| 327 | (mapc (function (lambda (x) (set (car x) (cdr x)))) | 327 | (mapc (function (lambda (x) (set (car x) (cdr x)))) |
| 328 | prio-list) | 328 | prio-list) |
| 329 | (set-coding-priority (mapcar #'car prio-list)) | 329 | (set-coding-priority (mapcar #'car prio-list)) |
| 330 | ;; Changing the binding of a coding category requires this call. | ||
| 330 | (update-coding-systems-internal) | 331 | (update-coding-systems-internal) |
| 331 | (detect-coding-region ,from ,to)) | 332 | (detect-coding-region ,from ,to)) |
| 332 | ;; We must restore the internal database. | 333 | ;; We must restore the internal database. |
diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 1ec546e22fd..49635652bb2 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el | |||
| @@ -1546,6 +1546,7 @@ text, and convert it in the temporary buffer. Otherwise, convert in-place." | |||
| 1546 | ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion) | 1546 | ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion) |
| 1547 | ("\\.\\(sx[dmicw]\\|tar\\|tgz\\)\\'" . no-conversion) | 1547 | ("\\.\\(sx[dmicw]\\|tar\\|tgz\\)\\'" . no-conversion) |
| 1548 | ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion) | 1548 | ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion) |
| 1549 | ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion) | ||
| 1549 | ("/#[^/]+#\\'" . emacs-mule)) | 1550 | ("/#[^/]+#\\'" . emacs-mule)) |
| 1550 | "Alist of filename patterns vs corresponding coding systems. | 1551 | "Alist of filename patterns vs corresponding coding systems. |
| 1551 | Each element looks like (REGEXP . CODING-SYSTEM). | 1552 | Each element looks like (REGEXP . CODING-SYSTEM). |
diff --git a/lisp/kmacro.el b/lisp/kmacro.el index c6a97bb3d34..20816fc7fea 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el | |||
| @@ -614,10 +614,13 @@ With numeric arg, repeat macro now that many times, | |||
| 614 | counting the definition just completed as the first repetition. | 614 | counting the definition just completed as the first repetition. |
| 615 | An argument of zero means repeat until error." | 615 | An argument of zero means repeat until error." |
| 616 | (interactive "P") | 616 | (interactive "P") |
| 617 | (end-kbd-macro arg #'kmacro-loop-setup-function) | 617 | ;; Isearch may push the kmacro-end-macro key sequence onto the macro. |
| 618 | (when (and last-kbd-macro (= (length last-kbd-macro) 0)) | 618 | ;; Just ignore it when executing the macro. |
| 619 | (message "Ignore empty macro") | 619 | (unless executing-kbd-macro |
| 620 | (kmacro-pop-ring))) | 620 | (end-kbd-macro arg #'kmacro-loop-setup-function) |
| 621 | (when (and last-kbd-macro (= (length last-kbd-macro) 0)) | ||
| 622 | (message "Ignore empty macro") | ||
| 623 | (kmacro-pop-ring)))) | ||
| 621 | 624 | ||
| 622 | 625 | ||
| 623 | ;;;###autoload | 626 | ;;;###autoload |
diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el index 09f84d6fad6..dea05a4c948 100644 --- a/lisp/language/thai-util.el +++ b/lisp/language/thai-util.el | |||
| @@ -1,10 +1,9 @@ | |||
| 1 | ;;; thai-util.el --- utilities for Thai -*- coding: iso-2022-7bit; -*- | 1 | ;;; thai-util.el --- utilities for Thai -*- coding: iso-2022-7bit; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | 3 | ;; Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2005 |
| 4 | ;; Licensed to the Free Software Foundation. | ||
| 5 | ;; Copyright (C) 2005 | ||
| 6 | ;; National Institute of Advanced Industrial Science and Technology (AIST) | 4 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
| 7 | ;; Registration Number H14PRO021 | 5 | ;; Registration Number H14PRO021 |
| 6 | ;; Copyright (C) 2000, 2001 Free Software Foundation, Inc. | ||
| 8 | 7 | ||
| 9 | ;; Keywords: mule, multilingual, thai | 8 | ;; Keywords: mule, multilingual, thai |
| 10 | 9 | ||
| @@ -279,7 +278,7 @@ if necessary." | |||
| 279 | 278 | ||
| 280 | (defun thai-compose-syllable (beg end &optional category-set string) | 279 | (defun thai-compose-syllable (beg end &optional category-set string) |
| 281 | (or category-set | 280 | (or category-set |
| 282 | (setq category-set | 281 | (setq category-set |
| 283 | (char-category-set (if string (aref string beg) (char-after beg))))) | 282 | (char-category-set (if string (aref string beg) (char-after beg))))) |
| 284 | (if (aref category-set ?c) | 283 | (if (aref category-set ?c) |
| 285 | ;; Starting with a consonant. We do relative composition. | 284 | ;; Starting with a consonant. We do relative composition. |
| @@ -288,9 +287,9 @@ if necessary." | |||
| 288 | (compose-region beg end)) | 287 | (compose-region beg end)) |
| 289 | ;; Vowel tone sequence. | 288 | ;; Vowel tone sequence. |
| 290 | (if string | 289 | (if string |
| 291 | (compose-string string beg end (list (aref string beg) '(Bc . Bc) | 290 | (compose-string string beg end (list (aref string beg) '(Bc . Bc) |
| 292 | (aref string (1+ beg)))) | 291 | (aref string (1+ beg)))) |
| 293 | (compose-region beg end (list (char-after beg) '(Bc . Bc) | 292 | (compose-region beg end (list (char-after beg) '(Bc . Bc) |
| 294 | (char-after (1+ beg)))))) | 293 | (char-after (1+ beg)))))) |
| 295 | (- end beg)) | 294 | (- end beg)) |
| 296 | 295 | ||
| @@ -348,7 +347,7 @@ The return value is number of composed characters." | |||
| 348 | (if string | 347 | (if string |
| 349 | (if (eq (string-match thai-composition-pattern string from) from) | 348 | (if (eq (string-match thai-composition-pattern string from) from) |
| 350 | (thai-compose-syllable from (match-end 0) nil string)) | 349 | (thai-compose-syllable from (match-end 0) nil string)) |
| 351 | (if (save-excursion | 350 | (if (save-excursion |
| 352 | (goto-char from) | 351 | (goto-char from) |
| 353 | (and (looking-at thai-composition-pattern) | 352 | (and (looking-at thai-composition-pattern) |
| 354 | (setq to (match-end 0)))) | 353 | (setq to (match-end 0)))) |
| @@ -376,12 +375,48 @@ The return value is number of composed characters." | |||
| 376 | ;;;###autoload | 375 | ;;;###autoload |
| 377 | (define-minor-mode thai-auto-composition-mode | 376 | (define-minor-mode thai-auto-composition-mode |
| 378 | "Minor mode for automatically correct Thai character composition." | 377 | "Minor mode for automatically correct Thai character composition." |
| 379 | nil nil nil | 378 | :group 'mule |
| 380 | (cond ((null thai-auto-composition-mode) | 379 | (cond ((null thai-auto-composition-mode) |
| 381 | (remove-hook 'after-change-functions 'thai-auto-composition)) | 380 | (remove-hook 'after-change-functions 'thai-auto-composition)) |
| 382 | (t | 381 | (t |
| 383 | (add-hook 'after-change-functions 'thai-auto-composition)))) | 382 | (add-hook 'after-change-functions 'thai-auto-composition)))) |
| 384 | 383 | ||
| 384 | ;; Thai-word-mode requires functions in the feature `thai-word'. | ||
| 385 | (require 'thai-word) | ||
| 386 | |||
| 387 | (defvar thai-word-mode-map | ||
| 388 | (let ((map (make-sparse-keymap))) | ||
| 389 | (define-key map [remap forward-word] 'thai-forward-word) | ||
| 390 | (define-key map [remap backward-word] 'thai-backward-word) | ||
| 391 | (define-key map [remap kill-word] 'thai-kill-word) | ||
| 392 | (define-key map [remap backward-kill-word] 'thai-backward-kill-word) | ||
| 393 | (define-key map [remap transpose-words] 'thai-transpose-words) | ||
| 394 | map) | ||
| 395 | "Keymap for `thai-word-mode'.") | ||
| 396 | |||
| 397 | (define-minor-mode thai-word-mode | ||
| 398 | "Minor mode to make word-oriented commands aware of Thai words. | ||
| 399 | The commands affected are \\[forward-word], \\[backward-word], \\[kill-word], \\[backward-kill-word], \\[transpose-words], and \\[fill-paragraph]." | ||
| 400 | :global t :group 'mule | ||
| 401 | (cond (thai-word-mode | ||
| 402 | ;; This enables linebreak between Thai characters. | ||
| 403 | (modify-category-entry (make-char 'thai-tis620) ?|) | ||
| 404 | ;; This enables linebreak at a Thai word boundary. | ||
| 405 | (put-charset-property 'thai-tis620 'fill-find-break-point-function | ||
| 406 | 'thai-fill-find-break-point)) | ||
| 407 | (t | ||
| 408 | (modify-category-entry (make-char 'thai-tis620) ?| nil t) | ||
| 409 | (put-charset-property 'thai-tis620 'fill-find-break-point-function | ||
| 410 | nil)))) | ||
| 411 | |||
| 412 | ;; Function to call on entering the Thai language environment. | ||
| 413 | (defun setup-thai-language-environment-internal () | ||
| 414 | (thai-word-mode 1)) | ||
| 415 | |||
| 416 | ;; Function to call on exiting the Thai language environment. | ||
| 417 | (defun exit-thai-language-environment-internal () | ||
| 418 | (thai-word-mode -1)) | ||
| 419 | |||
| 385 | ;; | 420 | ;; |
| 386 | (provide 'thai-util) | 421 | (provide 'thai-util) |
| 387 | 422 | ||
diff --git a/lisp/language/thai-word.el b/lisp/language/thai-word.el index 82f6fcdea6a..2548a44ea80 100644 --- a/lisp/language/thai-word.el +++ b/lisp/language/thai-word.el | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | ;;; thai-word.el -- find Thai word boundaries | 1 | ;;; thai-word.el -- find Thai word boundaries |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2000, 2001, 2002, 2003, 2004 | 3 | ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 |
| 4 | ;; Electrotechnical Laboratory, JAPAN. | 4 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
| 5 | ;; Registration Number H14PRO021 | ||
| 5 | 6 | ||
| 6 | ;; Author: Kenichi HANDA <handa@etl.go.jp> | 7 | ;; Author: Kenichi HANDA <handa@etl.go.jp> |
| 7 | 8 | ||
| @@ -72,13 +73,10 @@ | |||
| 72 | ;; which means that you can easily index the list character by | 73 | ;; which means that you can easily index the list character by |
| 73 | ;; character. | 74 | ;; character. |
| 74 | 75 | ||
| 75 | (defconst thai-word-table nil) | 76 | (defvar thai-word-table |
| 76 | 77 | (let ((table (list 'thai-words))) | |
| 77 | 78 | (dolist (elt | |
| 78 | ;; Set up `thai-word-table'. | 79 | ;;; The following is indented as this to minimize this file size. |
| 79 | |||
| 80 | (let | ||
| 81 | ((l | ||
| 82 | '("¡¡" | 80 | '("¡¡" |
| 83 | "¡¡Å" | 81 | "¡¡Å" |
| 84 | "¡¡Ø¸Àѳ±ì" | 82 | "¡¡Ø¸Àѳ±ì" |
| @@ -10732,11 +10730,10 @@ | |||
| 10732 | "äÎâ¡ÃÁÔàµÍÃì" | 10730 | "äÎâ¡ÃÁÔàµÍÃì" |
| 10733 | "äÎâ´Ã¤ÒÃìºÍ¹" | 10731 | "äÎâ´Ã¤ÒÃìºÍ¹" |
| 10734 | "äÎâÅ" | 10732 | "äÎâÅ" |
| 10735 | ))) | 10733 | )) |
| 10736 | (setq thai-word-table (list 'thai-words)) | 10734 | (set-nested-alist elt 1 table)) |
| 10737 | (while l | 10735 | table) |
| 10738 | (set-nested-alist (car l) 1 thai-word-table) | 10736 | "Nested alist of Thai words.") |
| 10739 | (setq l (cdr l)))) | ||
| 10740 | 10737 | ||
| 10741 | 10738 | ||
| 10742 | (defun thai-update-word-table (file &optional append) | 10739 | (defun thai-update-word-table (file &optional append) |
| @@ -10783,7 +10780,7 @@ the current word list." | |||
| 10783 | ;; character by character. | 10780 | ;; character by character. |
| 10784 | (while this | 10781 | (while this |
| 10785 | (setq pos (1+ pos) | 10782 | (setq pos (1+ pos) |
| 10786 | char (char-after pos) | 10783 | char (or (char-after pos) 0) |
| 10787 | category-set (char-category-set char)) | 10784 | category-set (char-category-set char)) |
| 10788 | ;; If the current sequence is recorded in `thai-word-table' | 10785 | ;; If the current sequence is recorded in `thai-word-table' |
| 10789 | ;; (i.e. (car THIS) is 1) and the following Thai character is | 10786 | ;; (i.e. (car THIS) is 1) and the following Thai character is |
| @@ -11042,6 +11039,33 @@ If COUNT is negative, move point forward (- COUNT) words." | |||
| 11042 | (thai-forward-word (- count))) | 11039 | (thai-forward-word (- count))) |
| 11043 | 11040 | ||
| 11044 | 11041 | ||
| 11042 | (defun thai-kill-word (arg) | ||
| 11043 | "Like kill-word but pay attention to Thai word boundaries. | ||
| 11044 | With argument, do this that many times." | ||
| 11045 | (interactive "p") | ||
| 11046 | (kill-region (point) (progn (thai-forward-word arg) (point)))) | ||
| 11047 | |||
| 11048 | |||
| 11049 | (defun thai-backward-kill-word (arg) | ||
| 11050 | "Like backward-kill-word but pay attention to Thai word boundaries." | ||
| 11051 | (interactive "p") | ||
| 11052 | (thai-kill-word (- arg))) | ||
| 11053 | |||
| 11054 | |||
| 11055 | (defun thai-transpose-words (arg) | ||
| 11056 | "Like transpose-words but pay attention to Thai word boundaries." | ||
| 11057 | (interactive "*p") | ||
| 11058 | (transpose-subr 'thai-forward-word arg)) | ||
| 11059 | |||
| 11060 | (defun thai-fill-find-break-point (linebeg) | ||
| 11061 | "Go to a line breaking position near point considering Thai word boundaries." | ||
| 11062 | (let ((pos (point))) | ||
| 11063 | (thai-forward-word -1) | ||
| 11064 | (when (<= (point) linebeg) | ||
| 11065 | (goto-char pos) | ||
| 11066 | (thai-forward-word 1)) | ||
| 11067 | (kinsoku linebeg))) | ||
| 11068 | |||
| 11045 | (provide 'thai-word) | 11069 | (provide 'thai-word) |
| 11046 | 11070 | ||
| 11047 | 11071 | ||
diff --git a/lisp/language/thai.el b/lisp/language/thai.el index 6b5df5c08b6..c14d0005a72 100644 --- a/lisp/language/thai.el +++ b/lisp/language/thai.el | |||
| @@ -1,10 +1,9 @@ | |||
| 1 | ;;; thai.el --- support for Thai -*- coding: iso-2022-7bit; no-byte-compile: t -*- | 1 | ;;; thai.el --- support for Thai -*- coding: iso-2022-7bit; no-byte-compile: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. | 3 | ;; Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2005 |
| 4 | ;; Licensed to the Free Software Foundation. | ||
| 5 | ;; Copyright (C) 2005 | ||
| 6 | ;; National Institute of Advanced Industrial Science and Technology (AIST) | 4 | ;; National Institute of Advanced Industrial Science and Technology (AIST) |
| 7 | ;; Registration Number H14PRO021 | 5 | ;; Registration Number H14PRO021 |
| 6 | ;; Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. | ||
| 8 | 7 | ||
| 9 | ;; Keywords: multilingual, Thai | 8 | ;; Keywords: multilingual, Thai |
| 10 | 9 | ||
| @@ -53,6 +52,8 @@ | |||
| 53 | (input-method . "thai-kesmanee") | 52 | (input-method . "thai-kesmanee") |
| 54 | (unibyte-display . thai-tis620) | 53 | (unibyte-display . thai-tis620) |
| 55 | (features thai-util) | 54 | (features thai-util) |
| 55 | (setup-function . setup-thai-language-environment-internal) | ||
| 56 | (exit-function . exit-thai-language-environment-internal) | ||
| 56 | (sample-text | 57 | (sample-text |
| 57 | . (thai-compose-string | 58 | . (thai-compose-string |
| 58 | (copy-sequence "Thai (,T@RIRd7B(B) ,TJ0GQ1J04U1$0CQ1:(B, ,TJ0GQ1J04U10$h1P(B"))) | 59 | (copy-sequence "Thai (,T@RIRd7B(B) ,TJ0GQ1J04U1$0CQ1:(B, ,TJ0GQ1J04U10$h1P(B"))) |
diff --git a/lisp/longlines.el b/lisp/longlines.el new file mode 100644 index 00000000000..ebfb7a660b0 --- /dev/null +++ b/lisp/longlines.el | |||
| @@ -0,0 +1,393 @@ | |||
| 1 | ;;; longlines.el --- automatically wrap long lines | ||
| 2 | |||
| 3 | ;; Copyright (C) 2000, 2001, 2004, 2005 by Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Authors: Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> | ||
| 6 | ;; Alex Schroeder <alex@gnu.org> | ||
| 7 | ;; Chong Yidong <cyd@stupidchicken.com> | ||
| 8 | ;; Maintainer: Chong Yidong <cyd@stupidchicken.com> | ||
| 9 | ;; Keywords: convenience | ||
| 10 | |||
| 11 | ;; This file is part of GNU Emacs. | ||
| 12 | |||
| 13 | ;; GNU Emacs is free software; you can redistribute it and/or modify | ||
| 14 | ;; it under the terms of the GNU General Public License as published by | ||
| 15 | ;; the Free Software Foundation; either version 2, or (at your option) | ||
| 16 | ;; any later version. | ||
| 17 | |||
| 18 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 19 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 20 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 21 | ;; GNU General Public License for more details. | ||
| 22 | |||
| 23 | ;; You should have received a copy of the GNU General Public License | ||
| 24 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | ||
| 25 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
| 26 | ;; Boston, MA 02111-1307, USA. | ||
| 27 | |||
| 28 | ;;; Commentary: | ||
| 29 | |||
| 30 | ;; Some text editors save text files with long lines, and they | ||
| 31 | ;; automatically break these lines at whitespace, without actually | ||
| 32 | ;; inserting any newline characters. When doing `M-q' in Emacs, you | ||
| 33 | ;; are inserting newline characters. Longlines mode provides a file | ||
| 34 | ;; format which wraps the long lines when reading a file and unwraps | ||
| 35 | ;; the lines when saving the file. It can also wrap and unwrap | ||
| 36 | ;; automatically as editing takes place. | ||
| 37 | |||
| 38 | ;; Special thanks to Rod Smith for many useful bug reports. | ||
| 39 | |||
| 40 | ;;; Code: | ||
| 41 | |||
| 42 | (require 'easy-mmode) | ||
| 43 | |||
| 44 | (defgroup longlines nil | ||
| 45 | "Automatic wrapping of long lines when loading files." | ||
| 46 | :group 'fill) | ||
| 47 | |||
| 48 | (defcustom longlines-auto-wrap t | ||
| 49 | "*Non-nil means long lines are automatically wrapped after each command. | ||
| 50 | Otherwise, you can perform filling using `fill-paragraph' or | ||
| 51 | `auto-fill-mode'. In any case, the soft newlines will be removed | ||
| 52 | when the file is saved to disk." | ||
| 53 | :group 'longlines | ||
| 54 | :type 'boolean) | ||
| 55 | |||
| 56 | (defcustom longlines-wrap-follows-window-size nil | ||
| 57 | "*Non-nil means wrapping and filling happen at the edge of the window. | ||
| 58 | Otherwise, `fill-column' is used, regardless of the window size. This | ||
| 59 | does not work well when the buffer is displayed in multiple windows | ||
| 60 | with differing widths." | ||
| 61 | :group 'longlines | ||
| 62 | :type 'boolean) | ||
| 63 | |||
| 64 | (defcustom longlines-show-hard-newlines nil | ||
| 65 | "*Non-nil means each hard newline is marked with a symbol. | ||
| 66 | You can also enable the display temporarily, using the command | ||
| 67 | `longlines-show-hard-newlines'" | ||
| 68 | :group 'longlines | ||
| 69 | :type 'boolean) | ||
| 70 | |||
| 71 | (defcustom longlines-show-effect (propertize "|\n" 'face 'escape-glyph) | ||
| 72 | "*A string to display when showing hard newlines. | ||
| 73 | This is used when `longlines-show-hard-newlines' is on." | ||
| 74 | :group 'longlines | ||
| 75 | :type 'string) | ||
| 76 | |||
| 77 | ;; Internal variables | ||
| 78 | |||
| 79 | (defvar longlines-wrap-beg nil) | ||
| 80 | (defvar longlines-wrap-end nil) | ||
| 81 | (defvar longlines-wrap-point nil) | ||
| 82 | (defvar longlines-showing nil) | ||
| 83 | |||
| 84 | (make-variable-buffer-local 'longlines-wrap-beg) | ||
| 85 | (make-variable-buffer-local 'longlines-wrap-end) | ||
| 86 | (make-variable-buffer-local 'longlines-wrap-point) | ||
| 87 | (make-variable-buffer-local 'longlines-showing) | ||
| 88 | |||
| 89 | ;; Mode | ||
| 90 | |||
| 91 | ;;;###autoload | ||
| 92 | (define-minor-mode longlines-mode | ||
| 93 | "Toggle Long Lines mode. | ||
| 94 | In Long Lines mode, long lines are wrapped if they extend beyond | ||
| 95 | `fill-column'. The soft newlines used for line wrapping will not | ||
| 96 | show up when the text is yanked or saved to disk. | ||
| 97 | |||
| 98 | If `longlines-auto-wrap' is non-nil, lines are automatically | ||
| 99 | wrapped whenever the buffer is changed. You can always call | ||
| 100 | `fill-paragraph' to fill individual paragraphs. | ||
| 101 | |||
| 102 | If `longlines-show-hard-newlines' is non-nil, hard newlines will | ||
| 103 | be marked by a symbol." | ||
| 104 | :group 'longlines :lighter " ll" | ||
| 105 | (if longlines-mode | ||
| 106 | ;; Turn on longlines mode | ||
| 107 | (progn | ||
| 108 | (use-hard-newlines 1 'never) | ||
| 109 | (set (make-local-variable 'require-final-newline) nil) | ||
| 110 | (add-to-list 'buffer-file-format 'longlines) | ||
| 111 | (add-hook 'change-major-mode-hook 'longlines-mode-off nil t) | ||
| 112 | (make-local-variable 'buffer-substring-filters) | ||
| 113 | (add-to-list 'buffer-substring-filters 'longlines-encode-string) | ||
| 114 | (when longlines-wrap-follows-window-size | ||
| 115 | (set (make-local-variable 'fill-column) | ||
| 116 | (- (window-width) window-min-width)) | ||
| 117 | (add-hook 'window-configuration-change-hook | ||
| 118 | 'longlines-window-change-function nil t)) | ||
| 119 | (let ((buffer-undo-list t) | ||
| 120 | (mod (buffer-modified-p))) | ||
| 121 | ;; Turning off undo is OK since (spaces + newlines) is | ||
| 122 | ;; conserved, except for a corner case in | ||
| 123 | ;; longlines-wrap-lines that we'll never encounter from here | ||
| 124 | (longlines-decode-region (point-min) (point-max)) | ||
| 125 | (longlines-wrap-region (point-min) (point-max)) | ||
| 126 | (set-buffer-modified-p mod)) | ||
| 127 | (when (and longlines-show-hard-newlines | ||
| 128 | (not longlines-showing)) | ||
| 129 | (longlines-show-hard-newlines)) | ||
| 130 | (when longlines-auto-wrap | ||
| 131 | (auto-fill-mode 0) | ||
| 132 | (add-hook 'after-change-functions | ||
| 133 | 'longlines-after-change-function nil t) | ||
| 134 | (add-hook 'post-command-hook | ||
| 135 | 'longlines-post-command-function nil t))) | ||
| 136 | ;; Turn off longlines mode | ||
| 137 | (setq buffer-file-format (delete 'longlines buffer-file-format)) | ||
| 138 | (if longlines-showing | ||
| 139 | (longlines-unshow-hard-newlines)) | ||
| 140 | (let ((buffer-undo-list t)) | ||
| 141 | (longlines-encode-region (point-min) (point-max))) | ||
| 142 | (remove-hook 'change-major-mode-hook 'longlines-mode-off t) | ||
| 143 | (remove-hook 'before-kill-functions 'longlines-encode-region t) | ||
| 144 | (remove-hook 'after-change-functions 'longlines-after-change-function t) | ||
| 145 | (remove-hook 'post-command-hook 'longlines-post-command-function t) | ||
| 146 | (remove-hook 'window-configuration-change-hook | ||
| 147 | 'longlines-window-change-function t) | ||
| 148 | (kill-local-variable 'fill-column))) | ||
| 149 | |||
| 150 | (defun longlines-mode-off () | ||
| 151 | "Turn off longlines mode. | ||
| 152 | This function exists to be called by `change-major-mode-hook' when the | ||
| 153 | major mode changes." | ||
| 154 | (longlines-mode 0)) | ||
| 155 | |||
| 156 | ;; Showing the effect of hard newlines in the buffer | ||
| 157 | |||
| 158 | (defface longlines-visible-face | ||
| 159 | '((t (:background "red"))) | ||
| 160 | "Face used to make hard newlines visible in `longlines-mode'.") | ||
| 161 | |||
| 162 | (defun longlines-show-hard-newlines (&optional arg) | ||
| 163 | "Make hard newlines visible by adding a face. | ||
| 164 | With optional argument ARG, make the hard newlines invisible again." | ||
| 165 | (interactive "P") | ||
| 166 | (let ((buffer-undo-list t) | ||
| 167 | (mod (buffer-modified-p))) | ||
| 168 | (if arg | ||
| 169 | (longlines-unshow-hard-newlines) | ||
| 170 | (setq longlines-showing t) | ||
| 171 | (longlines-show-region (point-min) (point-max))) | ||
| 172 | (set-buffer-modified-p mod))) | ||
| 173 | |||
| 174 | (defun longlines-show-region (beg end) | ||
| 175 | "Make hard newlines between BEG and END visible." | ||
| 176 | (let* ((pmin (min beg end)) | ||
| 177 | (pmax (max beg end)) | ||
| 178 | (pos (text-property-any pmin pmax 'hard t))) | ||
| 179 | (while pos | ||
| 180 | (put-text-property pos (1+ pos) 'display | ||
| 181 | (copy-sequence longlines-show-effect)) | ||
| 182 | (setq pos (text-property-any (1+ pos) pmax 'hard t))))) | ||
| 183 | |||
| 184 | (defun longlines-unshow-hard-newlines () | ||
| 185 | "Make hard newlines invisible again." | ||
| 186 | (interactive) | ||
| 187 | (setq longlines-showing nil) | ||
| 188 | (let ((pos (text-property-any (point-min) (point-max) 'hard t))) | ||
| 189 | (while pos | ||
| 190 | (remove-text-properties pos (1+ pos) '(display)) | ||
| 191 | (setq pos (text-property-any (1+ pos) (point-max) 'hard t))))) | ||
| 192 | |||
| 193 | ;; Wrapping the paragraphs. | ||
| 194 | |||
| 195 | (defun longlines-wrap-region (beg end) | ||
| 196 | "Wrap each successive line, starting with the line before BEG. | ||
| 197 | Stop when we reach lines after END that don't need wrapping, or the | ||
| 198 | end of the buffer." | ||
| 199 | (setq longlines-wrap-point (point)) | ||
| 200 | (goto-char beg) | ||
| 201 | (forward-line -1) | ||
| 202 | ;; Two successful longlines-wrap-line's in a row mean successive | ||
| 203 | ;; lines don't need wrapping. | ||
| 204 | (while (null (and (longlines-wrap-line) | ||
| 205 | (or (eobp) | ||
| 206 | (and (>= (point) end) | ||
| 207 | (longlines-wrap-line)))))) | ||
| 208 | (goto-char longlines-wrap-point)) | ||
| 209 | |||
| 210 | (defun longlines-wrap-line () | ||
| 211 | "If the current line needs to be wrapped, wrap it and return nil. | ||
| 212 | If wrapping is performed, point remains on the line. If the line does | ||
| 213 | not need to be wrapped, move point to the next line and return t." | ||
| 214 | (if (longlines-set-breakpoint) | ||
| 215 | (progn (backward-char 1) | ||
| 216 | (delete-char 1) | ||
| 217 | (insert-char ?\n 1) | ||
| 218 | nil) | ||
| 219 | (if (longlines-merge-lines-p) | ||
| 220 | (progn (end-of-line) | ||
| 221 | (delete-char 1) | ||
| 222 | ;; After certain commands (e.g. kill-line), there may be two | ||
| 223 | ;; successive soft newlines in the buffer. In this case, we | ||
| 224 | ;; replace these two newlines by a single space. Unfortunately, | ||
| 225 | ;; this breaks the conservation of (spaces + newlines), so we | ||
| 226 | ;; have to fiddle with longlines-wrap-point. | ||
| 227 | (if (or (bolp) (eolp)) | ||
| 228 | (if (> longlines-wrap-point (point)) | ||
| 229 | (setq longlines-wrap-point | ||
| 230 | (1- longlines-wrap-point))) | ||
| 231 | (insert-char ? 1)) | ||
| 232 | nil) | ||
| 233 | (forward-line 1) | ||
| 234 | t))) | ||
| 235 | |||
| 236 | (defun longlines-set-breakpoint () | ||
| 237 | "Place point where we should break the current line, and return t. | ||
| 238 | If the line should not be broken, return nil; point remains on the | ||
| 239 | line." | ||
| 240 | (move-to-column fill-column) | ||
| 241 | (if (and (re-search-forward "[^ ]" (line-end-position) 1) | ||
| 242 | (> (current-column) fill-column)) | ||
| 243 | ;; This line is too long. Can we break it? | ||
| 244 | (or (longlines-find-break-backward) | ||
| 245 | (progn (move-to-column fill-column) | ||
| 246 | (longlines-find-break-forward))))) | ||
| 247 | |||
| 248 | (defun longlines-find-break-backward () | ||
| 249 | "Move point backward to the first available breakpoint and return t. | ||
| 250 | If no breakpoint is found, return nil." | ||
| 251 | (and (search-backward " " (line-beginning-position) 1) | ||
| 252 | (save-excursion | ||
| 253 | (skip-chars-backward " " (line-beginning-position)) | ||
| 254 | (null (bolp))) | ||
| 255 | (progn (forward-char 1) | ||
| 256 | (if (and fill-nobreak-predicate | ||
| 257 | (run-hook-with-args-until-success | ||
| 258 | 'fill-nobreak-predicate)) | ||
| 259 | (progn (skip-chars-backward " " (line-beginning-position)) | ||
| 260 | (longlines-find-break-backward)) | ||
| 261 | t)))) | ||
| 262 | |||
| 263 | (defun longlines-find-break-forward () | ||
| 264 | "Move point forward to the first available breakpoint and return t. | ||
| 265 | If no break point is found, return nil." | ||
| 266 | (and (search-forward " " (line-end-position) 1) | ||
| 267 | (progn (skip-chars-forward " " (line-end-position)) | ||
| 268 | (null (eolp))) | ||
| 269 | (if (and fill-nobreak-predicate | ||
| 270 | (run-hook-with-args-until-success | ||
| 271 | 'fill-nobreak-predicate)) | ||
| 272 | (longlines-find-break-forward) | ||
| 273 | t))) | ||
| 274 | |||
| 275 | (defun longlines-merge-lines-p () | ||
| 276 | "Return t if part of the next line can fit onto the current line. | ||
| 277 | Otherwise, return nil. Text cannot be moved across hard newlines." | ||
| 278 | (save-excursion | ||
| 279 | (end-of-line) | ||
| 280 | (and (null (eobp)) | ||
| 281 | (null (get-text-property (point) 'hard)) | ||
| 282 | (let ((space (- fill-column (current-column)))) | ||
| 283 | (forward-line 1) | ||
| 284 | (if (eq (char-after) ? ) | ||
| 285 | t ; We can always merge some spaces | ||
| 286 | (<= (if (search-forward " " (line-end-position) 1) | ||
| 287 | (current-column) | ||
| 288 | (1+ (current-column))) | ||
| 289 | space)))))) | ||
| 290 | |||
| 291 | (defun longlines-decode-region (beg end) | ||
| 292 | "Turn all newlines between BEG and END into hard newlines." | ||
| 293 | (save-excursion | ||
| 294 | (goto-char (min beg end)) | ||
| 295 | (while (search-forward "\n" (max beg end) t) | ||
| 296 | (set-hard-newline-properties | ||
| 297 | (match-beginning 0) (match-end 0))))) | ||
| 298 | |||
| 299 | (defun longlines-encode-region (beg end &optional buffer) | ||
| 300 | "Replace each soft newline between BEG and END with exactly one space. | ||
| 301 | Hard newlines are left intact. The optional argument BUFFER exists for | ||
| 302 | compatibility with `format-alist', and is ignored." | ||
| 303 | (save-excursion | ||
| 304 | (let ((mod (buffer-modified-p))) | ||
| 305 | (goto-char (min beg end)) | ||
| 306 | (while (search-forward "\n" (max (max beg end)) t) | ||
| 307 | (unless (get-text-property (match-beginning 0) 'hard) | ||
| 308 | (replace-match " "))) | ||
| 309 | (set-buffer-modified-p mod) | ||
| 310 | end))) | ||
| 311 | |||
| 312 | (defun longlines-encode-string (string) | ||
| 313 | "Return a copy of STRING with each soft newline replaced by a space. | ||
| 314 | Hard newlines are left intact." | ||
| 315 | (let* ((str (copy-sequence string)) | ||
| 316 | (pos (string-match "\n" str))) | ||
| 317 | (while pos | ||
| 318 | (if (null (get-text-property pos 'hard str)) | ||
| 319 | (aset str pos ? )) | ||
| 320 | (setq pos (string-match "\n" str (1+ pos)))) | ||
| 321 | str)) | ||
| 322 | |||
| 323 | ;; Auto wrap | ||
| 324 | |||
| 325 | (defun longlines-auto-wrap (&optional arg) | ||
| 326 | "Turn on automatic line wrapping, and wrap the entire buffer. | ||
| 327 | With optional argument ARG, turn off line wrapping." | ||
| 328 | (interactive "P") | ||
| 329 | (remove-hook 'after-change-functions 'longlines-after-change-function t) | ||
| 330 | (remove-hook 'post-command-hook 'longlines-post-command-function t) | ||
| 331 | (if arg | ||
| 332 | (progn (setq longlines-auto-wrap nil) | ||
| 333 | (message "Auto wrap disabled.")) | ||
| 334 | (setq longlines-auto-wrap t) | ||
| 335 | (add-hook 'after-change-functions | ||
| 336 | 'longlines-after-change-function nil t) | ||
| 337 | (add-hook 'post-command-hook | ||
| 338 | 'longlines-post-command-function nil t) | ||
| 339 | (let ((mod (buffer-modified-p))) | ||
| 340 | (longlines-wrap-region (point-min) (point-max)) | ||
| 341 | (set-buffer-modified-p mod)) | ||
| 342 | (message "Auto wrap enabled."))) | ||
| 343 | |||
| 344 | (defun longlines-after-change-function (beg end len) | ||
| 345 | "Update `longlines-wrap-beg' and `longlines-wrap-end'. | ||
| 346 | This is called by `after-change-functions' to keep track of the region | ||
| 347 | that has changed." | ||
| 348 | (unless undo-in-progress | ||
| 349 | (setq longlines-wrap-beg | ||
| 350 | (if longlines-wrap-beg (min longlines-wrap-beg beg) beg)) | ||
| 351 | (setq longlines-wrap-end | ||
| 352 | (if longlines-wrap-end (max longlines-wrap-end end) end)))) | ||
| 353 | |||
| 354 | (defun longlines-post-command-function () | ||
| 355 | "Perform line wrapping on the parts of the buffer that have changed. | ||
| 356 | This is called by `post-command-hook' after each command." | ||
| 357 | (when longlines-wrap-beg | ||
| 358 | (cond ((or (eq this-command 'yank) | ||
| 359 | (eq this-command 'yank-pop)) | ||
| 360 | (longlines-decode-region (point) (mark t)) | ||
| 361 | (if longlines-showing | ||
| 362 | (longlines-show-region (point) (mark t)))) | ||
| 363 | ((and (eq this-command 'newline) longlines-showing) | ||
| 364 | (save-excursion | ||
| 365 | (if (search-backward "\n" nil t) | ||
| 366 | (longlines-show-region | ||
| 367 | (match-beginning 0) (match-end 0)))))) | ||
| 368 | (unless (or (eq this-command 'fill-paragraph) | ||
| 369 | (eq this-command 'fill-region)) | ||
| 370 | (longlines-wrap-region longlines-wrap-beg longlines-wrap-end)) | ||
| 371 | (setq longlines-wrap-beg nil) | ||
| 372 | (setq longlines-wrap-end nil))) | ||
| 373 | |||
| 374 | (defun longlines-window-change-function () | ||
| 375 | "Re-wrap the buffer if the window width has changed. | ||
| 376 | This is called by `window-size-change-functions'." | ||
| 377 | (when (/= fill-column (- (window-width) window-min-width)) | ||
| 378 | (setq fill-column (- (window-width) window-min-width)) | ||
| 379 | (let ((mod (buffer-modified-p))) | ||
| 380 | (longlines-wrap-region (point-min) (point-max)) | ||
| 381 | (set-buffer-modified-p mod)))) | ||
| 382 | |||
| 383 | ;; Loading and saving | ||
| 384 | |||
| 385 | (add-to-list | ||
| 386 | 'format-alist | ||
| 387 | (list 'longlines "Automatically wrap long lines." nil | ||
| 388 | 'longlines-decode-region 'longlines-encode-region t nil)) | ||
| 389 | |||
| 390 | (provide 'longlines) | ||
| 391 | |||
| 392 | ;; arch-tag: 3489d225-5506-47b9-8659-d8807b77c624 | ||
| 393 | ;;; longlines.el ends here | ||
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 559963589a1..de88b37d91e 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el | |||
| @@ -1622,13 +1622,15 @@ a remote mailbox, PASSWORD is the password if it should be | |||
| 1622 | supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD | 1622 | supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD |
| 1623 | is non-nil if the user has supplied the password interactively. | 1623 | is non-nil if the user has supplied the password interactively. |
| 1624 | " | 1624 | " |
| 1625 | (if (string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file) | 1625 | (cond |
| 1626 | ((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file) | ||
| 1626 | (let (got-password supplied-password | 1627 | (let (got-password supplied-password |
| 1627 | (proto (match-string 1 file)) | 1628 | (proto (match-string 1 file)) |
| 1628 | (user (match-string 3 file)) | 1629 | (user (match-string 3 file)) |
| 1629 | (pass (match-string 5 file)) | 1630 | (pass (match-string 5 file)) |
| 1630 | (host (substring file (or (match-end 2) | 1631 | (host (substring file (or (match-end 2) |
| 1631 | (+ 3 (match-end 1)))))) | 1632 | (+ 3 (match-end 1)))))) |
| 1633 | |||
| 1632 | (if (not pass) | 1634 | (if (not pass) |
| 1633 | (when rmail-remote-password-required | 1635 | (when rmail-remote-password-required |
| 1634 | (setq got-password (not (rmail-have-password))) | 1636 | (setq got-password (not (rmail-have-password))) |
| @@ -1645,8 +1647,22 @@ is non-nil if the user has supplied the password interactively. | |||
| 1645 | (list file | 1647 | (list file |
| 1646 | (or (string-equal proto "pop") (string-equal proto "imap")) | 1648 | (or (string-equal proto "pop") (string-equal proto "imap")) |
| 1647 | supplied-password | 1649 | supplied-password |
| 1648 | got-password))) | 1650 | got-password)))) |
| 1649 | (list file nil nil nil))) | 1651 | |
| 1652 | ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file) | ||
| 1653 | (let (got-password supplied-password | ||
| 1654 | (proto "pop") | ||
| 1655 | (user (match-string 1 file)) | ||
| 1656 | (host (match-string 3 file))) | ||
| 1657 | |||
| 1658 | (when rmail-remote-password-required | ||
| 1659 | (setq got-password (not (rmail-have-password))) | ||
| 1660 | (setq supplied-password (rmail-get-remote-password nil))) | ||
| 1661 | |||
| 1662 | (list file "pop" supplied-password got-password))) | ||
| 1663 | |||
| 1664 | (t | ||
| 1665 | (list file nil nil nil)))) | ||
| 1650 | 1666 | ||
| 1651 | (defun rmail-insert-inbox-text (files renamep) | 1667 | (defun rmail-insert-inbox-text (files renamep) |
| 1652 | ;; Detect a locked file now, so that we avoid moving mail | 1668 | ;; Detect a locked file now, so that we avoid moving mail |
| @@ -1686,15 +1702,7 @@ is non-nil if the user has supplied the password interactively. | |||
| 1686 | (expand-file-name buffer-file-name)))) | 1702 | (expand-file-name buffer-file-name)))) |
| 1687 | ;; Always use movemail to rename the file, | 1703 | ;; Always use movemail to rename the file, |
| 1688 | ;; since there can be mailboxes in various directories. | 1704 | ;; since there can be mailboxes in various directories. |
| 1689 | (setq movemail t) | 1705 | (if (not popmail) |
| 1690 | ;;; ;; If getting from mail spool directory, | ||
| 1691 | ;;; ;; use movemail to move rather than just renaming, | ||
| 1692 | ;;; ;; so as to interlock with the mailer. | ||
| 1693 | ;;; (setq movemail (string= file | ||
| 1694 | ;;; (file-truename | ||
| 1695 | ;;; (concat rmail-spool-directory | ||
| 1696 | ;;; (file-name-nondirectory file))))) | ||
| 1697 | (if (and movemail (not popmail)) | ||
| 1698 | (progn | 1706 | (progn |
| 1699 | ;; On some systems, /usr/spool/mail/foo is a directory | 1707 | ;; On some systems, /usr/spool/mail/foo is a directory |
| 1700 | ;; and the actual inbox is /usr/spool/mail/foo/foo. | 1708 | ;; and the actual inbox is /usr/spool/mail/foo/foo. |
| @@ -1716,23 +1724,6 @@ is non-nil if the user has supplied the password interactively. | |||
| 1716 | ((or (file-exists-p tofile) (and (not popmail) | 1724 | ((or (file-exists-p tofile) (and (not popmail) |
| 1717 | (not (file-exists-p file)))) | 1725 | (not (file-exists-p file)))) |
| 1718 | nil) | 1726 | nil) |
| 1719 | ((and (not movemail) (not popmail)) | ||
| 1720 | ;; Try copying. If that fails (perhaps no space) and | ||
| 1721 | ;; we're allowed to blow away the inbox, rename instead. | ||
| 1722 | (if rmail-preserve-inbox | ||
| 1723 | (copy-file file tofile nil) | ||
| 1724 | (condition-case nil | ||
| 1725 | (copy-file file tofile nil) | ||
| 1726 | (error | ||
| 1727 | ;; Third arg is t so we can replace existing file TOFILE. | ||
| 1728 | (rename-file file tofile t)))) | ||
| 1729 | ;; Make the real inbox file empty. | ||
| 1730 | ;; Leaving it deleted could cause lossage | ||
| 1731 | ;; because mailers often won't create the file. | ||
| 1732 | (if (not rmail-preserve-inbox) | ||
| 1733 | (condition-case () | ||
| 1734 | (write-region (point) (point) file) | ||
| 1735 | (file-error nil)))) | ||
| 1736 | (t | 1727 | (t |
| 1737 | (with-temp-buffer | 1728 | (with-temp-buffer |
| 1738 | (let ((errors (current-buffer))) | 1729 | (let ((errors (current-buffer))) |
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index 3f24c952d89..6b769f53801 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el | |||
| @@ -838,7 +838,7 @@ error occurs." | |||
| 838 | "Return the mail header field value associated with FIELD. | 838 | "Return the mail header field value associated with FIELD. |
| 839 | If there was no mail header with FIELD as its key, return the value of | 839 | If there was no mail header with FIELD as its key, return the value of |
| 840 | `sc-mumble'. FIELD is case insensitive." | 840 | `sc-mumble'. FIELD is case insensitive." |
| 841 | (or (cdr (assoc (downcase field) sc-mail-info)) sc-mumble)) | 841 | (or (cdr (assoc-string field sc-mail-info 'case-fold)) sc-mumble)) |
| 842 | 842 | ||
| 843 | (defun sc-mail-field-query (arg) | 843 | (defun sc-mail-field-query (arg) |
| 844 | "View the value of a mail field. | 844 | "View the value of a mail field. |
| @@ -916,8 +916,8 @@ Match addresses of the style ``<name[stuff]>.''" | |||
| 916 | "Get the full email address path from FROM. | 916 | "Get the full email address path from FROM. |
| 917 | AUTHOR is the author's name (which is removed from the address)." | 917 | AUTHOR is the author's name (which is removed from the address)." |
| 918 | (let ((eos (length from))) | 918 | (let ((eos (length from))) |
| 919 | (if (string-match (concat "\\(^\\|^\"\\)" author | 919 | (if (string-match (concat "\\`\"?" (regexp-quote author) |
| 920 | "\\(\\s +\\|\"\\s +\\)") from 0) | 920 | "\"?\\s +") from 0) |
| 921 | (let ((address (substring from (match-end 0) eos))) | 921 | (let ((address (substring from (match-end 0) eos))) |
| 922 | (if (and (= (aref address 0) ?<) | 922 | (if (and (= (aref address 0) ?<) |
| 923 | (= (aref address (1- (length address))) ?>)) | 923 | (= (aref address (1- (length address))) ?>)) |
| @@ -1866,10 +1866,11 @@ Note on function names in this list: all functions of the form | |||
| 1866 | 1866 | ||
| 1867 | (define-minor-mode sc-minor-mode | 1867 | (define-minor-mode sc-minor-mode |
| 1868 | "Supercite minor mode." | 1868 | "Supercite minor mode." |
| 1869 | nil (" SC" (sc-auto-fill-region-p | 1869 | :group 'supercite |
| 1870 | (":f" (sc-fixup-whitespace-p "w")) | 1870 | :lighter (" SC" (sc-auto-fill-region-p |
| 1871 | (sc-fixup-whitespace-p ":w"))) | 1871 | (":f" (sc-fixup-whitespace-p "w")) |
| 1872 | `((,sc-mode-map-prefix . ,sc-mode-map))) | 1872 | (sc-fixup-whitespace-p ":w"))) |
| 1873 | :keymap `((,sc-mode-map-prefix . ,sc-mode-map))) | ||
| 1873 | 1874 | ||
| 1874 | ;;;###autoload | 1875 | ;;;###autoload |
| 1875 | (defun sc-cite-original () | 1876 | (defun sc-cite-original () |
| @@ -2054,5 +2055,5 @@ more information. Info node `(SC)Top'." | |||
| 2054 | (provide 'supercite) | 2055 | (provide 'supercite) |
| 2055 | (run-hooks 'sc-load-hook) | 2056 | (run-hooks 'sc-load-hook) |
| 2056 | 2057 | ||
| 2057 | ;;; arch-tag: a5d5bfa6-3bd5-4414-8c65-0afc83e45cd3 | 2058 | ;; arch-tag: a5d5bfa6-3bd5-4414-8c65-0afc83e45cd3 |
| 2058 | ;;; supercite.el ends here | 2059 | ;;; supercite.el ends here |
diff --git a/lisp/master.el b/lisp/master.el index ce4144f087c..b9908e82b55 100644 --- a/lisp/master.el +++ b/lisp/master.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; master.el --- make a buffer the master over another buffer | 1 | ;;; master.el --- make a buffer the master over another buffer |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999, 2000, 2001 Alexander Schroeder | 3 | ;; Copyright (C) 1999, 2000, 2001, 2005 Alexander Schroeder |
| 4 | 4 | ||
| 5 | ;; Author: Alex Schroeder <alex@gnu.org> | 5 | ;; Author: Alex Schroeder <alex@gnu.org> |
| 6 | ;; Maintainer: Alex Schroeder <alex@gnu.org> | 6 | ;; Maintainer: Alex Schroeder <alex@gnu.org> |
| @@ -55,7 +55,10 @@ | |||
| 55 | 55 | ||
| 56 | ;;; Code: | 56 | ;;; Code: |
| 57 | 57 | ||
| 58 | (require 'easy-mmode) | 58 | (defgroup master nil |
| 59 | "Support for master/slave relationships between buffers." | ||
| 60 | :version "22.1" | ||
| 61 | :group 'convenience) | ||
| 59 | 62 | ||
| 60 | ;; Variables that don't need initialization. | 63 | ;; Variables that don't need initialization. |
| 61 | 64 | ||
| @@ -83,16 +86,13 @@ following commands: | |||
| 83 | The slave buffer is stored in the buffer-local variable `master-of'. | 86 | The slave buffer is stored in the buffer-local variable `master-of'. |
| 84 | You can set this variable using `master-set-slave'. You can show | 87 | You can set this variable using `master-set-slave'. You can show |
| 85 | yourself the value of `master-of' by calling `master-show-slave'." | 88 | yourself the value of `master-of' by calling `master-show-slave'." |
| 86 | ;; The initial value. | 89 | :group 'master |
| 87 | nil | 90 | :keymap |
| 88 | ;; The indicator for the mode line. | 91 | '(("\C-c\C-n" . master-says-scroll-up) |
| 89 | nil | 92 | ("\C-c\C-p" . master-says-scroll-down) |
| 90 | ;; The minor mode bindings. | 93 | ("\C-c<" . master-says-beginning-of-buffer) |
| 91 | '(("\C-c\C-n" . master-says-scroll-up) | 94 | ("\C-c>" . master-says-end-of-buffer) |
| 92 | ("\C-c\C-p" . master-says-scroll-down) | 95 | ("\C-c\C-l" . master-says-recenter))) |
| 93 | ("\C-c<" . master-says-beginning-of-buffer) | ||
| 94 | ("\C-c>" . master-says-end-of-buffer) | ||
| 95 | ("\C-c\C-l" . master-says-recenter))) | ||
| 96 | 96 | ||
| 97 | ;; Initialize Master mode by setting a slave buffer. | 97 | ;; Initialize Master mode by setting a slave buffer. |
| 98 | 98 | ||
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index d988cae1260..273d4739b4d 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el | |||
| @@ -136,7 +136,7 @@ A large number or nil slows down menu responsiveness." | |||
| 136 | '(menu-item "--")) | 136 | '(menu-item "--")) |
| 137 | 137 | ||
| 138 | (define-key menu-bar-file-menu [recover-session] | 138 | (define-key menu-bar-file-menu [recover-session] |
| 139 | '(menu-item "Recover Crashed Session..." recover-session | 139 | '(menu-item "Recover Crashed Session" recover-session |
| 140 | :enable (and auto-save-list-file-prefix | 140 | :enable (and auto-save-list-file-prefix |
| 141 | (file-directory-p | 141 | (file-directory-p |
| 142 | (file-name-directory auto-save-list-file-prefix)) | 142 | (file-name-directory auto-save-list-file-prefix)) |
| @@ -298,7 +298,7 @@ A large number or nil slows down menu responsiveness." | |||
| 298 | '(menu-item "Continue Tags Search" tags-loop-continue | 298 | '(menu-item "Continue Tags Search" tags-loop-continue |
| 299 | :help "Continue last tags search operation")) | 299 | :help "Continue last tags search operation")) |
| 300 | (define-key menu-bar-search-menu [tags-srch] | 300 | (define-key menu-bar-search-menu [tags-srch] |
| 301 | '(menu-item "Search tagged files" tags-search | 301 | '(menu-item "Search tagged files..." tags-search |
| 302 | :help "Search for a regexp in all tagged files")) | 302 | :help "Search for a regexp in all tagged files")) |
| 303 | (define-key menu-bar-search-menu [separator-tag-search] | 303 | (define-key menu-bar-search-menu [separator-tag-search] |
| 304 | '(menu-item "--")) | 304 | '(menu-item "--")) |
| @@ -342,7 +342,7 @@ A large number or nil slows down menu responsiveness." | |||
| 342 | '(menu-item "Continue Replace" tags-loop-continue | 342 | '(menu-item "Continue Replace" tags-loop-continue |
| 343 | :help "Continue last tags replace operation")) | 343 | :help "Continue last tags replace operation")) |
| 344 | (define-key menu-bar-replace-menu [tags-repl] | 344 | (define-key menu-bar-replace-menu [tags-repl] |
| 345 | '(menu-item "Replace in tagged files" tags-query-replace | 345 | '(menu-item "Replace in tagged files..." tags-query-replace |
| 346 | :help "Interactively replace a regexp in all tagged files")) | 346 | :help "Interactively replace a regexp in all tagged files")) |
| 347 | (define-key menu-bar-replace-menu [separator-replace-tags] | 347 | (define-key menu-bar-replace-menu [separator-replace-tags] |
| 348 | '(menu-item "--")) | 348 | '(menu-item "--")) |
| @@ -377,14 +377,14 @@ A large number or nil slows down menu responsiveness." | |||
| 377 | (defvar menu-bar-goto-menu (make-sparse-keymap "Go To")) | 377 | (defvar menu-bar-goto-menu (make-sparse-keymap "Go To")) |
| 378 | 378 | ||
| 379 | (define-key menu-bar-goto-menu [set-tags-name] | 379 | (define-key menu-bar-goto-menu [set-tags-name] |
| 380 | '(menu-item "Set Tags File Name" visit-tags-table | 380 | '(menu-item "Set Tags File Name..." visit-tags-table |
| 381 | :help "Tell Tags commands which tag table file to use")) | 381 | :help "Tell Tags commands which tag table file to use")) |
| 382 | 382 | ||
| 383 | (define-key menu-bar-goto-menu [separator-tag-file] | 383 | (define-key menu-bar-goto-menu [separator-tag-file] |
| 384 | '(menu-item "--")) | 384 | '(menu-item "--")) |
| 385 | 385 | ||
| 386 | (define-key menu-bar-goto-menu [apropos-tags] | 386 | (define-key menu-bar-goto-menu [apropos-tags] |
| 387 | '(menu-item "Tags Apropos" tags-apropos | 387 | '(menu-item "Tags Apropos..." tags-apropos |
| 388 | :help "Find function/variables whose names match regexp")) | 388 | :help "Find function/variables whose names match regexp")) |
| 389 | (define-key menu-bar-goto-menu [next-tag-otherw] | 389 | (define-key menu-bar-goto-menu [next-tag-otherw] |
| 390 | '(menu-item "Next Tag in Other Window" | 390 | '(menu-item "Next Tag in Other Window" |
| @@ -673,7 +673,7 @@ by \"Save Options\" in Custom buffers.") | |||
| 673 | '("--")) | 673 | '("--")) |
| 674 | 674 | ||
| 675 | (define-key menu-bar-options-menu [mouse-set-font] | 675 | (define-key menu-bar-options-menu [mouse-set-font] |
| 676 | '(menu-item "Set Font/Fontset" mouse-set-font | 676 | '(menu-item "Set Font/Fontset..." mouse-set-font |
| 677 | :visible (display-multi-font-p) | 677 | :visible (display-multi-font-p) |
| 678 | :help "Select a font from list of known fonts/fontsets")) | 678 | :help "Select a font from list of known fonts/fontsets")) |
| 679 | 679 | ||
| @@ -1332,10 +1332,10 @@ key (or menu-item)")) | |||
| 1332 | (define-key menu-bar-manuals-menu [sep3] | 1332 | (define-key menu-bar-manuals-menu [sep3] |
| 1333 | '("--")) | 1333 | '("--")) |
| 1334 | (define-key menu-bar-manuals-menu [command] | 1334 | (define-key menu-bar-manuals-menu [command] |
| 1335 | '(menu-item "Find Command in Manual" Info-goto-emacs-command-node | 1335 | '(menu-item "Find Command in Manual..." Info-goto-emacs-command-node |
| 1336 | :help "Display manual section that describes a command")) | 1336 | :help "Display manual section that describes a command")) |
| 1337 | (define-key menu-bar-manuals-menu [key] | 1337 | (define-key menu-bar-manuals-menu [key] |
| 1338 | '(menu-item "Find Key in Manual" Info-goto-emacs-key-command-node | 1338 | '(menu-item "Find Key in Manual..." Info-goto-emacs-key-command-node |
| 1339 | :help "Display manual section that describes a key")) | 1339 | :help "Display manual section that describes a key")) |
| 1340 | 1340 | ||
| 1341 | (define-key menu-bar-help-menu [eliza] | 1341 | (define-key menu-bar-help-menu [eliza] |
| @@ -1369,7 +1369,7 @@ key (or menu-item)")) | |||
| 1369 | (define-key menu-bar-help-menu [sep2] | 1369 | (define-key menu-bar-help-menu [sep2] |
| 1370 | '("--")) | 1370 | '("--")) |
| 1371 | (define-key menu-bar-help-menu [finder-by-keyword] | 1371 | (define-key menu-bar-help-menu [finder-by-keyword] |
| 1372 | '(menu-item "Find Emacs Packages..." finder-by-keyword | 1372 | '(menu-item "Find Emacs Packages" finder-by-keyword |
| 1373 | :help "Find packages and features by keyword")) | 1373 | :help "Find packages and features by keyword")) |
| 1374 | (define-key menu-bar-help-menu [manuals] | 1374 | (define-key menu-bar-help-menu [manuals] |
| 1375 | (list 'menu-item "More Manuals" menu-bar-manuals-menu | 1375 | (list 'menu-item "More Manuals" menu-bar-manuals-menu |
diff --git a/lisp/mouse.el b/lisp/mouse.el index fdc99205780..a409efadeca 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | :version "22.1" | 49 | :version "22.1" |
| 50 | :group 'mouse) | 50 | :group 'mouse) |
| 51 | 51 | ||
| 52 | (defcustom mouse-1-click-follows-link 350 | 52 | (defcustom mouse-1-click-follows-link 450 |
| 53 | "Non-nil means that clicking Mouse-1 on a link follows the link. | 53 | "Non-nil means that clicking Mouse-1 on a link follows the link. |
| 54 | 54 | ||
| 55 | With the default setting, an ordinary Mouse-1 click on a link | 55 | With the default setting, an ordinary Mouse-1 click on a link |
| @@ -837,6 +837,29 @@ at the same position." | |||
| 837 | (funcall action pos)) | 837 | (funcall action pos)) |
| 838 | (t action))))))) | 838 | (t action))))))) |
| 839 | 839 | ||
| 840 | (defun mouse-fixup-help-message (msg) | ||
| 841 | "Fix help message MSG for `mouse-1-click-follows-link'." | ||
| 842 | (let (mp pos) | ||
| 843 | (if (and mouse-1-click-follows-link | ||
| 844 | (stringp msg) | ||
| 845 | (save-match-data | ||
| 846 | (string-match "^mouse-2" msg)) | ||
| 847 | (setq mp (mouse-pixel-position)) | ||
| 848 | (consp (setq pos (cdr mp))) | ||
| 849 | (car pos) (>= (car pos) 0) | ||
| 850 | (cdr pos) (>= (cdr pos) 0) | ||
| 851 | (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp))) | ||
| 852 | (windowp (posn-window pos))) | ||
| 853 | (with-current-buffer (window-buffer (posn-window pos)) | ||
| 854 | (if (mouse-on-link-p pos) | ||
| 855 | (setq msg (concat | ||
| 856 | (cond | ||
| 857 | ((eq mouse-1-click-follows-link 'double) "double-") | ||
| 858 | ((and (integerp mouse-1-click-follows-link) | ||
| 859 | (< mouse-1-click-follows-link 0)) "Long ") | ||
| 860 | (t "")) | ||
| 861 | "mouse-1" (substring msg 7))))))) | ||
| 862 | msg) | ||
| 840 | 863 | ||
| 841 | (defun mouse-drag-region-1 (start-event) | 864 | (defun mouse-drag-region-1 (start-event) |
| 842 | (mouse-minibuffer-check start-event) | 865 | (mouse-minibuffer-check start-event) |
| @@ -886,6 +909,7 @@ at the same position." | |||
| 886 | (track-mouse | 909 | (track-mouse |
| 887 | (while (progn | 910 | (while (progn |
| 888 | (setq event (read-event)) | 911 | (setq event (read-event)) |
| 912 | (setq mve (cons event (and (boundp 'mve) mve))) | ||
| 889 | (or (mouse-movement-p event) | 913 | (or (mouse-movement-p event) |
| 890 | (memq (car-safe event) '(switch-frame select-window)))) | 914 | (memq (car-safe event) '(switch-frame select-window)))) |
| 891 | (if (memq (car-safe event) '(switch-frame select-window)) | 915 | (if (memq (car-safe event) '(switch-frame select-window)) |
| @@ -997,7 +1021,7 @@ at the same position." | |||
| 997 | (= (window-start start-window) | 1021 | (= (window-start start-window) |
| 998 | start-window-start))) | 1022 | start-window-start))) |
| 999 | (if (and on-link | 1023 | (if (and on-link |
| 1000 | (not end-point) | 1024 | (or (not end-point) (= end-point start-point)) |
| 1001 | (consp event) | 1025 | (consp event) |
| 1002 | (or remap-double-click | 1026 | (or remap-double-click |
| 1003 | (and | 1027 | (and |
diff --git a/lisp/msb.el b/lisp/msb.el index 2ab7fe5491d..0bcdad314a6 100644 --- a/lisp/msb.el +++ b/lisp/msb.el | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; msb.el --- customizable buffer-selection with multiple menus | 1 | ;;; msb.el --- customizable buffer-selection with multiple menus |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1993, 94, 95, 97, 98, 99, 2000, 2001, 2003 | 3 | ;; Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2003, |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; 2005 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Lars Lindberg <lars.lindberg@home.se> | 6 | ;; Author: Lars Lindberg <lars.lindberg@home.se> |
| 7 | ;; Maintainer: FSF | 7 | ;; Maintainer: FSF |
| @@ -1141,7 +1141,7 @@ variable `msb-menu-cond'." | |||
| 1141 | With arg, turn Msb mode on if and only if arg is positive. | 1141 | With arg, turn Msb mode on if and only if arg is positive. |
| 1142 | This mode overrides the binding(s) of `mouse-buffer-menu' to provide a | 1142 | This mode overrides the binding(s) of `mouse-buffer-menu' to provide a |
| 1143 | different buffer menu using the function `msb'." | 1143 | different buffer menu using the function `msb'." |
| 1144 | :global t | 1144 | :global t :group 'msb |
| 1145 | (if msb-mode | 1145 | (if msb-mode |
| 1146 | (progn | 1146 | (progn |
| 1147 | (add-hook 'menu-bar-update-hook 'msb-menu-bar-update-buffers) | 1147 | (add-hook 'menu-bar-update-hook 'msb-menu-bar-update-buffers) |
diff --git a/lisp/international/iso-acc.el b/lisp/obsolete/iso-acc.el index 6c94f4aa562..740fa942c13 100644 --- a/lisp/international/iso-acc.el +++ b/lisp/obsolete/iso-acc.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; iso-acc.el --- minor mode providing electric accent keys | 1 | ;;; iso-acc.el --- minor mode providing electric accent keys |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1993, 1994, 1996, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1993, 1994, 1996, 2001, 2002, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: Johan Vromans | 6 | ;; Author: Johan Vromans |
| 6 | ;; Maintainer: FSF | 7 | ;; Maintainer: FSF |
| @@ -487,5 +488,5 @@ Noninteractively, this operates on text from START to END." | |||
| 487 | 488 | ||
| 488 | (add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup) | 489 | (add-hook 'minibuffer-setup-hook 'iso-acc-minibuf-setup) |
| 489 | 490 | ||
| 490 | ;;; arch-tag: 149ff409-7c3e-4574-9b5d-ac038939c0a6 | 491 | ;; arch-tag: 149ff409-7c3e-4574-9b5d-ac038939c0a6 |
| 491 | ;;; iso-acc.el ends here | 492 | ;;; iso-acc.el ends here |
diff --git a/lisp/pcvs.el b/lisp/pcvs.el index b00de07e50f..e7139d9cfba 100644 --- a/lisp/pcvs.el +++ b/lisp/pcvs.el | |||
| @@ -358,7 +358,7 @@ from the current buffer." | |||
| 358 | (dir default-directory) | 358 | (dir default-directory) |
| 359 | (buf (cond | 359 | (buf (cond |
| 360 | (name (cvs-get-buffer-create name)) | 360 | (name (cvs-get-buffer-create name)) |
| 361 | ((and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer)) | 361 | ((and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer)) |
| 362 | cvs-temp-buffer) | 362 | cvs-temp-buffer) |
| 363 | (t | 363 | (t |
| 364 | (set (make-local-variable 'cvs-temp-buffer) | 364 | (set (make-local-variable 'cvs-temp-buffer) |
| @@ -528,39 +528,49 @@ If non-nil, NEW means to create a new buffer no matter what." | |||
| 528 | (files (nth 1 dir+files+rest)) | 528 | (files (nth 1 dir+files+rest)) |
| 529 | (rest (nth 2 dir+files+rest))) | 529 | (rest (nth 2 dir+files+rest))) |
| 530 | 530 | ||
| 531 | ;; setup the (current) process buffer | ||
| 532 | (set (make-local-variable 'cvs-postprocess) | ||
| 533 | (if (null rest) | ||
| 534 | ;; this is the last invocation | ||
| 535 | postprocess | ||
| 536 | ;; else, we have to register ourselves to be rerun on the rest | ||
| 537 | `(cvs-run-process ',args ',rest ',postprocess ',single-dir))) | ||
| 538 | (add-hook 'kill-buffer-hook | 531 | (add-hook 'kill-buffer-hook |
| 539 | (lambda () | 532 | (lambda () |
| 540 | (let ((proc (get-buffer-process (current-buffer)))) | 533 | (let ((proc (get-buffer-process (current-buffer)))) |
| 541 | (when (processp proc) | 534 | (when (processp proc) |
| 542 | (set-process-filter proc nil) | 535 | (set-process-filter proc nil) |
| 543 | (set-process-sentinel proc nil) | 536 | ;; Abort postprocessing but leave the sentinel so it |
| 544 | (delete-process proc)))) | 537 | ;; will update the list of running procs. |
| 538 | (process-put proc 'cvs-postprocess nil) | ||
| 539 | (interrupt-process proc)))) | ||
| 545 | nil t) | 540 | nil t) |
| 546 | 541 | ||
| 547 | ;; create the new process and setup the procbuffer correspondingly | 542 | ;; create the new process and setup the procbuffer correspondingly |
| 548 | (let* ((args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery) | 543 | (let* ((msg (cvs-header-msg args fis)) |
| 544 | (args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery) | ||
| 549 | (if cvs-cvsroot (list "-d" cvs-cvsroot)) | 545 | (if cvs-cvsroot (list "-d" cvs-cvsroot)) |
| 550 | args | 546 | args |
| 551 | files)) | 547 | files)) |
| 552 | ;; If process-connection-type is nil and the repository | 548 | ;; If process-connection-type is nil and the repository |
| 553 | ;; is accessed via SSH, a bad interaction between libc, | 549 | ;; is accessed via SSH, a bad interaction between libc, |
| 554 | ;; CVS and SSH can lead to garbled output. | 550 | ;; CVS and SSH can lead to garbled output. |
| 555 | ;; It might be a glibc-specific problem (but it also happens | 551 | ;; It might be a glibc-specific problem (but it can also happens |
| 556 | ;; under Mac OS X, it seems). | 552 | ;; under Mac OS X, it seems). |
| 557 | ;; Until the problem is cleared, we'll use a pty rather than | 553 | ;; It seems that using a pty can help circumvent the problem, |
| 558 | ;; a pipe. | 554 | ;; but at the cost of screwing up when the process thinks it |
| 559 | ;; (process-connection-type nil) ; Use a pipe, not a pty. | 555 | ;; can ask for user input (such as password or host-key |
| 556 | ;; confirmation). A better workaround is to set CVS_RSH to | ||
| 557 | ;; an appropriate script, or to use a later version of CVS. | ||
| 558 | (process-connection-type nil) ; Use a pipe, not a pty. | ||
| 560 | (process | 559 | (process |
| 561 | ;; the process will be run in the selected dir | 560 | ;; the process will be run in the selected dir |
| 562 | (let ((default-directory (cvs-expand-dir-name dir))) | 561 | (let ((default-directory (cvs-expand-dir-name dir))) |
| 563 | (apply 'start-process "cvs" procbuf cvs-program args)))) | 562 | (apply 'start-process "cvs" procbuf cvs-program args)))) |
| 563 | ;; setup the process. | ||
| 564 | (process-put process 'cvs-buffer cvs-buffer) | ||
| 565 | (with-current-buffer cvs-buffer (cvs-update-header msg 'add)) | ||
| 566 | (process-put process 'cvs-header msg) | ||
| 567 | (process-put | ||
| 568 | process 'cvs-postprocess | ||
| 569 | (if (null rest) | ||
| 570 | ;; this is the last invocation | ||
| 571 | postprocess | ||
| 572 | ;; else, we have to register ourselves to be rerun on the rest | ||
| 573 | `(cvs-run-process ',args ',rest ',postprocess ',single-dir))) | ||
| 564 | (set-process-sentinel process 'cvs-sentinel) | 574 | (set-process-sentinel process 'cvs-sentinel) |
| 565 | (set-process-filter process 'cvs-update-filter) | 575 | (set-process-filter process 'cvs-update-filter) |
| 566 | (set-marker (process-mark process) (point-max)) | 576 | (set-marker (process-mark process) (point-max)) |
| @@ -636,33 +646,35 @@ If non-nil, NEW means to create a new buffer no matter what." | |||
| 636 | This is responsible for parsing the output from the cvs update when | 646 | This is responsible for parsing the output from the cvs update when |
| 637 | it is finished." | 647 | it is finished." |
| 638 | (when (memq (process-status proc) '(signal exit)) | 648 | (when (memq (process-status proc) '(signal exit)) |
| 639 | (if (null (buffer-name (process-buffer proc))) | 649 | (let ((cvs-postproc (process-get proc 'cvs-postprocess)) |
| 640 | ;;(set-process-buffer proc nil) | 650 | (cvs-buf (process-get proc 'cvs-buffer))) |
| 641 | (error "cvs' process buffer was killed") | 651 | ;; Since the buffer and mode line will show that the |
| 642 | (let* ((obuf (current-buffer)) | 652 | ;; process is dead, we can delete it now. Otherwise it |
| 643 | (procbuffer (process-buffer proc))) | 653 | ;; will stay around until M-x list-processes. |
| 644 | (set-buffer (with-current-buffer procbuffer cvs-buffer)) | 654 | (process-put proc 'postprocess nil) |
| 645 | (setq cvs-mode-line-process (symbol-name (process-status proc))) | 655 | (delete-process proc) |
| 646 | (force-mode-line-update) | 656 | ;; Don't do anything if the main buffer doesn't exist any more. |
| 647 | (set-buffer procbuffer) | 657 | (when (buffer-live-p cvs-buf) |
| 648 | (let ((cvs-postproc cvs-postprocess)) | 658 | (with-current-buffer cvs-buf |
| 649 | ;; Since the buffer and mode line will show that the | 659 | (cvs-update-header (process-get proc 'cvs-header) nil) |
| 650 | ;; process is dead, we can delete it now. Otherwise it | 660 | (setq cvs-mode-line-process (symbol-name (process-status proc))) |
| 651 | ;; will stay around until M-x list-processes. | 661 | (force-mode-line-update) |
| 652 | (delete-process proc) | 662 | (when cvs-postproc |
| 653 | (setq cvs-postprocess nil) | 663 | (if (null (buffer-live-p (process-buffer proc))) |
| 654 | ;; do the postprocessing like parsing and such | 664 | ;;(set-process-buffer proc nil) |
| 655 | (save-excursion (eval cvs-postproc)) | 665 | (error "cvs' process buffer was killed") |
| 656 | ;; check whether something is left | 666 | (with-current-buffer (process-buffer proc) |
| 657 | (unless cvs-postprocess | 667 | ;; do the postprocessing like parsing and such |
| 658 | ;; IIRC, we enable undo again once the process is finished | 668 | (save-excursion (eval cvs-postproc)) |
| 659 | ;; for cases where the output was inserted in *vc-diff* or | 669 | ;; check whether something is left |
| 660 | ;; in a file-like buffer. -stef | 670 | (unless (get-buffer-process (current-buffer)) |
| 661 | (buffer-enable-undo) | 671 | ;; IIRC, we enable undo again once the process is finished |
| 662 | (with-current-buffer cvs-buffer | 672 | ;; for cases where the output was inserted in *vc-diff* or |
| 663 | (message "CVS process has completed in %s" (buffer-name))))) | 673 | ;; in a file-like buffer. --Stef |
| 664 | ;; This might not even be necessary | 674 | (buffer-enable-undo) |
| 665 | (set-buffer obuf))))) | 675 | (with-current-buffer cvs-buffer |
| 676 | (message "CVS process has completed in %s" | ||
| 677 | (buffer-name)))))))))))) | ||
| 666 | 678 | ||
| 667 | (defun cvs-parse-process (dcd &optional subdir old-fis) | 679 | (defun cvs-parse-process (dcd &optional subdir old-fis) |
| 668 | "Parse the output of a cvs process. | 680 | "Parse the output of a cvs process. |
| @@ -770,7 +782,7 @@ before calling the real function `" (symbol-name fun-1) "'.\n") | |||
| 770 | (defun-cvs-mode cvs-mode-kill-process () | 782 | (defun-cvs-mode cvs-mode-kill-process () |
| 771 | "Kill the temporary buffer and associated process." | 783 | "Kill the temporary buffer and associated process." |
| 772 | (interactive) | 784 | (interactive) |
| 773 | (when (and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer)) | 785 | (when (and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer)) |
| 774 | (let ((proc (get-buffer-process cvs-temp-buffer))) | 786 | (let ((proc (get-buffer-process cvs-temp-buffer))) |
| 775 | (when proc (delete-process proc))))) | 787 | (when proc (delete-process proc))))) |
| 776 | 788 | ||
| @@ -906,23 +918,28 @@ This usually doesn't really work but is a handy initval in a prompt." | |||
| 906 | ;;;; | 918 | ;;;; |
| 907 | 919 | ||
| 908 | ;;;###autoload | 920 | ;;;###autoload |
| 909 | (defun cvs-checkout (modules dir flags) | 921 | (defun cvs-checkout (modules dir flags &optional root) |
| 910 | "Run a 'cvs checkout MODULES' in DIR. | 922 | "Run a 'cvs checkout MODULES' in DIR. |
| 911 | Feed the output to a *cvs* buffer, display it in the current window, | 923 | Feed the output to a *cvs* buffer, display it in the current window, |
| 912 | and run `cvs-mode' on it. | 924 | and run `cvs-mode' on it. |
| 913 | 925 | ||
| 914 | With a prefix argument, prompt for cvs FLAGS to use." | 926 | With a prefix argument, prompt for cvs FLAGS to use." |
| 915 | (interactive | 927 | (interactive |
| 916 | (list (cvs-string->strings (read-string "Module(s): " (cvs-get-module))) | 928 | (let ((root (cvs-get-cvsroot))) |
| 917 | (read-directory-name "CVS Checkout Directory: " | 929 | (if (or (null root) current-prefix-arg) |
| 918 | nil default-directory nil) | 930 | (setq root (read-string "CVS Root: "))) |
| 919 | (cvs-add-branch-prefix | 931 | (list (cvs-string->strings (read-string "Module(s): " (cvs-get-module))) |
| 920 | (cvs-flags-query 'cvs-checkout-flags "cvs checkout flags")))) | 932 | (read-directory-name "CVS Checkout Directory: " |
| 933 | nil default-directory nil) | ||
| 934 | (cvs-add-branch-prefix | ||
| 935 | (cvs-flags-query 'cvs-checkout-flags "cvs checkout flags")) | ||
| 936 | root))) | ||
| 921 | (when (eq flags t) | 937 | (when (eq flags t) |
| 922 | (setf flags (cvs-flags-query 'cvs-checkout-flags nil 'noquery))) | 938 | (setf flags (cvs-flags-query 'cvs-checkout-flags nil 'noquery))) |
| 923 | (cvs-cmd-do "checkout" (or dir default-directory) | 939 | (let ((cvs-cvsroot root)) |
| 924 | (append flags modules) nil 'new | 940 | (cvs-cmd-do "checkout" (or dir default-directory) |
| 925 | :noexist t)) | 941 | (append flags modules) nil 'new |
| 942 | :noexist t))) | ||
| 926 | 943 | ||
| 927 | (defun-cvs-mode (cvs-mode-checkout . NOARGS) (dir) | 944 | (defun-cvs-mode (cvs-mode-checkout . NOARGS) (dir) |
| 928 | "Run cvs checkout against the current branch. | 945 | "Run cvs checkout against the current branch. |
| @@ -1133,7 +1150,7 @@ Full documentation is in the Texinfo file." | |||
| 1133 | (eq (ewoc-buffer cvs-cookies) buf) | 1150 | (eq (ewoc-buffer cvs-cookies) buf) |
| 1134 | (setq check 'cvs-temp-buffer) | 1151 | (setq check 'cvs-temp-buffer) |
| 1135 | (or (null cvs-temp-buffer) | 1152 | (or (null cvs-temp-buffer) |
| 1136 | (null (buffer-name cvs-temp-buffer)) | 1153 | (null (buffer-live-p cvs-temp-buffer)) |
| 1137 | (and (eq (with-current-buffer cvs-temp-buffer cvs-buffer) buf) | 1154 | (and (eq (with-current-buffer cvs-temp-buffer cvs-buffer) buf) |
| 1138 | (equal (with-current-buffer cvs-temp-buffer | 1155 | (equal (with-current-buffer cvs-temp-buffer |
| 1139 | default-directory) | 1156 | default-directory) |
| @@ -1822,11 +1839,6 @@ POSTPROC is a list of expressions to be evaluated at the very end (after | |||
| 1822 | ;; absence of `cvs update' output has a specific meaning. | 1839 | ;; absence of `cvs update' output has a specific meaning. |
| 1823 | (or fis (list (cvs-create-fileinfo 'DIRCHANGE "" "." "")))))) | 1840 | (or fis (list (cvs-create-fileinfo 'DIRCHANGE "" "." "")))))) |
| 1824 | (push `(cvs-parse-process ',dont-change-disc nil ',old-fis) postproc))) | 1841 | (push `(cvs-parse-process ',dont-change-disc nil ',old-fis) postproc))) |
| 1825 | (let ((msg (cvs-header-msg args fis))) | ||
| 1826 | (cvs-update-header msg 'add) | ||
| 1827 | (push `(with-current-buffer cvs-buffer | ||
| 1828 | (cvs-update-header ',msg nil)) | ||
| 1829 | postproc)) | ||
| 1830 | (setq postproc (if (cdr postproc) (cons 'progn postproc) (car postproc))) | 1842 | (setq postproc (if (cdr postproc) (cons 'progn postproc) (car postproc))) |
| 1831 | (with-current-buffer buf | 1843 | (with-current-buffer buf |
| 1832 | (let ((inhibit-read-only t)) (erase-buffer)) | 1844 | (let ((inhibit-read-only t)) (erase-buffer)) |
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 457177d7c4c..bafc901d3d1 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el | |||
| @@ -1613,6 +1613,8 @@ and overlay is highlighted between MK and END-MK." | |||
| 1613 | (compilation-set-window-height w) | 1613 | (compilation-set-window-height w) |
| 1614 | 1614 | ||
| 1615 | (when highlight-regexp | 1615 | (when highlight-regexp |
| 1616 | (if (timerp next-error-highlight-timer) | ||
| 1617 | (cancel-timer next-error-highlight-timer)) | ||
| 1616 | (unless compilation-highlight-overlay | 1618 | (unless compilation-highlight-overlay |
| 1617 | (setq compilation-highlight-overlay | 1619 | (setq compilation-highlight-overlay |
| 1618 | (make-overlay (point-min) (point-min))) | 1620 | (make-overlay (point-min) (point-min))) |
| @@ -1632,8 +1634,11 @@ and overlay is highlighted between MK and END-MK." | |||
| 1632 | (move-overlay compilation-highlight-overlay | 1634 | (move-overlay compilation-highlight-overlay |
| 1633 | (point) end (current-buffer))) | 1635 | (point) end (current-buffer))) |
| 1634 | (if (numberp next-error-highlight) | 1636 | (if (numberp next-error-highlight) |
| 1635 | (sit-for next-error-highlight)) | 1637 | (setq next-error-highlight-timer |
| 1636 | (if (not (eq next-error-highlight t)) | 1638 | (run-at-time next-error-highlight nil 'delete-overlay |
| 1639 | compilation-highlight-overlay))) | ||
| 1640 | (if (not (or (eq next-error-highlight t) | ||
| 1641 | (numberp next-error-highlight))) | ||
| 1637 | (delete-overlay compilation-highlight-overlay)))))) | 1642 | (delete-overlay compilation-highlight-overlay)))))) |
| 1638 | (when (and (eq next-error-highlight 'fringe-arrow)) | 1643 | (when (and (eq next-error-highlight 'fringe-arrow)) |
| 1639 | (set (make-local-variable 'overlay-arrow-position) | 1644 | (set (make-local-variable 'overlay-arrow-position) |
diff --git a/lisp/progmodes/cwarn.el b/lisp/progmodes/cwarn.el index b16381cd2c7..9dfd4dd9e26 100644 --- a/lisp/progmodes/cwarn.el +++ b/lisp/progmodes/cwarn.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; cwarn.el --- highlight suspicious C and C++ constructions | 1 | ;;; cwarn.el --- highlight suspicious C and C++ constructions |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Anders Lindgren <andersl@andersl.com> | 5 | ;; Author: Anders Lindgren <andersl@andersl.com> |
| 6 | ;; Keywords: c, languages, faces | 6 | ;; Keywords: c, languages, faces |
| @@ -193,7 +193,7 @@ be included in the variable `cwarn-configuration'. By default C and | |||
| 193 | C++ modes are included. | 193 | C++ modes are included. |
| 194 | 194 | ||
| 195 | With ARG, turn CWarn mode on if and only if arg is positive." | 195 | With ARG, turn CWarn mode on if and only if arg is positive." |
| 196 | nil cwarn-mode-text nil | 196 | :group 'cwarn :lighter cwarn-mode-text |
| 197 | (cwarn-font-lock-keywords cwarn-mode) | 197 | (cwarn-font-lock-keywords cwarn-mode) |
| 198 | (if font-lock-mode (font-lock-fontify-buffer))) | 198 | (if font-lock-mode (font-lock-fontify-buffer))) |
| 199 | 199 | ||
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index fdb7fffac6c..4c8b847b7cd 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el | |||
| @@ -597,41 +597,32 @@ characters long.") | |||
| 597 | 597 | ||
| 598 | ;; Hideshow support. | 598 | ;; Hideshow support. |
| 599 | (defconst f90-end-block-re | 599 | (defconst f90-end-block-re |
| 600 | (concat "^[ \t0-9]*\\<end\\>[ \t]*" | 600 | (concat "^[ \t0-9]*\\<end[ \t]*" |
| 601 | (regexp-opt '("do" "if" "forall" "function" "interface" | 601 | (regexp-opt '("do" "if" "forall" "function" "interface" |
| 602 | "module" "program" "select" "subroutine" | 602 | "module" "program" "select" "subroutine" |
| 603 | "type" "where" ) t) | 603 | "type" "where" ) t) |
| 604 | "[ \t]*\\sw*") | 604 | "[ \t]*\\sw*") |
| 605 | "Regexp matching the end of a \"block\" of F90 code. | 605 | "Regexp matching the end of an F90 \"block\", from the line start. |
| 606 | Used in the F90 entry in `hs-special-modes-alist'.") | 606 | Used in the F90 entry in `hs-special-modes-alist'.") |
| 607 | 607 | ||
| 608 | ;; Ignore the fact that FUNCTION, SUBROUTINE, WHERE, FORALL have a | 608 | ;; Ignore the fact that FUNCTION, SUBROUTINE, WHERE, FORALL have a |
| 609 | ;; following "(". DO, CASE, IF can have labels; IF must be | 609 | ;; following "(". DO, CASE, IF can have labels. |
| 610 | ;; accompanied by THEN. | ||
| 611 | ;; A big problem is that many of these statements can be broken over | ||
| 612 | ;; lines, even with embedded comments. We only try to handle this for | ||
| 613 | ;; IF ... THEN statements, assuming and hoping it will be less common | ||
| 614 | ;; for other constructs. We match up to one new-line, provided ") | ||
| 615 | ;; THEN" appears on one line. Matching on just ") THEN" is no good, | ||
| 616 | ;; since that includes ELSE branches. | ||
| 617 | ;; For a fully accurate solution, hideshow would probably have to be | ||
| 618 | ;; modified to allow functions as well as regexps to be used to | ||
| 619 | ;; specify block start and end positions. | ||
| 620 | (defconst f90-start-block-re | 610 | (defconst f90-start-block-re |
| 621 | (concat | 611 | (concat |
| 622 | "^[ \t0-9]*" ; statement number | 612 | "^[ \t0-9]*" ; statement number |
| 623 | "\\(\\(" | 613 | "\\(\\(" |
| 624 | "\\(\\sw+[ \t]*:[ \t]*\\)?" ; structure label | 614 | "\\(\\sw+[ \t]*:[ \t]*\\)?" ; structure label |
| 625 | "\\(do\\|select[ \t]*case\\|if[ \t]*(.*\n?.*)[ \t]*then\\|" | 615 | "\\(do\\|select[ \t]*case\\|" |
| 616 | ;; See comments in fortran-start-block-re for the problems of IF. | ||
| 617 | "if[ \t]*(\\(.*\\|" | ||
| 618 | ".*\n\\([^if]*\\([^i].\\|.[^f]\\|.\\>\\)\\)\\)\\<then\\|" | ||
| 626 | ;; Distinguish WHERE block from isolated WHERE. | 619 | ;; Distinguish WHERE block from isolated WHERE. |
| 627 | "\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)\\)\\)" | 620 | "\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)\\)\\)" |
| 628 | "\\|" | 621 | "\\|" |
| 629 | "program\\|interface\\|module\\|type\\|function\\|subroutine" | 622 | "program\\|interface\\|module\\|type\\|function\\|subroutine" |
| 630 | ;; ") THEN" at line end. Problem - also does ELSE. | ||
| 631 | ;;; "\\|.*)[ \t]*then[ \t]*\\($\\|!\\)" | ||
| 632 | "\\)" | 623 | "\\)" |
| 633 | "[ \t]*") | 624 | "[ \t]*") |
| 634 | "Regexp matching the start of a \"block\" of F90 code. | 625 | "Regexp matching the start of an F90 \"block\", from the line start. |
| 635 | A simple regexp cannot do this in fully correct fashion, so this | 626 | A simple regexp cannot do this in fully correct fashion, so this |
| 636 | tries to strike a compromise between complexity and flexibility. | 627 | tries to strike a compromise between complexity and flexibility. |
| 637 | Used in the F90 entry in `hs-special-modes-alist'.") | 628 | Used in the F90 entry in `hs-special-modes-alist'.") |
| @@ -1305,12 +1296,12 @@ Checks for consistency of block types and labels (if present). | |||
| 1305 | Does not check the outermost block, because it may be incomplete. | 1296 | Does not check the outermost block, because it may be incomplete. |
| 1306 | Interactively, pushes mark before moving point." | 1297 | Interactively, pushes mark before moving point." |
| 1307 | (interactive "p") | 1298 | (interactive "p") |
| 1299 | (if (interactive-p) (push-mark (point) t)) | ||
| 1308 | (and num (< num 0) (f90-end-of-block (- num))) | 1300 | (and num (< num 0) (f90-end-of-block (- num))) |
| 1309 | (let ((case-fold-search t) | 1301 | (let ((case-fold-search t) |
| 1310 | (count (or num 1)) | 1302 | (count (or num 1)) |
| 1311 | end-list end-this end-type end-label | 1303 | end-list end-this end-type end-label |
| 1312 | start-this start-type start-label) | 1304 | start-this start-type start-label) |
| 1313 | (if (interactive-p) (push-mark (point) t)) | ||
| 1314 | (beginning-of-line) ; probably want this | 1305 | (beginning-of-line) ; probably want this |
| 1315 | (while (and (> count 0) (re-search-backward f90-blocks-re nil 'move)) | 1306 | (while (and (> count 0) (re-search-backward f90-blocks-re nil 'move)) |
| 1316 | (beginning-of-line) | 1307 | (beginning-of-line) |
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 70150111a86..7067ddca21c 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el | |||
| @@ -964,7 +964,7 @@ Convert it to flymake internal format." | |||
| 964 | (if (consp file) (setq file (car file))) | 964 | (if (consp file) (setq file (car file))) |
| 965 | (if (consp line) (setq line (car line))) | 965 | (if (consp line) (setq line (car line))) |
| 966 | (if (consp col) (setq col (car col))) | 966 | (if (consp col) (setq col (car col))) |
| 967 | 967 | ||
| 968 | (when (not (functionp line)) | 968 | (when (not (functionp line)) |
| 969 | (setq converted-list (cons (list regexp file line col) converted-list))))) | 969 | (setq converted-list (cons (list regexp file line col) converted-list))))) |
| 970 | converted-list)) | 970 | converted-list)) |
| @@ -1508,7 +1508,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if | |||
| 1508 | "Minor mode to do on-the-fly syntax checking. | 1508 | "Minor mode to do on-the-fly syntax checking. |
| 1509 | When called interactively, toggles the minor mode. | 1509 | When called interactively, toggles the minor mode. |
| 1510 | With arg, turn Flymake mode on if and only if arg is positive." | 1510 | With arg, turn Flymake mode on if and only if arg is positive." |
| 1511 | :lighter flymake-mode-line | 1511 | :group 'flymake :lighter flymake-mode-line |
| 1512 | (if flymake-mode | 1512 | (if flymake-mode |
| 1513 | (if (flymake-can-syntax-check-file (buffer-file-name)) | 1513 | (if (flymake-can-syntax-check-file (buffer-file-name)) |
| 1514 | (flymake-mode-on) | 1514 | (flymake-mode-on) |
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index 768012c736c..30e1977d28d 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; fortran.el --- Fortran mode for GNU Emacs | 1 | ;;; fortran.el --- Fortran mode for GNU Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (c) 1986, 93, 94, 95, 97, 98, 99, 2000, 01, 03, 04 | 3 | ;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; 2003, 2004, 2005 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Michael D. Prange <prange@erl.mit.edu> | 6 | ;; Author: Michael D. Prange <prange@erl.mit.edu> |
| 7 | ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk> | 7 | ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk> |
| @@ -95,7 +95,7 @@ with a character in column 6." | |||
| 95 | :group 'fortran-indent) | 95 | :group 'fortran-indent) |
| 96 | 96 | ||
| 97 | (defcustom fortran-if-indent 3 | 97 | (defcustom fortran-if-indent 3 |
| 98 | "*Extra indentation applied to IF blocks." | 98 | "*Extra indentation applied to IF, SELECT CASE and WHERE blocks." |
| 99 | :type 'integer | 99 | :type 'integer |
| 100 | :group 'fortran-indent) | 100 | :group 'fortran-indent) |
| 101 | 101 | ||
| @@ -321,7 +321,8 @@ program\\|subroutine\\)\\>[ \t]*\\(\\sw+\\)?" | |||
| 321 | "while" "inquire" "stop" "return" | 321 | "while" "inquire" "stop" "return" |
| 322 | "include" "open" "close" "read" | 322 | "include" "open" "close" "read" |
| 323 | "write" "format" "print" "select" "case" | 323 | "write" "format" "print" "select" "case" |
| 324 | "cycle" "exit" "rewind" "backspace") | 324 | "cycle" "exit" "rewind" "backspace" |
| 325 | "where" "elsewhere") | ||
| 325 | 'paren) "\\>") | 326 | 'paren) "\\>") |
| 326 | ;; Builtin operators. | 327 | ;; Builtin operators. |
| 327 | (concat "\\." (regexp-opt | 328 | (concat "\\." (regexp-opt |
| @@ -370,6 +371,29 @@ program\\|subroutine\\)\\>[ \t]*\\(\\sw+\\)?" | |||
| 370 | fortran-font-lock-keywords-2))) | 371 | fortran-font-lock-keywords-2))) |
| 371 | "Gaudy level highlighting for Fortran mode.") | 372 | "Gaudy level highlighting for Fortran mode.") |
| 372 | 373 | ||
| 374 | (defvar fortran-font-lock-keywords-4 | ||
| 375 | (append fortran-font-lock-keywords-3 | ||
| 376 | (list (list | ||
| 377 | (concat "\\<" | ||
| 378 | (regexp-opt | ||
| 379 | '("int" "ifix" "idint" "real" "float" "sngl" | ||
| 380 | "dble" "cmplx" "ichar" "char" "aint" "dint" | ||
| 381 | "anint" "dnint" "nint" "idnint" "iabs" "abs" | ||
| 382 | "dabs" "cabs" "mod" "amod" "dmod" "isign" | ||
| 383 | "sign" "dsign" "idim" "dim" "ddim" "dprod" | ||
| 384 | "max" "max0" "amax1" "dmax1" "amax0" "max1" | ||
| 385 | "min0" "amin1" "dmin1" "amin0" "min1" "len" | ||
| 386 | "index" "lge" "lgt" "lle" "llt" "aimag" | ||
| 387 | "conjg" "sqrt" "dsqrt" "csqrt" "exp" "dexp" | ||
| 388 | "cexp" "log" "alog" "dlog" "clog" "log10" | ||
| 389 | "alog10" "dlog10" "sin" "dsin" "csin" "cos" | ||
| 390 | "dcos" "ccos" "tan" "dtan" "asin" "dasin" | ||
| 391 | "acos" "dacos" "atan" "datan" "atan2" "datan2" | ||
| 392 | "sinh" "dsinh" "cosh" "dcosh" "tanh" "dtanh") | ||
| 393 | 'paren) "[ \t]*(") '(1 font-lock-builtin-face)))) | ||
| 394 | "Maximum highlighting for Fortran mode. | ||
| 395 | Consists of level 3 plus all other intrinsics not already highlighted.") | ||
| 396 | |||
| 373 | ;; Comments are real pain in Fortran because there is no way to | 397 | ;; Comments are real pain in Fortran because there is no way to |
| 374 | ;; represent the standard comment syntax in an Emacs syntax table. | 398 | ;; represent the standard comment syntax in an Emacs syntax table. |
| 375 | ;; (We can do so for F90-style). Therefore an unmatched quote in a | 399 | ;; (We can do so for F90-style). Therefore an unmatched quote in a |
| @@ -409,6 +433,64 @@ These get fixed-format comments fontified.") | |||
| 409 | "Value for `imenu-generic-expression' in Fortran mode.") | 433 | "Value for `imenu-generic-expression' in Fortran mode.") |
| 410 | 434 | ||
| 411 | 435 | ||
| 436 | ;; Hideshow support. | ||
| 437 | (defconst fortran-blocks-re | ||
| 438 | (concat "block[ \t]*data\\|select[ \t]*case\\|" | ||
| 439 | (regexp-opt '("do" "if" "interface" "function" "map" "program" | ||
| 440 | "structure" "subroutine" "union" "where"))) | ||
| 441 | "Regexp potentially indicating the start or end of a Fortran \"block\". | ||
| 442 | Omits naked END statements, and DO-loops closed by anything other | ||
| 443 | than ENDDO.") | ||
| 444 | |||
| 445 | (defconst fortran-end-block-re | ||
| 446 | ;; Do-loops terminated by things other than ENDDO cannot be handled | ||
| 447 | ;; with a regexp. This omission does not seem to matter to hideshow... | ||
| 448 | (concat "^[ \t0-9]*\\<end[ \t]*\\(" | ||
| 449 | fortran-blocks-re | ||
| 450 | ;; Naked END statement. | ||
| 451 | "\\|!\\|$\\)") | ||
| 452 | "Regexp matching the end of a Fortran \"block\", from the line start. | ||
| 453 | Note that only ENDDO is handled for the end of a DO-loop. Used | ||
| 454 | in the Fortran entry in `hs-special-modes-alist'.") | ||
| 455 | |||
| 456 | (defconst fortran-start-block-re | ||
| 457 | (concat | ||
| 458 | "^[ \t0-9]*\\(" ; statement number | ||
| 459 | ;; Structure label for DO, IF, SELECT, WHERE. | ||
| 460 | "\\(\\(\\sw+[ \t]*:[ \t]*\\)?" | ||
| 461 | ;; IF blocks are a nuisance: | ||
| 462 | ;; IF ( ... ) foo is not a block, but a single statement. | ||
| 463 | ;; IF ( ... ) THEN can be split over multiple lines. | ||
| 464 | ;; [So can, eg, a DO WHILE (... ), but that is less common, I hope.] | ||
| 465 | ;; The regexp below allows for it to be split over at most 2 lines. | ||
| 466 | ;; That leads to the problem of not matching two consecutive IF | ||
| 467 | ;; statements as one, eg: | ||
| 468 | ;; IF ( ... ) foo | ||
| 469 | ;; IF ( ... ) THEN | ||
| 470 | ;; It simply is not possible to do this in a 100% correct fashion | ||
| 471 | ;; using a regexp - see the functions fortran-end-if, | ||
| 472 | ;; fortran-beginning-if for the hoops we have to go through. | ||
| 473 | ;; An alternative is to match on THEN at a line end, eg: | ||
| 474 | ;; ".*)[ \t]*then[ \t]*\\($\\|!\\)" | ||
| 475 | ;; This would also match ELSE branches, though. This does not seem | ||
| 476 | ;; right to me, because then one has neighbouring blocks that are | ||
| 477 | ;; not nested in each other. | ||
| 478 | "\\(if[ \t]*(\\(.*\\|" | ||
| 479 | ".*\n\\([^if]*\\([^i].\\|.[^f]\\|.\\>\\)\\)\\)\\<then\\|" | ||
| 480 | "do\\|select[ \t]*case\\|where\\)\\)\\|" | ||
| 481 | (regexp-opt '("interface" "function" "map" "program" | ||
| 482 | "structure" "subroutine" "union")) | ||
| 483 | "\\|block[ \t]*data\\)[ \t]*") | ||
| 484 | "Regexp matching the start of a Fortran \"block\", from the line start. | ||
| 485 | A simple regexp cannot do this in fully correct fashion, so this | ||
| 486 | tries to strike a compromise between complexity and flexibility. | ||
| 487 | Used in the Fortran entry in `hs-special-modes-alist'.") | ||
| 488 | |||
| 489 | (add-to-list 'hs-special-modes-alist | ||
| 490 | `(fortran-mode ,fortran-start-block-re ,fortran-end-block-re | ||
| 491 | "^[cC*!]" fortran-end-of-block nil)) | ||
| 492 | |||
| 493 | |||
| 412 | (defvar fortran-mode-syntax-table | 494 | (defvar fortran-mode-syntax-table |
| 413 | (let ((table (make-syntax-table))) | 495 | (let ((table (make-syntax-table))) |
| 414 | ;; We might like `;' to be punctuation (g77 multi-statement | 496 | ;; We might like `;' to be punctuation (g77 multi-statement |
| @@ -422,7 +504,8 @@ These get fixed-format comments fontified.") | |||
| 422 | (modify-syntax-entry ?/ "." table) | 504 | (modify-syntax-entry ?/ "." table) |
| 423 | (modify-syntax-entry ?\' "\"" table) | 505 | (modify-syntax-entry ?\' "\"" table) |
| 424 | (modify-syntax-entry ?\" "\"" table) | 506 | (modify-syntax-entry ?\" "\"" table) |
| 425 | ;; Consistent with GNU Fortran -- see the manual. | 507 | ;; Consistent with GNU Fortran's default -- see the manual. |
| 508 | ;; The F77 standard imposes no rule on this issue. | ||
| 426 | (modify-syntax-entry ?\\ "\\" table) | 509 | (modify-syntax-entry ?\\ "\\" table) |
| 427 | ;; This might be better as punctuation, as for C, but this way you | 510 | ;; This might be better as punctuation, as for C, but this way you |
| 428 | ;; can treat floating-point numbers as symbols. | 511 | ;; can treat floating-point numbers as symbols. |
| @@ -446,6 +529,8 @@ These get fixed-format comments fontified.") | |||
| 446 | (define-key map "\C-c;" 'fortran-comment-region) | 529 | (define-key map "\C-c;" 'fortran-comment-region) |
| 447 | (define-key map "\M-;" 'fortran-indent-comment) | 530 | (define-key map "\M-;" 'fortran-indent-comment) |
| 448 | (define-key map "\M-\n" 'fortran-split-line) | 531 | (define-key map "\M-\n" 'fortran-split-line) |
| 532 | (define-key map "\M-\C-n" 'fortran-end-of-block) | ||
| 533 | (define-key map "\M-\C-p" 'fortran-beginning-of-block) | ||
| 449 | (define-key map "\M-\C-q" 'fortran-indent-subprogram) | 534 | (define-key map "\M-\C-q" 'fortran-indent-subprogram) |
| 450 | (define-key map "\C-c\C-w" 'fortran-window-create-momentarily) | 535 | (define-key map "\C-c\C-w" 'fortran-window-create-momentarily) |
| 451 | (define-key map "\C-c\C-r" 'fortran-column-ruler) | 536 | (define-key map "\C-c\C-r" 'fortran-column-ruler) |
| @@ -606,7 +691,7 @@ Key definitions: | |||
| 606 | 691 | ||
| 607 | Variables controlling indentation style and extra features: | 692 | Variables controlling indentation style and extra features: |
| 608 | 693 | ||
| 609 | `comment-start' | 694 | `fortran-comment-line-start' |
| 610 | To use comments starting with `!', set this to the string \"!\". | 695 | To use comments starting with `!', set this to the string \"!\". |
| 611 | `fortran-do-indent' | 696 | `fortran-do-indent' |
| 612 | Extra indentation within DO blocks (default 3). | 697 | Extra indentation within DO blocks (default 3). |
| @@ -696,7 +781,8 @@ with no args, if that value is non-nil." | |||
| 696 | '((fortran-font-lock-keywords | 781 | '((fortran-font-lock-keywords |
| 697 | fortran-font-lock-keywords-1 | 782 | fortran-font-lock-keywords-1 |
| 698 | fortran-font-lock-keywords-2 | 783 | fortran-font-lock-keywords-2 |
| 699 | fortran-font-lock-keywords-3) | 784 | fortran-font-lock-keywords-3 |
| 785 | fortran-font-lock-keywords-4) | ||
| 700 | nil t ((?/ . "$/") ("_$" . "w")) | 786 | nil t ((?/ . "$/") ("_$" . "w")) |
| 701 | fortran-beginning-of-subprogram)) | 787 | fortran-beginning-of-subprogram)) |
| 702 | (set (make-local-variable 'font-lock-syntactic-keywords) | 788 | (set (make-local-variable 'font-lock-syntactic-keywords) |
| @@ -1059,6 +1145,84 @@ Directive lines are treated as comments." | |||
| 1059 | (if (not not-last-statement) | 1145 | (if (not not-last-statement) |
| 1060 | 'last-statement))) | 1146 | 'last-statement))) |
| 1061 | 1147 | ||
| 1148 | (defun fortran-looking-at-if-then () | ||
| 1149 | "Return non-nil if at the start of a line with an IF ... THEN statement." | ||
| 1150 | ;; cf f90-looking-at-if-then. | ||
| 1151 | (let ((p (point)) | ||
| 1152 | (i (fortran-beginning-if))) | ||
| 1153 | (if i | ||
| 1154 | (save-excursion | ||
| 1155 | (goto-char i) | ||
| 1156 | (beginning-of-line) | ||
| 1157 | (= (point) p))))) | ||
| 1158 | |||
| 1159 | ;; Used in hs-special-modes-alist. | ||
| 1160 | (defun fortran-end-of-block (&optional num) | ||
| 1161 | "Move point forward to the end of the current code block. | ||
| 1162 | With optional argument NUM, go forward that many balanced blocks. | ||
| 1163 | If NUM is negative, go backward to the start of a block. Does | ||
| 1164 | not check for consistency of block types. Interactively, pushes | ||
| 1165 | mark before moving point." | ||
| 1166 | (interactive "p") | ||
| 1167 | (if (interactive-p) (push-mark (point) t)) | ||
| 1168 | (and num (< num 0) (fortran-beginning-of-block (- num))) | ||
| 1169 | (let ((case-fold-search t) | ||
| 1170 | (count (or num 1))) | ||
| 1171 | (end-of-line) | ||
| 1172 | (while (and (> count 0) | ||
| 1173 | (re-search-forward | ||
| 1174 | (concat "\\(" fortran-blocks-re | ||
| 1175 | (if fortran-check-all-num-for-matching-do | ||
| 1176 | "\\|^[ \t]*[0-9]+" "") | ||
| 1177 | "\\|continue\\|end\\)\\>") | ||
| 1178 | nil 'move)) | ||
| 1179 | (beginning-of-line) | ||
| 1180 | (if (if (looking-at (concat "^[0-9 \t]*" fortran-if-start-re)) | ||
| 1181 | (fortran-looking-at-if-then) | ||
| 1182 | (looking-at fortran-start-block-re)) | ||
| 1183 | (setq count (1+ count)) | ||
| 1184 | (if (or (looking-at fortran-end-block-re) | ||
| 1185 | (and (or (looking-at "^[0-9 \t]*continue") | ||
| 1186 | (and fortran-check-all-num-for-matching-do | ||
| 1187 | (looking-at "[ \t]*[0-9]+"))) | ||
| 1188 | (fortran-check-for-matching-do))) | ||
| 1189 | (setq count (1- count)))) | ||
| 1190 | (end-of-line)) | ||
| 1191 | (if (> count 0) (error "Missing block end")))) | ||
| 1192 | |||
| 1193 | (defun fortran-beginning-of-block (&optional num) | ||
| 1194 | "Move point backwards to the start of the current code block. | ||
| 1195 | With optional argument NUM, go backward that many balanced | ||
| 1196 | blocks. If NUM is negative, go forward to the end of a block. | ||
| 1197 | Does not check for consistency of block types. Interactively, | ||
| 1198 | pushes mark before moving point." | ||
| 1199 | (interactive "p") | ||
| 1200 | (if (interactive-p) (push-mark (point) t)) | ||
| 1201 | (and num (< num 0) (fortran-end-of-block (- num))) | ||
| 1202 | (let ((case-fold-search t) | ||
| 1203 | (count (or num 1))) | ||
| 1204 | (beginning-of-line) | ||
| 1205 | (while (and (> count 0) | ||
| 1206 | (re-search-backward | ||
| 1207 | (concat "\\(" fortran-blocks-re | ||
| 1208 | (if fortran-check-all-num-for-matching-do | ||
| 1209 | "\\|^[ \t]*[0-9]+" "") | ||
| 1210 | "\\|continue\\|end\\)\\>") | ||
| 1211 | nil 'move)) | ||
| 1212 | (beginning-of-line) | ||
| 1213 | (if (if (looking-at (concat "^[0-9 \t]*" fortran-if-start-re)) | ||
| 1214 | (fortran-looking-at-if-then) | ||
| 1215 | (looking-at fortran-start-block-re)) | ||
| 1216 | (setq count (1- count)) | ||
| 1217 | (if (or (looking-at fortran-end-block-re) | ||
| 1218 | (and (or (looking-at "^[0-9 \t]*continue") | ||
| 1219 | (and fortran-check-all-num-for-matching-do | ||
| 1220 | (looking-at "[ \t]*[0-9]+"))) | ||
| 1221 | (fortran-check-for-matching-do))) | ||
| 1222 | (setq count (1+ count))))) | ||
| 1223 | ;; Includes an un-named main program block. | ||
| 1224 | (if (> count 0) (error "Missing block start")))) | ||
| 1225 | |||
| 1062 | 1226 | ||
| 1063 | (defun fortran-blink-match (regex keyword find-begin) | 1227 | (defun fortran-blink-match (regex keyword find-begin) |
| 1064 | "From a line matching REGEX, blink matching KEYWORD statement line. | 1228 | "From a line matching REGEX, blink matching KEYWORD statement line. |
| @@ -1679,8 +1843,9 @@ If ALL is nil, only match comments that start in column > 0." | |||
| 1679 | (1+ (point))))) | 1843 | (1+ (point))))) |
| 1680 | (if (re-search-forward "\\S\"\\s\"\\S\"" eol t) | 1844 | (if (re-search-forward "\\S\"\\s\"\\S\"" eol t) |
| 1681 | (backward-char 2)) | 1845 | (backward-char 2)) |
| 1682 | ;; If the current string is longer than 72 - 6 chars, | 1846 | ;; If the current string is longer than (fill-column |
| 1683 | ;; break it at the fill column (else infinite loop). | 1847 | ;; - 6) chars, break it at the fill column (else |
| 1848 | ;; infinite loop). | ||
| 1684 | (if (> (- (point) start) | 1849 | (if (> (- (point) start) |
| 1685 | (- fill-column 6 fortran-continuation-indent)) | 1850 | (- fill-column 6 fortran-continuation-indent)) |
| 1686 | fcpoint | 1851 | fcpoint |
diff --git a/lisp/progmodes/glasses.el b/lisp/progmodes/glasses.el index dea40b8db19..7aff14ec608 100644 --- a/lisp/progmodes/glasses.el +++ b/lisp/progmodes/glasses.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; glasses.el --- make cantReadThis readable | 1 | ;;; glasses.el --- make cantReadThis readable |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Milan Zamazal <pdm@zamazal.org> | 5 | ;; Author: Milan Zamazal <pdm@zamazal.org> |
| 6 | ;; Maintainer: Milan Zamazal <pdm@zamazal.org> | 6 | ;; Maintainer: Milan Zamazal <pdm@zamazal.org> |
| @@ -251,7 +251,7 @@ recognized according to the current value of the variable `glasses-separator'." | |||
| 251 | "Minor mode for making identifiers likeThis readable. | 251 | "Minor mode for making identifiers likeThis readable. |
| 252 | When this mode is active, it tries to add virtual separators (like underscores) | 252 | When this mode is active, it tries to add virtual separators (like underscores) |
| 253 | at places they belong to." | 253 | at places they belong to." |
| 254 | nil " o^o" nil | 254 | :group 'glasses :lighter " o^o" |
| 255 | (save-excursion | 255 | (save-excursion |
| 256 | (save-restriction | 256 | (save-restriction |
| 257 | (widen) | 257 | (widen) |
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 0988599ed54..1f9284db9cb 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el | |||
| @@ -531,6 +531,9 @@ off the specialized speedbar mode." | |||
| 531 | 531 | ||
| 532 | (defvar gdb-first-prompt t) | 532 | (defvar gdb-first-prompt t) |
| 533 | 533 | ||
| 534 | (defvar gud-filter-pending-text nil | ||
| 535 | "Non-nil means this is text that has been saved for later in `gud-filter'.") | ||
| 536 | |||
| 534 | ;;;###autoload | 537 | ;;;###autoload |
| 535 | (defun gdb (command-line) | 538 | (defun gdb (command-line) |
| 536 | "Run gdb on program FILE in buffer *gud-FILE*. | 539 | "Run gdb on program FILE in buffer *gud-FILE*. |
| @@ -562,6 +565,7 @@ and source-file directory for your debugger." | |||
| 562 | (setq comint-prompt-regexp "^(.*gdb[+]?) *") | 565 | (setq comint-prompt-regexp "^(.*gdb[+]?) *") |
| 563 | (setq paragraph-start comint-prompt-regexp) | 566 | (setq paragraph-start comint-prompt-regexp) |
| 564 | (setq gdb-first-prompt t) | 567 | (setq gdb-first-prompt t) |
| 568 | (setq gud-filter-pending-text nil) | ||
| 565 | (run-hooks 'gdb-mode-hook)) | 569 | (run-hooks 'gdb-mode-hook)) |
| 566 | 570 | ||
| 567 | ;; One of the nice features of GDB is its impressive support for | 571 | ;; One of the nice features of GDB is its impressive support for |
| @@ -2445,9 +2449,6 @@ comint mode, which see." | |||
| 2445 | "Non-nil means don't process anything from the debugger right now. | 2449 | "Non-nil means don't process anything from the debugger right now. |
| 2446 | It is saved for when this flag is not set.") | 2450 | It is saved for when this flag is not set.") |
| 2447 | 2451 | ||
| 2448 | (defvar gud-filter-pending-text nil | ||
| 2449 | "Non-nil means this is text that has been saved for later in `gud-filter'.") | ||
| 2450 | |||
| 2451 | ;; These functions are responsible for inserting output from your debugger | 2452 | ;; These functions are responsible for inserting output from your debugger |
| 2452 | ;; into the buffer. The hard work is done by the method that is | 2453 | ;; into the buffer. The hard work is done by the method that is |
| 2453 | ;; the value of gud-marker-filter. | 2454 | ;; the value of gud-marker-filter. |
| @@ -2516,19 +2517,22 @@ It is saved for when this flag is not set.") | |||
| 2516 | (gud-filter proc "")))))) | 2517 | (gud-filter proc "")))))) |
| 2517 | 2518 | ||
| 2518 | (defvar gud-minor-mode-type nil) | 2519 | (defvar gud-minor-mode-type nil) |
| 2520 | (defvar gud-overlay-arrow-position nil) | ||
| 2521 | (put 'gud-overlay-arrow-position 'overlay-arrow-string "=>") | ||
| 2522 | (add-to-list 'overlay-arrow-variable-list 'gud-overlay-arrow-position) | ||
| 2519 | 2523 | ||
| 2520 | (defun gud-sentinel (proc msg) | 2524 | (defun gud-sentinel (proc msg) |
| 2521 | (cond ((null (buffer-name (process-buffer proc))) | 2525 | (cond ((null (buffer-name (process-buffer proc))) |
| 2522 | ;; buffer killed | 2526 | ;; buffer killed |
| 2523 | ;; Stop displaying an arrow in a source file. | 2527 | ;; Stop displaying an arrow in a source file. |
| 2524 | (setq overlay-arrow-position nil) | 2528 | (setq gud-overlay-arrow-position nil) |
| 2525 | (set-process-buffer proc nil) | 2529 | (set-process-buffer proc nil) |
| 2526 | (if (memq gud-minor-mode-type '(gdbmi gdba)) | 2530 | (if (memq gud-minor-mode-type '(gdbmi gdba)) |
| 2527 | (gdb-reset) | 2531 | (gdb-reset) |
| 2528 | (gud-reset))) | 2532 | (gud-reset))) |
| 2529 | ((memq (process-status proc) '(signal exit)) | 2533 | ((memq (process-status proc) '(signal exit)) |
| 2530 | ;; Stop displaying an arrow in a source file. | 2534 | ;; Stop displaying an arrow in a source file. |
| 2531 | (setq overlay-arrow-position nil) | 2535 | (setq gud-overlay-arrow-position nil) |
| 2532 | (with-current-buffer gud-comint-buffer | 2536 | (with-current-buffer gud-comint-buffer |
| 2533 | (if (memq gud-minor-mode-type '(gdbmi gdba)) | 2537 | (if (memq gud-minor-mode-type '(gdbmi gdba)) |
| 2534 | (gdb-reset) | 2538 | (gdb-reset) |
| @@ -2611,13 +2615,13 @@ Obeying it means displaying in another window the specified file and line." | |||
| 2611 | (goto-line line) | 2615 | (goto-line line) |
| 2612 | (setq pos (point)) | 2616 | (setq pos (point)) |
| 2613 | (setq overlay-arrow-string "=>") | 2617 | (setq overlay-arrow-string "=>") |
| 2614 | (or overlay-arrow-position | 2618 | (or gud-overlay-arrow-position |
| 2615 | (setq overlay-arrow-position (make-marker))) | 2619 | (setq gud-overlay-arrow-position (make-marker))) |
| 2616 | (set-marker overlay-arrow-position (point) (current-buffer))) | 2620 | (set-marker gud-overlay-arrow-position (point) (current-buffer))) |
| 2617 | (cond ((or (< pos (point-min)) (> pos (point-max))) | 2621 | (cond ((or (< pos (point-min)) (> pos (point-max))) |
| 2618 | (widen) | 2622 | (widen) |
| 2619 | (goto-char pos)))) | 2623 | (goto-char pos)))) |
| 2620 | (if window (set-window-point window overlay-arrow-position)))))) | 2624 | (if window (set-window-point window gud-overlay-arrow-position)))))) |
| 2621 | 2625 | ||
| 2622 | ;; The gud-call function must do the right thing whether its invoking | 2626 | ;; The gud-call function must do the right thing whether its invoking |
| 2623 | ;; keystroke is from the GUD buffer itself (via major-mode binding) | 2627 | ;; keystroke is from the GUD buffer itself (via major-mode binding) |
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index da6b6f772b6..23031c5bcda 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; hideif.el --- hides selected code within ifdef | 1 | ;;; hideif.el --- hides selected code within ifdef |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1988,1994,2001, 2002 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1988, 1994, 2001, 2002, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Daniel LaLiberte <liberte@holonexus.org> | 5 | ;; Author: Daniel LaLiberte <liberte@holonexus.org> |
| 6 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| @@ -197,7 +197,7 @@ how the hiding is done: | |||
| 197 | After `show-ifdefs', read-only status is restored to previous value. | 197 | After `show-ifdefs', read-only status is restored to previous value. |
| 198 | 198 | ||
| 199 | \\{hide-ifdef-mode-map}" | 199 | \\{hide-ifdef-mode-map}" |
| 200 | nil " Ifdef" nil | 200 | :group 'hide-ifdef :lighter " Ifdef" |
| 201 | (if hide-ifdef-mode | 201 | (if hide-ifdef-mode |
| 202 | (progn | 202 | (progn |
| 203 | ;; inherit global values | 203 | ;; inherit global values |
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 20af0aaf96e..5073f2bc23a 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -1098,28 +1098,40 @@ Don't save anything for STR matching `inferior-python-filter-regexp'." | |||
| 1098 | (defvar python-preoutput-continuation nil | 1098 | (defvar python-preoutput-continuation nil |
| 1099 | "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.") | 1099 | "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.") |
| 1100 | 1100 | ||
| 1101 | (defvar python-preoutput-leftover nil) | ||
| 1102 | |||
| 1101 | ;; Using this stops us getting lines in the buffer like | 1103 | ;; Using this stops us getting lines in the buffer like |
| 1102 | ;; >>> ... ... >>> | 1104 | ;; >>> ... ... >>> |
| 1103 | ;; Also look for (and delete) an `_emacs_ok' string and call | 1105 | ;; Also look for (and delete) an `_emacs_ok' string and call |
| 1104 | ;; `python-preoutput-continuation' if we get it. | 1106 | ;; `python-preoutput-continuation' if we get it. |
| 1105 | (defun python-preoutput-filter (s) | 1107 | (defun python-preoutput-filter (s) |
| 1106 | "`comint-preoutput-filter-functions' function: ignore prompts not at bol." | 1108 | "`comint-preoutput-filter-functions' function: ignore prompts not at bol." |
| 1109 | (when python-preoutput-leftover | ||
| 1110 | (setq s (concat python-preoutput-leftover s)) | ||
| 1111 | (setq python-preoutput-leftover nil)) | ||
| 1107 | (cond ((and (string-match (rx (and string-start (repeat 3 (any ".>")) | 1112 | (cond ((and (string-match (rx (and string-start (repeat 3 (any ".>")) |
| 1108 | " " string-end)) | 1113 | " " string-end)) |
| 1109 | s) | 1114 | s) |
| 1110 | (/= (let ((inhibit-field-text-motion t)) | 1115 | (/= (let ((inhibit-field-text-motion t)) |
| 1111 | (line-beginning-position)) | 1116 | (line-beginning-position)) |
| 1112 | (point))) | 1117 | (point))) |
| 1113 | "") | 1118 | "") |
| 1114 | ((string= s "_emacs_ok\n") | 1119 | ((string= s "_emacs_ok\n") |
| 1115 | (when python-preoutput-continuation | 1120 | (when python-preoutput-continuation |
| 1116 | (funcall python-preoutput-continuation) | 1121 | (funcall python-preoutput-continuation) |
| 1117 | (setq python-preoutput-continuation nil)) | 1122 | (setq python-preoutput-continuation nil)) |
| 1118 | "") | 1123 | "") |
| 1119 | ((string-match "_emacs_out \\(.*\\)\n" s) | 1124 | ((string-match "_emacs_out \\(.*\\)\n" s) |
| 1120 | (setq python-preoutput-result (match-string 1 s)) | 1125 | (setq python-preoutput-result (match-string 1 s)) |
| 1126 | "") | ||
| 1127 | ((string-match ".*\n" s) | ||
| 1128 | s) | ||
| 1129 | ((or (eq t (compare-strings s nil nil "_emacs_ok\n" nil (length s))) | ||
| 1130 | (let ((end (min (length "_emacs_out ") (length s)))) | ||
| 1131 | (eq t (compare-strings s nil end "_emacs_out " nil end)))) | ||
| 1132 | (setq python-preoutput-leftover s) | ||
| 1121 | "") | 1133 | "") |
| 1122 | (t s))) | 1134 | (t s))) |
| 1123 | 1135 | ||
| 1124 | ;;;###autoload | 1136 | ;;;###autoload |
| 1125 | (defun run-python (&optional cmd noshow) | 1137 | (defun run-python (&optional cmd noshow) |
| @@ -1359,7 +1371,9 @@ The result is what follows `_emacs_out' in the output (or nil)." | |||
| 1359 | (let ((proc (python-proc))) | 1371 | (let ((proc (python-proc))) |
| 1360 | (python-send-string string) | 1372 | (python-send-string string) |
| 1361 | (setq python-preoutput-result nil) | 1373 | (setq python-preoutput-result nil) |
| 1362 | (accept-process-output proc 5) | 1374 | (while (progn |
| 1375 | (accept-process-output proc 5) | ||
| 1376 | python-preoutput-leftover)) | ||
| 1363 | python-preoutput-result)) | 1377 | python-preoutput-result)) |
| 1364 | 1378 | ||
| 1365 | ;; Fixme: try to make it work with point in the arglist. Also, is | 1379 | ;; Fixme: try to make it work with point in the arglist. Also, is |
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el index d9ffea852d1..c792b59ad87 100644 --- a/lisp/progmodes/scheme.el +++ b/lisp/progmodes/scheme.el | |||
| @@ -90,7 +90,7 @@ | |||
| 90 | (modify-syntax-entry ?\] ")[ " st) | 90 | (modify-syntax-entry ?\] ")[ " st) |
| 91 | (modify-syntax-entry ?{ "(} " st) | 91 | (modify-syntax-entry ?{ "(} " st) |
| 92 | (modify-syntax-entry ?} "){ " st) | 92 | (modify-syntax-entry ?} "){ " st) |
| 93 | (modify-syntax-entry ?\| " 23" st) | 93 | (modify-syntax-entry ?\| "\" 23b" st) |
| 94 | 94 | ||
| 95 | ;; Other atom delimiters | 95 | ;; Other atom delimiters |
| 96 | (modify-syntax-entry ?\( "() " st) | 96 | (modify-syntax-entry ?\( "() " st) |
| @@ -103,7 +103,7 @@ | |||
| 103 | ;; Special characters | 103 | ;; Special characters |
| 104 | (modify-syntax-entry ?, "' " st) | 104 | (modify-syntax-entry ?, "' " st) |
| 105 | (modify-syntax-entry ?@ "' " st) | 105 | (modify-syntax-entry ?@ "' " st) |
| 106 | (modify-syntax-entry ?# "' 14" st) | 106 | (modify-syntax-entry ?# "' 14bn" st) |
| 107 | (modify-syntax-entry ?\\ "\\ " st) | 107 | (modify-syntax-entry ?\\ "\\ " st) |
| 108 | st)) | 108 | st)) |
| 109 | 109 | ||
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index 4dba6b61a56..24ae19b0ad4 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; tcl.el --- Tcl code editing commands for Emacs | 1 | ;;; tcl.el --- Tcl code editing commands for Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994,98,1999,2000,01,02,2003,2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Maintainer: FSF | 6 | ;; Maintainer: FSF |
| 6 | ;; Author: Tom Tromey <tromey@redhat.com> | 7 | ;; Author: Tom Tromey <tromey@redhat.com> |
| @@ -469,10 +470,7 @@ Uses variables `tcl-proc-regexp' and `tcl-keyword-list'." | |||
| 469 | ;; Keywords. Only recognized if surrounded by whitespace. | 470 | ;; Keywords. Only recognized if surrounded by whitespace. |
| 470 | ;; FIXME consider using "not word or symbol", not | 471 | ;; FIXME consider using "not word or symbol", not |
| 471 | ;; "whitespace". | 472 | ;; "whitespace". |
| 472 | (cons (concat "\\(\\s-\\|^\\)" | 473 | (cons (concat "\\_<" (regexp-opt tcl-keyword-list t) "\\_>") |
| 473 | ;; FIXME Use regexp-quote? | ||
| 474 | (regexp-opt tcl-keyword-list t) | ||
| 475 | "\\(\\s-\\|$\\)") | ||
| 476 | 2)))) | 474 | 2)))) |
| 477 | 475 | ||
| 478 | (if tcl-proc-regexp | 476 | (if tcl-proc-regexp |
| @@ -1507,5 +1505,5 @@ The first line is assumed to look like \"#!.../program ...\"." | |||
| 1507 | 1505 | ||
| 1508 | (provide 'tcl) | 1506 | (provide 'tcl) |
| 1509 | 1507 | ||
| 1510 | ;;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d | 1508 | ;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d |
| 1511 | ;;; tcl.el ends here | 1509 | ;;; tcl.el ends here |
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el index dae5722d430..d329e234025 100644 --- a/lisp/progmodes/which-func.el +++ b/lisp/progmodes/which-func.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; which-func.el --- print current function in mode line | 1 | ;;; which-func.el --- print current function in mode line |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1994, 1997, 1998, 2001, 2003 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1994, 1997, 1998, 2001, 2003, 2005 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: Alex Rezinsky <alexr@msil.sps.mot.com> | 6 | ;; Author: Alex Rezinsky <alexr@msil.sps.mot.com> |
| 6 | ;; (doesn't seem to be responsive any more) | 7 | ;; (doesn't seem to be responsive any more) |
| @@ -251,7 +252,7 @@ If no function name is found, return nil." | |||
| 251 | (when (and (null name) | 252 | (when (and (null name) |
| 252 | (boundp 'imenu--index-alist) (null imenu--index-alist) | 253 | (boundp 'imenu--index-alist) (null imenu--index-alist) |
| 253 | (null which-function-imenu-failed)) | 254 | (null which-function-imenu-failed)) |
| 254 | (imenu--make-index-alist) | 255 | (imenu--make-index-alist t) |
| 255 | (unless imenu--index-alist | 256 | (unless imenu--index-alist |
| 256 | (make-local-variable 'which-function-imenu-failed) | 257 | (make-local-variable 'which-function-imenu-failed) |
| 257 | (setq which-function-imenu-failed t))) | 258 | (setq which-function-imenu-failed t))) |
| @@ -291,5 +292,5 @@ If no function name is found, return nil." | |||
| 291 | 292 | ||
| 292 | (provide 'which-func) | 293 | (provide 'which-func) |
| 293 | 294 | ||
| 294 | ;;; arch-tag: fa8a55c7-bfe3-4ffc-95ab-01bf21796827 | 295 | ;; arch-tag: fa8a55c7-bfe3-4ffc-95ab-01bf21796827 |
| 295 | ;;; which-func.el ends here | 296 | ;;; which-func.el ends here |
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el index 6f14538ff4d..ba858959cc3 100644 --- a/lisp/ps-mule.el +++ b/lisp/ps-mule.el | |||
| @@ -511,7 +511,10 @@ element of the list." | |||
| 511 | 511 | ||
| 512 | (defsubst ps-mule-printable-p (charset) | 512 | (defsubst ps-mule-printable-p (charset) |
| 513 | "Non-nil if characters in CHARSET is printable." | 513 | "Non-nil if characters in CHARSET is printable." |
| 514 | (ps-mule-get-font-spec charset 'normal)) | 514 | ;; ASCII and Latin-1 are always printable. |
| 515 | (or (eq charset 'ascii) | ||
| 516 | (eq charset 'latin-iso8859-1) | ||
| 517 | (ps-mule-get-font-spec charset 'normal))) | ||
| 515 | 518 | ||
| 516 | (defconst ps-mule-external-libraries | 519 | (defconst ps-mule-external-libraries |
| 517 | '((builtin nil nil | 520 | '((builtin nil nil |
| @@ -824,7 +827,9 @@ Returns the value: | |||
| 824 | 827 | ||
| 825 | Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of | 828 | Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of |
| 826 | the sequence." | 829 | the sequence." |
| 827 | (setq ps-mule-current-charset (charset-after from)) | 830 | (let ((ch (char-after from))) |
| 831 | (setq ps-mule-current-charset | ||
| 832 | (char-charset (or (aref ps-print-translation-table ch) ch)))) | ||
| 828 | (let* ((wrappoint (ps-mule-find-wrappoint | 833 | (let* ((wrappoint (ps-mule-find-wrappoint |
| 829 | from to (ps-avg-char-width 'ps-font-for-text))) | 834 | from to (ps-avg-char-width 'ps-font-for-text))) |
| 830 | (to (car wrappoint)) | 835 | (to (car wrappoint)) |
| @@ -832,6 +837,10 @@ the sequence." | |||
| 832 | (ps-font-alist 'ps-font-for-text)))) | 837 | (ps-font-alist 'ps-font-for-text)))) |
| 833 | (font-spec (ps-mule-get-font-spec ps-mule-current-charset font-type)) | 838 | (font-spec (ps-mule-get-font-spec ps-mule-current-charset font-type)) |
| 834 | (string (buffer-substring-no-properties from to))) | 839 | (string (buffer-substring-no-properties from to))) |
| 840 | (dotimes (i (length string)) | ||
| 841 | (let ((ch (aref ps-print-translation-table (aref string i)))) | ||
| 842 | (if ch | ||
| 843 | (aset string i ch)))) | ||
| 835 | (cond | 844 | (cond |
| 836 | ((= from to) | 845 | ((= from to) |
| 837 | ;; We can't print any more characters in the current line. | 846 | ;; We can't print any more characters in the current line. |
| @@ -1393,6 +1402,7 @@ FONTTAG should be a string \"/h0\" or \"/h1\"." | |||
| 1393 | (defun ps-mule-show-warning (charsets from to header-footer-list) | 1402 | (defun ps-mule-show-warning (charsets from to header-footer-list) |
| 1394 | (let ((table (make-category-table)) | 1403 | (let ((table (make-category-table)) |
| 1395 | (buf (current-buffer)) | 1404 | (buf (current-buffer)) |
| 1405 | (max-unprintable-chars 15) | ||
| 1396 | char-pos-list) | 1406 | char-pos-list) |
| 1397 | (define-category ?u "Unprintable charset" table) | 1407 | (define-category ?u "Unprintable charset" table) |
| 1398 | (dolist (cs charsets) | 1408 | (dolist (cs charsets) |
| @@ -1400,19 +1410,22 @@ FONTTAG should be a string \"/h0\" or \"/h1\"." | |||
| 1400 | (with-category-table table | 1410 | (with-category-table table |
| 1401 | (save-excursion | 1411 | (save-excursion |
| 1402 | (goto-char from) | 1412 | (goto-char from) |
| 1403 | (while (and (< (length char-pos-list) 20) | 1413 | (while (and (<= (length char-pos-list) max-unprintable-chars) |
| 1404 | (re-search-forward "\\cu" to t)) | 1414 | (re-search-forward "\\cu" to t)) |
| 1405 | (push (cons (preceding-char) (1- (point))) char-pos-list)) | 1415 | (push (cons (preceding-char) (1- (point))) char-pos-list)))) |
| 1406 | (setq char-pos-list (nreverse char-pos-list)))) | ||
| 1407 | (with-output-to-temp-buffer "*Warning*" | 1416 | (with-output-to-temp-buffer "*Warning*" |
| 1408 | (with-current-buffer standard-output | 1417 | (with-current-buffer standard-output |
| 1409 | (when char-pos-list | 1418 | (when char-pos-list |
| 1410 | (let ((func #'(lambda (buf pos) | 1419 | (let ((func #'(lambda (buf pos) |
| 1411 | (when (buffer-live-p buf) | 1420 | (when (buffer-live-p buf) |
| 1412 | (pop-to-buffer buf) | 1421 | (pop-to-buffer buf) |
| 1413 | (goto-char pos))))) | 1422 | (goto-char pos)))) |
| 1423 | (more nil)) | ||
| 1424 | (if (>= (length char-pos-list) max-unprintable-chars) | ||
| 1425 | (setq char-pos-list (cdr char-pos-list) | ||
| 1426 | more t)) | ||
| 1414 | (insert "These characters in the buffer can't be printed:\n") | 1427 | (insert "These characters in the buffer can't be printed:\n") |
| 1415 | (dolist (elt char-pos-list) | 1428 | (dolist (elt (nreverse char-pos-list)) |
| 1416 | (insert " ") | 1429 | (insert " ") |
| 1417 | (insert-text-button (string (car elt)) | 1430 | (insert-text-button (string (car elt)) |
| 1418 | :type 'help-xref | 1431 | :type 'help-xref |
| @@ -1421,8 +1434,10 @@ FONTTAG should be a string \"/h0\" or \"/h1\"." | |||
| 1421 | 'help-function func | 1434 | 'help-function func |
| 1422 | 'help-args (list buf (cdr elt))) | 1435 | 'help-args (list buf (cdr elt))) |
| 1423 | (insert ",")) | 1436 | (insert ",")) |
| 1424 | ;; Delete the last comma. | 1437 | (if more |
| 1425 | (delete-char -1) | 1438 | (insert " and more...") |
| 1439 | ;; Delete the last comma. | ||
| 1440 | (delete-char -1)) | ||
| 1426 | (insert "\nClick them to jump to the buffer position,\n" | 1441 | (insert "\nClick them to jump to the buffer position,\n" |
| 1427 | (substitute-command-keys "\ | 1442 | (substitute-command-keys "\ |
| 1428 | or \\[universal-argument] \\[what-cursor-position] will give information about them.\n")))) | 1443 | or \\[universal-argument] \\[what-cursor-position] will give information about them.\n")))) |
| @@ -1469,13 +1484,15 @@ This checks if all multi-byte characters in the region are printable or not." | |||
| 1469 | (setq ps-mule-charset-list | 1484 | (setq ps-mule-charset-list |
| 1470 | (delq 'ascii (delq 'eight-bit-control | 1485 | (delq 'ascii (delq 'eight-bit-control |
| 1471 | (delq 'eight-bit-graphic | 1486 | (delq 'eight-bit-graphic |
| 1472 | (find-charset-region from to)))) | 1487 | (find-charset-region |
| 1488 | from to ps-print-translation-table)))) | ||
| 1473 | ps-mule-header-charsets | 1489 | ps-mule-header-charsets |
| 1474 | (delq 'ascii (delq 'eight-bit-control | 1490 | (delq 'ascii (delq 'eight-bit-control |
| 1475 | (delq 'eight-bit-graphic | 1491 | (delq 'eight-bit-graphic |
| 1476 | (find-charset-string | 1492 | (find-charset-string |
| 1477 | (mapconcat | 1493 | (mapconcat |
| 1478 | 'identity header-footer-list "")))))) | 1494 | 'identity header-footer-list "") |
| 1495 | ps-print-translation-table))))) | ||
| 1479 | (dolist (cs ps-mule-charset-list) | 1496 | (dolist (cs ps-mule-charset-list) |
| 1480 | (or (ps-mule-printable-p cs) | 1497 | (or (ps-mule-printable-p cs) |
| 1481 | (push cs unprintable-charsets))) | 1498 | (push cs unprintable-charsets))) |
diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 726b0e4402c..b47ea3d4f89 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el | |||
| @@ -6150,6 +6150,19 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 6150 | 6150 | ||
| 6151 | (defvar ps-current-effect 0) | 6151 | (defvar ps-current-effect 0) |
| 6152 | 6152 | ||
| 6153 | (defvar ps-print-translation-table | ||
| 6154 | (let ((tbl (make-char-table 'translation-table nil))) | ||
| 6155 | (if (and (boundp 'ucs-mule-8859-to-mule-unicode) | ||
| 6156 | (char-table-p ucs-mule-8859-to-mule-unicode)) | ||
| 6157 | (map-char-table | ||
| 6158 | #'(lambda (k v) | ||
| 6159 | (if (and v (eq (char-charset v) 'latin-iso8859-1) (/= k v)) | ||
| 6160 | (aset tbl k v))) | ||
| 6161 | ucs-mule-8859-to-mule-unicode)) | ||
| 6162 | tbl) | ||
| 6163 | "Translation table for PostScript printing. | ||
| 6164 | The default value is a table that translates non-Latin-1 Latin characters | ||
| 6165 | to the equivalent Latin-1 characters.") | ||
| 6153 | 6166 | ||
| 6154 | (defun ps-plot-region (from to font &optional fg-color bg-color effects) | 6167 | (defun ps-plot-region (from to font &optional fg-color bg-color effects) |
| 6155 | (or (equal font ps-current-font) | 6168 | (or (equal font ps-current-font) |
| @@ -6240,11 +6253,17 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 6240 | (ps-plot 'ps-mule-plot-composition match-point (point) bg-color)) | 6253 | (ps-plot 'ps-mule-plot-composition match-point (point) bg-color)) |
| 6241 | 6254 | ||
| 6242 | ((> match 255) ; a multi-byte character | 6255 | ((> match 255) ; a multi-byte character |
| 6256 | (setq match (or (aref ps-print-translation-table match) match)) | ||
| 6243 | (let* ((charset (char-charset match)) | 6257 | (let* ((charset (char-charset match)) |
| 6244 | (composition (ps-e-find-composition match-point to)) | 6258 | (composition (ps-e-find-composition match-point to)) |
| 6245 | (stop (if (nth 2 composition) (car composition) to))) | 6259 | (stop (if (nth 2 composition) (car composition) to))) |
| 6246 | (or (eq charset 'composition) | 6260 | (or (eq charset 'composition) |
| 6247 | (while (and (< (point) stop) (eq (charset-after) charset)) | 6261 | (while (and (< (point) stop) |
| 6262 | (let ((ch (following-char))) | ||
| 6263 | (setq ch | ||
| 6264 | (or (aref ps-print-translation-table ch) | ||
| 6265 | ch)) | ||
| 6266 | (eq (char-charset ch) charset))) | ||
| 6248 | (forward-char 1))) | 6267 | (forward-char 1))) |
| 6249 | (ps-plot 'ps-mule-plot-string match-point (point) bg-color))) | 6268 | (ps-plot 'ps-mule-plot-string match-point (point) bg-color))) |
| 6250 | ; characters from ^@ to ^_ and | 6269 | ; characters from ^@ to ^_ and |
diff --git a/lisp/register.el b/lisp/register.el index 253207c3140..eaa53446c56 100644 --- a/lisp/register.el +++ b/lisp/register.el | |||
| @@ -277,7 +277,7 @@ Interactively, second arg is non-nil if prefix arg is supplied." | |||
| 277 | Called from program, takes four args: REGISTER, START, END and DELETE-FLAG. | 277 | Called from program, takes four args: REGISTER, START, END and DELETE-FLAG. |
| 278 | START and END are buffer positions indicating what to copy." | 278 | START and END are buffer positions indicating what to copy." |
| 279 | (interactive "cCopy to register: \nr\nP") | 279 | (interactive "cCopy to register: \nr\nP") |
| 280 | (set-register register (buffer-substring start end)) | 280 | (set-register register (filter-buffer-substring start end)) |
| 281 | (if delete-flag (delete-region start end))) | 281 | (if delete-flag (delete-region start end))) |
| 282 | 282 | ||
| 283 | (defun append-to-register (register start end &optional delete-flag) | 283 | (defun append-to-register (register start end &optional delete-flag) |
| @@ -289,7 +289,7 @@ START and END are buffer positions indicating what to append." | |||
| 289 | (or (stringp (get-register register)) | 289 | (or (stringp (get-register register)) |
| 290 | (error "Register does not contain text")) | 290 | (error "Register does not contain text")) |
| 291 | (set-register register (concat (get-register register) | 291 | (set-register register (concat (get-register register) |
| 292 | (buffer-substring start end))) | 292 | (filter-buffer-substring start end))) |
| 293 | (if delete-flag (delete-region start end))) | 293 | (if delete-flag (delete-region start end))) |
| 294 | 294 | ||
| 295 | (defun prepend-to-register (register start end &optional delete-flag) | 295 | (defun prepend-to-register (register start end &optional delete-flag) |
| @@ -300,7 +300,7 @@ START and END are buffer positions indicating what to prepend." | |||
| 300 | (interactive "cPrepend to register: \nr\nP") | 300 | (interactive "cPrepend to register: \nr\nP") |
| 301 | (or (stringp (get-register register)) | 301 | (or (stringp (get-register register)) |
| 302 | (error "Register does not contain text")) | 302 | (error "Register does not contain text")) |
| 303 | (set-register register (concat (buffer-substring start end) | 303 | (set-register register (concat (filter-buffer-substring start end) |
| 304 | (get-register register))) | 304 | (get-register register))) |
| 305 | (if delete-flag (delete-region start end))) | 305 | (if delete-flag (delete-region start end))) |
| 306 | 306 | ||
diff --git a/lisp/reveal.el b/lisp/reveal.el index eb6b4519f38..97411fc1669 100644 --- a/lisp/reveal.el +++ b/lisp/reveal.el | |||
| @@ -163,8 +163,8 @@ | |||
| 163 | (let ((map (make-sparse-keymap))) | 163 | (let ((map (make-sparse-keymap))) |
| 164 | ;; Override the default move-beginning-of-line and move-end-of-line | 164 | ;; Override the default move-beginning-of-line and move-end-of-line |
| 165 | ;; which skips valuable invisible text. | 165 | ;; which skips valuable invisible text. |
| 166 | (define-key map [?\C-a] 'beginning-of-line) | 166 | (define-key map [remap move-beginning-of-line] 'beginning-of-line) |
| 167 | (define-key map [?\C-e] 'end-of-line) | 167 | (define-key map [remap move-end-of-line] 'end-of-line) |
| 168 | map)) | 168 | map)) |
| 169 | 169 | ||
| 170 | ;;;###autoload | 170 | ;;;###autoload |
| @@ -175,6 +175,7 @@ Reveal mode renders invisible text around point visible again. | |||
| 175 | Interactively, with no prefix argument, toggle the mode. | 175 | Interactively, with no prefix argument, toggle the mode. |
| 176 | With universal prefix ARG (or if ARG is nil) turn mode on. | 176 | With universal prefix ARG (or if ARG is nil) turn mode on. |
| 177 | With zero or negative ARG turn mode off." | 177 | With zero or negative ARG turn mode off." |
| 178 | :group 'reveal | ||
| 178 | :lighter (global-reveal-mode nil " Reveal") | 179 | :lighter (global-reveal-mode nil " Reveal") |
| 179 | :keymap reveal-mode-map | 180 | :keymap reveal-mode-map |
| 180 | (if reveal-mode | 181 | (if reveal-mode |
diff --git a/lisp/simple.el b/lisp/simple.el index 20563dc5433..22716a819f4 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -35,6 +35,13 @@ | |||
| 35 | (autoload 'widget-convert "wid-edit") | 35 | (autoload 'widget-convert "wid-edit") |
| 36 | (autoload 'shell-mode "shell")) | 36 | (autoload 'shell-mode "shell")) |
| 37 | 37 | ||
| 38 | (defcustom idle-update-delay 0.5 | ||
| 39 | "*Idle time delay before updating various things on the screen. | ||
| 40 | Various Emacs features that update auxiliary information when point moves | ||
| 41 | wait this many seconds after Emacs becomes idle before doing an update." | ||
| 42 | :type 'number | ||
| 43 | :group 'display | ||
| 44 | :version "22.1") | ||
| 38 | 45 | ||
| 39 | (defgroup killing nil | 46 | (defgroup killing nil |
| 40 | "Killing and yanking commands." | 47 | "Killing and yanking commands." |
| @@ -105,6 +112,8 @@ If `fringe-arrow', indicate the locus by the fringe arrow." | |||
| 105 | :group 'next-error | 112 | :group 'next-error |
| 106 | :version "22.1") | 113 | :version "22.1") |
| 107 | 114 | ||
| 115 | (defvar next-error-highlight-timer nil) | ||
| 116 | |||
| 108 | (defvar next-error-last-buffer nil | 117 | (defvar next-error-last-buffer nil |
| 109 | "The most recent next-error buffer. | 118 | "The most recent next-error buffer. |
| 110 | A buffer becomes most recent when its compilation, grep, or | 119 | A buffer becomes most recent when its compilation, grep, or |
| @@ -293,7 +302,7 @@ select the source buffer." | |||
| 293 | When turned on, cursor motion in the compilation, grep, occur or diff | 302 | When turned on, cursor motion in the compilation, grep, occur or diff |
| 294 | buffer causes automatic display of the corresponding source code | 303 | buffer causes automatic display of the corresponding source code |
| 295 | location." | 304 | location." |
| 296 | nil " Fol" nil | 305 | :group 'next-error :init-value " Fol" |
| 297 | (if (not next-error-follow-minor-mode) | 306 | (if (not next-error-follow-minor-mode) |
| 298 | (remove-hook 'post-command-hook 'next-error-follow-mode-post-command-hook t) | 307 | (remove-hook 'post-command-hook 'next-error-follow-mode-post-command-hook t) |
| 299 | (add-hook 'post-command-hook 'next-error-follow-mode-post-command-hook nil t) | 308 | (add-hook 'post-command-hook 'next-error-follow-mode-post-command-hook nil t) |
| @@ -2216,6 +2225,42 @@ These commands include \\[set-mark-command] and \\[start-kbd-macro]." | |||
| 2216 | (reset-this-command-lengths) | 2225 | (reset-this-command-lengths) |
| 2217 | (restore-overriding-map)) | 2226 | (restore-overriding-map)) |
| 2218 | 2227 | ||
| 2228 | (defvar buffer-substring-filters nil | ||
| 2229 | "List of filter functions for `filter-buffer-substring'. | ||
| 2230 | Each function must accept a single argument, a string, and return | ||
| 2231 | a string. The buffer substring is passed to the first function | ||
| 2232 | in the list, and the return value of each function is passed to | ||
| 2233 | the next. The return value of the last function is used as the | ||
| 2234 | return value of `filter-buffer-substring'. | ||
| 2235 | |||
| 2236 | If this variable is nil, no filtering is performed.") | ||
| 2237 | |||
| 2238 | (defun filter-buffer-substring (beg end &optional delete) | ||
| 2239 | "Return the buffer substring between BEG and END, after filtering. | ||
| 2240 | The buffer substring is passed through each of the filter | ||
| 2241 | functions in `buffer-substring-filters', and the value from the | ||
| 2242 | last filter function is returned. If `buffer-substring-filters' | ||
| 2243 | is nil, the buffer substring is returned unaltered. | ||
| 2244 | |||
| 2245 | If DELETE is non-nil, the text between BEG and END is deleted | ||
| 2246 | from the buffer. | ||
| 2247 | |||
| 2248 | Point is temporarily set to BEG before caling | ||
| 2249 | `buffer-substring-filters', in case the functions need to know | ||
| 2250 | where the text came from. | ||
| 2251 | |||
| 2252 | This function should be used instead of `buffer-substring' or | ||
| 2253 | `delete-and-extract-region' when you want to allow filtering to | ||
| 2254 | take place. For example, major or minor modes can use | ||
| 2255 | `buffer-substring-filters' to extract characters that are special | ||
| 2256 | to a buffer, and should not be copied into other buffers." | ||
| 2257 | (save-excursion | ||
| 2258 | (goto-char beg) | ||
| 2259 | (let ((string (if delete (delete-and-extract-region beg end) | ||
| 2260 | (buffer-substring beg end)))) | ||
| 2261 | (dolist (filter buffer-substring-filters string) | ||
| 2262 | (setq string (funcall filter string)))))) | ||
| 2263 | |||
| 2219 | ;;;; Window system cut and paste hooks. | 2264 | ;;;; Window system cut and paste hooks. |
| 2220 | 2265 | ||
| 2221 | (defvar interprogram-cut-function nil | 2266 | (defvar interprogram-cut-function nil |
| @@ -2396,7 +2441,7 @@ specifies the yank-handler text property to be set on the killed | |||
| 2396 | text. See `insert-for-yank'." | 2441 | text. See `insert-for-yank'." |
| 2397 | (interactive "r") | 2442 | (interactive "r") |
| 2398 | (condition-case nil | 2443 | (condition-case nil |
| 2399 | (let ((string (delete-and-extract-region beg end))) | 2444 | (let ((string (filter-buffer-substring beg end t))) |
| 2400 | (when string ;STRING is nil if BEG = END | 2445 | (when string ;STRING is nil if BEG = END |
| 2401 | ;; Add that string to the kill ring, one way or another. | 2446 | ;; Add that string to the kill ring, one way or another. |
| 2402 | (if (eq last-command 'kill-region) | 2447 | (if (eq last-command 'kill-region) |
| @@ -2432,8 +2477,8 @@ If `interprogram-cut-function' is non-nil, also save the text for a window | |||
| 2432 | system cut and paste." | 2477 | system cut and paste." |
| 2433 | (interactive "r") | 2478 | (interactive "r") |
| 2434 | (if (eq last-command 'kill-region) | 2479 | (if (eq last-command 'kill-region) |
| 2435 | (kill-append (buffer-substring beg end) (< end beg)) | 2480 | (kill-append (filter-buffer-substring beg end) (< end beg)) |
| 2436 | (kill-new (buffer-substring beg end))) | 2481 | (kill-new (filter-buffer-substring beg end))) |
| 2437 | (if transient-mark-mode | 2482 | (if transient-mark-mode |
| 2438 | (setq deactivate-mark t)) | 2483 | (setq deactivate-mark t)) |
| 2439 | nil) | 2484 | nil) |
| @@ -2958,7 +3003,7 @@ the user to see that the mark has moved, and you want the previous | |||
| 2958 | mark position to be lost. | 3003 | mark position to be lost. |
| 2959 | 3004 | ||
| 2960 | Normally, when a new mark is set, the old one should go on the stack. | 3005 | Normally, when a new mark is set, the old one should go on the stack. |
| 2961 | This is why most applications should use push-mark, not set-mark. | 3006 | This is why most applications should use `push-mark', not `set-mark'. |
| 2962 | 3007 | ||
| 2963 | Novice Emacs Lisp programmers often try to use the mark for the wrong | 3008 | Novice Emacs Lisp programmers often try to use the mark for the wrong |
| 2964 | purposes. The mark saves a location for the user's convenience. | 3009 | purposes. The mark saves a location for the user's convenience. |
| @@ -5186,14 +5231,6 @@ See also `normal-erase-is-backspace'." | |||
| 5186 | (message "Delete key deletes %s" | 5231 | (message "Delete key deletes %s" |
| 5187 | (if normal-erase-is-backspace "forward" "backward")))) | 5232 | (if normal-erase-is-backspace "forward" "backward")))) |
| 5188 | 5233 | ||
| 5189 | (defcustom idle-update-delay 0.5 | ||
| 5190 | "*Idle time delay before updating various things on the screen. | ||
| 5191 | Various Emacs features that update auxiliary information when point moves | ||
| 5192 | wait this many seconds after Emacs becomes idle before doing an update." | ||
| 5193 | :type 'number | ||
| 5194 | :group 'display | ||
| 5195 | :version "22.1") | ||
| 5196 | |||
| 5197 | (defvar vis-mode-saved-buffer-invisibility-spec nil | 5234 | (defvar vis-mode-saved-buffer-invisibility-spec nil |
| 5198 | "Saved value of `buffer-invisibility-spec' when Visible mode is on.") | 5235 | "Saved value of `buffer-invisibility-spec' when Visible mode is on.") |
| 5199 | 5236 | ||
| @@ -5205,6 +5242,7 @@ Enabling Visible mode makes all invisible text temporarily visible. | |||
| 5205 | Disabling Visible mode turns off that effect. Visible mode | 5242 | Disabling Visible mode turns off that effect. Visible mode |
| 5206 | works by saving the value of `buffer-invisibility-spec' and setting it to nil." | 5243 | works by saving the value of `buffer-invisibility-spec' and setting it to nil." |
| 5207 | :lighter " Vis" | 5244 | :lighter " Vis" |
| 5245 | :group 'editing-basics | ||
| 5208 | (when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec) | 5246 | (when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec) |
| 5209 | (setq buffer-invisibility-spec vis-mode-saved-buffer-invisibility-spec) | 5247 | (setq buffer-invisibility-spec vis-mode-saved-buffer-invisibility-spec) |
| 5210 | (kill-local-variable 'vis-mode-saved-buffer-invisibility-spec)) | 5248 | (kill-local-variable 'vis-mode-saved-buffer-invisibility-spec)) |
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 35903dcf749..d6a93a935d6 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts | 1 | ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999, 2000, 01, 03, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> | 5 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> |
| 6 | ;; Keywords: revision-control merge diff3 cvs conflict | 6 | ;; Keywords: revision-control merge diff3 cvs conflict |
| @@ -667,7 +667,7 @@ buffer names." | |||
| 667 | (define-minor-mode smerge-mode | 667 | (define-minor-mode smerge-mode |
| 668 | "Minor mode to simplify editing output from the diff3 program. | 668 | "Minor mode to simplify editing output from the diff3 program. |
| 669 | \\{smerge-mode-map}" | 669 | \\{smerge-mode-map}" |
| 670 | nil " SMerge" nil | 670 | :group 'smerge :lighter " SMerge" |
| 671 | (when (and (boundp 'font-lock-mode) font-lock-mode) | 671 | (when (and (boundp 'font-lock-mode) font-lock-mode) |
| 672 | (set (make-local-variable 'font-lock-multiline) t) | 672 | (set (make-local-variable 'font-lock-multiline) t) |
| 673 | (save-excursion | 673 | (save-excursion |
diff --git a/lisp/startup.el b/lisp/startup.el index aa7a16d1356..e3c2617c420 100644 --- a/lisp/startup.el +++ b/lisp/startup.el | |||
| @@ -1008,8 +1008,27 @@ If this is nil, no message will be displayed." | |||
| 1008 | using the mouse.\n\n" | 1008 | using the mouse.\n\n" |
| 1009 | :face (variable-pitch :weight bold) | 1009 | :face (variable-pitch :weight bold) |
| 1010 | "Important Help menu items:\n" | 1010 | "Important Help menu items:\n" |
| 1011 | :face variable-pitch "\ | 1011 | :face variable-pitch |
| 1012 | Emacs Tutorial\tLearn-by-doing tutorial for using Emacs efficiently | 1012 | (lambda () |
| 1013 | (let* ((en "TUTORIAL") | ||
| 1014 | (tut (or (get-language-info current-language-environment | ||
| 1015 | 'tutorial) | ||
| 1016 | en)) | ||
| 1017 | (title (with-temp-buffer | ||
| 1018 | (insert-file-contents | ||
| 1019 | (expand-file-name tut data-directory) | ||
| 1020 | nil 0 256) | ||
| 1021 | (search-forward ".") | ||
| 1022 | (buffer-substring (point-min) (1- (point)))))) | ||
| 1023 | ;; If there is a specific tutorial for the current language | ||
| 1024 | ;; environment and it is not English, append its title. | ||
| 1025 | (concat | ||
| 1026 | "Emacs Tutorial\tLearn how to use Emacs efficiently" | ||
| 1027 | (if (string= en tut) | ||
| 1028 | "" | ||
| 1029 | (concat " (" title ")")) | ||
| 1030 | "\n"))) | ||
| 1031 | :face variable-pitch "\ | ||
| 1013 | Emacs FAQ\tFrequently asked questions and answers | 1032 | Emacs FAQ\tFrequently asked questions and answers |
| 1014 | Read the Emacs Manual\tView the Emacs manual using Info | 1033 | Read the Emacs Manual\tView the Emacs manual using Info |
| 1015 | \(Non)Warranty\tGNU Emacs comes with " | 1034 | \(Non)Warranty\tGNU Emacs comes with " |
| @@ -1073,14 +1092,18 @@ Values less than 60 seconds are ignored." | |||
| 1073 | 1092 | ||
| 1074 | (defun fancy-splash-insert (&rest args) | 1093 | (defun fancy-splash-insert (&rest args) |
| 1075 | "Insert text into the current buffer, with faces. | 1094 | "Insert text into the current buffer, with faces. |
| 1076 | Arguments from ARGS should be either strings or pairs `:face FACE', | 1095 | Arguments from ARGS should be either strings, functions called |
| 1096 | with no args that return a string, or pairs `:face FACE', | ||
| 1077 | where FACE is a valid face specification, as it can be used with | 1097 | where FACE is a valid face specification, as it can be used with |
| 1078 | `put-text-properties'." | 1098 | `put-text-properties'." |
| 1079 | (let ((current-face nil)) | 1099 | (let ((current-face nil)) |
| 1080 | (while args | 1100 | (while args |
| 1081 | (if (eq (car args) :face) | 1101 | (if (eq (car args) :face) |
| 1082 | (setq args (cdr args) current-face (car args)) | 1102 | (setq args (cdr args) current-face (car args)) |
| 1083 | (insert (propertize (car args) | 1103 | (insert (propertize (let ((it (car args))) |
| 1104 | (if (functionp it) | ||
| 1105 | (funcall it) | ||
| 1106 | it)) | ||
| 1084 | 'face current-face | 1107 | 'face current-face |
| 1085 | 'help-echo fancy-splash-help-echo))) | 1108 | 'help-echo fancy-splash-help-echo))) |
| 1086 | (setq args (cdr args))))) | 1109 | (setq args (cdr args))))) |
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index fc677b3de44..3e5b77d8baa 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; bibtex.el --- BibTeX mode for GNU Emacs | 1 | ;;; bibtex.el --- BibTeX mode for GNU Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004 | 3 | ;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2004, 2005 |
| 4 | ;; Free Software Foundation, Inc. | 4 | ;; Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de> | 6 | ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de> |
| @@ -784,41 +784,56 @@ Used by `bibtex-complete-crossref-cleanup' and `bibtex-copy-summary-as-kill'." | |||
| 784 | (function :tag "Personalized function"))) | 784 | (function :tag "Personalized function"))) |
| 785 | 785 | ||
| 786 | (defcustom bibtex-generate-url-list | 786 | (defcustom bibtex-generate-url-list |
| 787 | '((("url" . ".*:.*")) | 787 | '((("url" . ".*:.*"))) |
| 788 | ;; Example of a complex setup. | ||
| 789 | (("journal" . "\\<\\(PR[ABCDEL]?\\|RMP\\)\\>") | ||
| 790 | "http://link.aps.org/abstract/" | ||
| 791 | ("journal" ".*" downcase) | ||
| 792 | "/v" | ||
| 793 | ("volume" ".*" 0) | ||
| 794 | "/p" | ||
| 795 | ("pages" "\\`\\([0-9]+\\)" 1))) | ||
| 796 | "List of schemes for generating the URL of a BibTeX entry. | 788 | "List of schemes for generating the URL of a BibTeX entry. |
| 797 | These schemes are used by `bibtex-url'. | 789 | These schemes are used by `bibtex-url'. |
| 798 | 790 | ||
| 799 | Each scheme is of the form ((FIELD . REGEXP) STEP...). | 791 | Each scheme should have one of these forms: |
| 800 | 792 | ||
| 801 | FIELD is a field name as returned by `bibtex-parse-entry'. | 793 | ((FIELD . REGEXP)) |
| 802 | REGEXP is matched against the text of FIELD. If the match succeeds, then | 794 | ((FIELD . REGEXP) STEP...) |
| 803 | this scheme is used. If no STEPs are specified the matched text is used | 795 | ((FIELD . REGEXP) STRING STEP...) |
| 804 | as the URL, otherwise the URL is built by concatenating the STEPs. | ||
| 805 | |||
| 806 | A STEP can be a string or a list (FIELD REGEXP REPLACE) in which case | ||
| 807 | the text of FIELD is matched against REGEXP, and is replaced with REPLACE. | ||
| 808 | REPLACE can be a string, or a number (which selects the corresponding submatch) | ||
| 809 | or a function called with the field's text as argument and with the | ||
| 810 | `match-data' properly set. | ||
| 811 | 796 | ||
| 812 | Case is always ignored. Always remove the field delimiters." | 797 | FIELD is a field name as returned by `bibtex-parse-entry'. |
| 798 | REGEXP is matched against the text of FIELD. If the match succeeds, | ||
| 799 | then this scheme is used. If no STRING and STEPs are specified | ||
| 800 | the matched text is used as the URL, otherwise the URL is built | ||
| 801 | by evaluating STEPs. If no STRING is specified the STEPs must result | ||
| 802 | in strings which are concatenated. Otherwise the resulting objects | ||
| 803 | are passed through `format' using STRING as format control string. | ||
| 804 | |||
| 805 | A STEP is a list (FIELD REGEXP REPLACE). The text of FIELD | ||
| 806 | is matched against REGEXP, and is replaced with REPLACE. | ||
| 807 | REPLACE can be a string, or a number (which selects the corresponding | ||
| 808 | submatch), or a function called with the field's text as argument | ||
| 809 | and with the `match-data' properly set. | ||
| 810 | |||
| 811 | Case is always ignored. Always remove the field delimiters. | ||
| 812 | |||
| 813 | The following is a complex example, see http://link.aps.org/linkfaq.html. | ||
| 814 | |||
| 815 | (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\") | ||
| 816 | \"http://link.aps.org/abstract/%s/v%s/p%s\" | ||
| 817 | (\"journal\" \".*\" downcase) | ||
| 818 | (\"volume\" \".*\" 0) | ||
| 819 | (\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))" | ||
| 813 | :group 'bibtex | 820 | :group 'bibtex |
| 814 | :type '(repeat | 821 | :type '(repeat |
| 815 | (list :tag "Scheme" | 822 | (cons :tag "Scheme" |
| 816 | (cons :tag "Matcher" :extra-offset 4 | 823 | (cons :tag "Matcher" :extra-offset 4 |
| 817 | (string :tag "BibTeX field") | 824 | (string :tag "BibTeX field") |
| 818 | (regexp :tag "Regexp")) | 825 | (regexp :tag "Regexp")) |
| 819 | (repeat :tag "Steps to generate URL" :inline t | 826 | (choice |
| 820 | (choice | 827 | (const :tag "Take match as is" nil) |
| 821 | (string :tag "Literal text") | 828 | (cons :tag "Formatted" |
| 829 | (string :tag "Format control string") | ||
| 830 | (repeat :tag "Steps to generate URL" | ||
| 831 | (list (string :tag "BibTeX field") | ||
| 832 | (regexp :tag "Regexp") | ||
| 833 | (choice (string :tag "Replacement") | ||
| 834 | (integer :tag "Sub-match") | ||
| 835 | (function :tag "Filter"))))) | ||
| 836 | (repeat :tag "Concatenated" | ||
| 822 | (list (string :tag "BibTeX field") | 837 | (list (string :tag "BibTeX field") |
| 823 | (regexp :tag "Regexp") | 838 | (regexp :tag "Regexp") |
| 824 | (choice (string :tag "Replacement") | 839 | (choice (string :tag "Replacement") |
| @@ -2662,11 +2677,10 @@ begins at the beginning of a line. We use this function for font-locking." | |||
| 2662 | (let ((lst bibtex-generate-url-list) url) | 2677 | (let ((lst bibtex-generate-url-list) url) |
| 2663 | (goto-char start) | 2678 | (goto-char start) |
| 2664 | (while (and (not found) | 2679 | (while (and (not found) |
| 2665 | (setq url (caar lst))) | 2680 | (setq url (car (pop lst)))) |
| 2666 | (setq found (and (bibtex-string= field (car url)) | 2681 | (setq found (and (bibtex-string= field (car url)) |
| 2667 | (re-search-forward (cdr url) end t) | 2682 | (re-search-forward (cdr url) end t) |
| 2668 | (>= (match-beginning 0) pnt)) | 2683 | (>= (match-beginning 0) pnt))))) |
| 2669 | lst (cdr lst)))) | ||
| 2670 | (goto-char end)) | 2684 | (goto-char end)) |
| 2671 | (if found (bibtex-button (match-beginning 0) (match-end 0) | 2685 | (if found (bibtex-button (match-beginning 0) (match-end 0) |
| 2672 | 'bibtex-url (match-beginning 0))) | 2686 | 'bibtex-url (match-beginning 0))) |
| @@ -4283,39 +4297,36 @@ The URL is generated using the schemes defined in `bibtex-generate-url-list' | |||
| 4283 | ;; Always ignore case, | 4297 | ;; Always ignore case, |
| 4284 | (case-fold-search t) | 4298 | (case-fold-search t) |
| 4285 | (lst bibtex-generate-url-list) | 4299 | (lst bibtex-generate-url-list) |
| 4286 | field url scheme) | 4300 | field url scheme obj fmt) |
| 4287 | (while (setq scheme (pop lst)) | 4301 | (while (setq scheme (pop lst)) |
| 4288 | (when (and (setq field (cdr (assoc-string (caar scheme) | 4302 | (when (and (setq field (cdr (assoc-string (caar scheme) |
| 4289 | fields-alist t))) | 4303 | fields-alist t))) |
| 4290 | ;; Always remove field delimiters | 4304 | ;; Always remove field delimiters |
| 4291 | (progn (setq field (bibtex-remove-delimiters-string field)) | 4305 | (progn (setq field (bibtex-remove-delimiters-string field)) |
| 4292 | (string-match (cdar scheme) field))) | 4306 | (string-match (cdar scheme) field))) |
| 4293 | (setq lst nil) | 4307 | (setq lst nil |
| 4294 | (if (null (cdr scheme)) | 4308 | scheme (cdr scheme) |
| 4295 | (setq url (match-string 0 field))) | 4309 | url (if (null scheme) (match-string 0 field) |
| 4296 | (dolist (step (cdr scheme)) | 4310 | (if (stringp (car scheme)) |
| 4297 | (cond ((stringp step) | 4311 | (setq fmt (pop scheme))) |
| 4298 | (setq url (concat url step))) | 4312 | (dolist (step scheme) |
| 4299 | ((setq field (cdr (assoc-string (car step) fields-alist t))) | 4313 | ;; Always remove field delimiters |
| 4300 | ;; Always remove field delimiters | 4314 | (setq field (bibtex-remove-delimiters-string |
| 4301 | (setq field (bibtex-remove-delimiters-string field)) | 4315 | (cdr (assoc-string (car step) fields-alist t)))) |
| 4302 | (if (string-match (nth 1 step) field) | 4316 | (if (string-match (nth 1 step) field) |
| 4303 | (setq field (cond | 4317 | (setq field (cond ((functionp (nth 2 step)) |
| 4304 | ((functionp (nth 2 step)) | 4318 | (funcall (nth 2 step) field)) |
| 4305 | (funcall (nth 2 step) field)) | 4319 | ((numberp (nth 2 step)) |
| 4306 | ((numberp (nth 2 step)) | 4320 | (match-string (nth 2 step) field)) |
| 4307 | (match-string (nth 2 step) field)) | 4321 | (t |
| 4308 | (t | 4322 | (replace-match (nth 2 step) t nil field)))) |
| 4309 | (replace-match (nth 2 step) t nil field)))) | 4323 | ;; If the scheme is set up correctly, |
| 4310 | ;; If the scheme is set up correctly, | 4324 | ;; we should never reach this point |
| 4311 | ;; we should never reach this point | 4325 | (error "Match failed: %s" field)) |
| 4312 | (error "Match failed: %s" field)) | 4326 | (push field obj)) |
| 4313 | (setq url (concat url field))) | 4327 | (if fmt (apply 'format fmt (nreverse obj)) |
| 4314 | ;; If the scheme is set up correctly, | 4328 | (apply 'concat (nreverse obj))))) |
| 4315 | ;; we should never reach this point | 4329 | (browse-url (message "%s" url)))) |
| 4316 | (t (error "Step failed: %s" step)))) | ||
| 4317 | (message "%s" url) | ||
| 4318 | (browse-url url))) | ||
| 4319 | (unless url (message "No URL known."))))) | 4330 | (unless url (message "No URL known."))))) |
| 4320 | 4331 | ||
| 4321 | 4332 | ||
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index 71bb6cf137d..b1b5abc488f 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; enriched.el --- read and save files in text/enriched format | 1 | ;;; enriched.el --- read and save files in text/enriched format |
| 2 | 2 | ||
| 3 | ;; Copyright (c) 1994, 1995, 1996, 2002, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (c) 1994, 1995, 1996, 2002, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Boris Goldowsky <boris@gnu.org> | 5 | ;; Author: Boris Goldowsky <boris@gnu.org> |
| 6 | ;; Keywords: wp, faces | 6 | ;; Keywords: wp, faces |
| @@ -183,7 +183,7 @@ etc/enriched.doc in the Emacs distribution directory. | |||
| 183 | Commands: | 183 | Commands: |
| 184 | 184 | ||
| 185 | \\{enriched-mode-map}" | 185 | \\{enriched-mode-map}" |
| 186 | nil " Enriched" nil | 186 | :group 'enriched :lighter " Enriched" |
| 187 | (cond ((null enriched-mode) | 187 | (cond ((null enriched-mode) |
| 188 | ;; Turn mode off | 188 | ;; Turn mode off |
| 189 | (setq buffer-file-format (delq 'text/enriched buffer-file-format)) | 189 | (setq buffer-file-format (delq 'text/enriched buffer-file-format)) |
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index ccd7f21f502..c41145befc8 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -539,6 +539,17 @@ The break position will be always after LINEBEG and generally before point." | |||
| 539 | ;; Make sure we take SOMETHING after the fill prefix if any. | 539 | ;; Make sure we take SOMETHING after the fill prefix if any. |
| 540 | (fill-find-break-point linebeg))))) | 540 | (fill-find-break-point linebeg))))) |
| 541 | 541 | ||
| 542 | ;; Like text-properties-at but don't include `composition' property. | ||
| 543 | (defun fill-text-properties-at (pos) | ||
| 544 | (let ((l (text-properties-at pos)) | ||
| 545 | prop-list) | ||
| 546 | (while l | ||
| 547 | (unless (eq (car l) 'composition) | ||
| 548 | (setq prop-list | ||
| 549 | (cons (car l) (cons (cadr l) prop-list)))) | ||
| 550 | (setq l (cddr l))) | ||
| 551 | prop-list)) | ||
| 552 | |||
| 542 | (defun fill-newline () | 553 | (defun fill-newline () |
| 543 | ;; Replace whitespace here with one newline, then | 554 | ;; Replace whitespace here with one newline, then |
| 544 | ;; indent to left margin. | 555 | ;; indent to left margin. |
| @@ -546,7 +557,7 @@ The break position will be always after LINEBEG and generally before point." | |||
| 546 | (insert ?\n) | 557 | (insert ?\n) |
| 547 | ;; Give newline the properties of the space(s) it replaces | 558 | ;; Give newline the properties of the space(s) it replaces |
| 548 | (set-text-properties (1- (point)) (point) | 559 | (set-text-properties (1- (point)) (point) |
| 549 | (text-properties-at (point))) | 560 | (fill-text-properties-at (point))) |
| 550 | (and (looking-at "\\( [ \t]*\\)\\(\\c|\\)?") | 561 | (and (looking-at "\\( [ \t]*\\)\\(\\c|\\)?") |
| 551 | (or (aref (char-category-set (or (char-before (1- (point))) ?\000)) ?|) | 562 | (or (aref (char-category-set (or (char-before (1- (point))) ?\000)) ?|) |
| 552 | (match-end 2)) | 563 | (match-end 2)) |
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el index ab45434526a..86406d37475 100644 --- a/lisp/textmodes/org.el +++ b/lisp/textmodes/org.el | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | ;; org.el --- Outline-based notes management and organizer | 1 | ;; org.el --- Outline-based notes management and organizer |
| 2 | ;; Carstens outline-mode for keeping track of everything. | 2 | ;; Carstens outline-mode for keeping track of everything. |
| 3 | ;; Copyright (c) 2003, 2004, 2005 Free Software Foundation | 3 | ;; Copyright (c) 2004, 2005 Free Software Foundation |
| 4 | 4 | ;; | |
| 5 | ;; Author: Carsten Dominik <dominik at science dot uva dot nl> | 5 | ;; Author: Carsten Dominik <dominik at science dot uva dot nl> |
| 6 | ;; Keywords: outlines, hypermedia, calendar | 6 | ;; Keywords: outlines, hypermedia, calendar |
| 7 | ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ | 7 | ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ |
| 8 | ;; Version: 3.04 | 8 | ;; Version: 3.05 |
| 9 | 9 | ;; | |
| 10 | ;; This file is part of GNU Emacs. | 10 | ;; This file is part of GNU Emacs. |
| 11 | 11 | ;; | |
| 12 | ;; GNU Emacs is free software; you can redistribute it and/or modify | 12 | ;; GNU Emacs is free software; you can redistribute it and/or modify |
| 13 | ;; it under the terms of the GNU General Public License as published by | 13 | ;; it under the terms of the GNU General Public License as published by |
| 14 | ;; the Free Software Foundation; either version 2, or (at your option) | 14 | ;; the Free Software Foundation; either version 2, or (at your option) |
| @@ -75,10 +75,18 @@ | |||
| 75 | ;; ------------- | 75 | ;; ------------- |
| 76 | ;; The documentation of Org-mode can be found in the TeXInfo file. | 76 | ;; The documentation of Org-mode can be found in the TeXInfo file. |
| 77 | ;; This distribution also contains a PDF version of it. At the homepage | 77 | ;; This distribution also contains a PDF version of it. At the homepage |
| 78 | ;; of Org-mode, you can find and read online the same text as HTML. | 78 | ;; of Org-mode, you can read online the same text online as HTML. |
| 79 | ;; | 79 | ;; |
| 80 | ;; Changes: | 80 | ;; Changes: |
| 81 | ;; ------- | 81 | ;; ------- |
| 82 | ;; Version 3.05 | ||
| 83 | ;; - Agenda entries from the diary are linked to the diary file, so | ||
| 84 | ;; adding and editing diary entries can be done directly from the agenda. | ||
| 85 | ;; - Many calendar/diary commands available directly from agenda. | ||
| 86 | ;; - Field copying in tables with S-RET does increment. | ||
| 87 | ;; - C-c C-x C-v extracts the visible part of the buffer for printing. | ||
| 88 | ;; - Moving subtrees up and down preserves the whitespace at the tree end. | ||
| 89 | ;; | ||
| 82 | ;; Version 3.04 | 90 | ;; Version 3.04 |
| 83 | ;; - Table editor optimized to need fewer realignments, and to keep | 91 | ;; - Table editor optimized to need fewer realignments, and to keep |
| 84 | ;; table shape when typing in fields. | 92 | ;; table shape when typing in fields. |
| @@ -213,7 +221,7 @@ | |||
| 213 | 221 | ||
| 214 | ;;; Customization variables | 222 | ;;; Customization variables |
| 215 | 223 | ||
| 216 | (defvar org-version "3.04" | 224 | (defvar org-version "3.05" |
| 217 | "The version number of the file org.el.") | 225 | "The version number of the file org.el.") |
| 218 | (defun org-version () | 226 | (defun org-version () |
| 219 | (interactive) | 227 | (interactive) |
| @@ -241,7 +249,13 @@ | |||
| 241 | :group 'org) | 249 | :group 'org) |
| 242 | 250 | ||
| 243 | (defcustom org-startup-folded t | 251 | (defcustom org-startup-folded t |
| 244 | "Non-nil means, entering Org-mode will switch to OVERVIEW." | 252 | "Non-nil means, entering Org-mode will switch to OVERVIEW. |
| 253 | This can also be configured on a per-file basis by adding one of | ||
| 254 | the following lines anywhere in the buffer: | ||
| 255 | |||
| 256 | #+STARTUP: fold | ||
| 257 | #+STARTUP: nofold | ||
| 258 | " | ||
| 245 | :group 'org-startup | 259 | :group 'org-startup |
| 246 | :type 'boolean) | 260 | :type 'boolean) |
| 247 | 261 | ||
| @@ -255,7 +269,13 @@ uninteresting. Also tables look terrible when wrapped." | |||
| 255 | (defcustom org-startup-with-deadline-check nil | 269 | (defcustom org-startup-with-deadline-check nil |
| 256 | "Non-nil means, entering Org-mode will run the deadline check. | 270 | "Non-nil means, entering Org-mode will run the deadline check. |
| 257 | This means, if you start editing an org file, you will get an | 271 | This means, if you start editing an org file, you will get an |
| 258 | immediate reminder of any due deadlines." | 272 | immediate reminder of any due deadlines. |
| 273 | This can also be configured on a per-file basis by adding one of | ||
| 274 | the following lines anywhere in the buffer: | ||
| 275 | |||
| 276 | #+STARTUP: dlcheck | ||
| 277 | #+STARTUP: nodlcheck | ||
| 278 | " | ||
| 259 | :group 'org-startup | 279 | :group 'org-startup |
| 260 | :type 'boolean) | 280 | :type 'boolean) |
| 261 | 281 | ||
| @@ -534,6 +554,11 @@ When nil, cursor will remain in the current window." | |||
| 534 | :group 'org-agenda | 554 | :group 'org-agenda |
| 535 | :type 'boolean) | 555 | :type 'boolean) |
| 536 | 556 | ||
| 557 | (defcustom org-fit-agenda-window t | ||
| 558 | "Non-nil means, change windo size of agenda to fit content." | ||
| 559 | :group 'org-agenda | ||
| 560 | :type 'boolean) | ||
| 561 | |||
| 537 | (defcustom org-agenda-show-all-dates t | 562 | (defcustom org-agenda-show-all-dates t |
| 538 | "Non-nil means, `org-agenda' shows every day in the selected range. | 563 | "Non-nil means, `org-agenda' shows every day in the selected range. |
| 539 | When nil, only the days which actually have entries are shown." | 564 | When nil, only the days which actually have entries are shown." |
| @@ -892,7 +917,7 @@ slight (in fact: unnoticable) speed impact for normal typing. Org-mode is | |||
| 892 | very good at guessing when a re-align will be necessary, but you can always | 917 | very good at guessing when a re-align will be necessary, but you can always |
| 893 | force one with `C-c C-c'. | 918 | force one with `C-c C-c'. |
| 894 | 919 | ||
| 895 | I you would like to use the optimized version in Org-mode, but the un-optimized | 920 | If you would like to use the optimized version in Org-mode, but the un-optimized |
| 896 | version in OrgTbl-mode, see the variable `orgtbl-optimized'. | 921 | version in OrgTbl-mode, see the variable `orgtbl-optimized'. |
| 897 | 922 | ||
| 898 | This variable can be used to turn on and off the table editor during a session, | 923 | This variable can be used to turn on and off the table editor during a session, |
| @@ -971,6 +996,11 @@ line will be formatted with <th> tags." | |||
| 971 | :group 'org-table | 996 | :group 'org-table |
| 972 | :type 'boolean) | 997 | :type 'boolean) |
| 973 | 998 | ||
| 999 | (defcustom org-table-copy-increment t | ||
| 1000 | "Non-nil means, increment when copying current field with \\[org-table-copy-down]." | ||
| 1001 | :group 'org-table | ||
| 1002 | :type 'boolean) | ||
| 1003 | |||
| 974 | (defcustom org-table-tab-recognizes-table.el t | 1004 | (defcustom org-table-tab-recognizes-table.el t |
| 975 | "Non-nil means, TAB will automatically notice a table.el table. | 1005 | "Non-nil means, TAB will automatically notice a table.el table. |
| 976 | When it sees such a table, it moves point into it and - if necessary - | 1006 | When it sees such a table, it moves point into it and - if necessary - |
| @@ -1260,7 +1290,7 @@ Otherwise, the buffer will just be saved to a file and stay hidden." | |||
| 1260 | "Face used for level 7 headlines." | 1290 | "Face used for level 7 headlines." |
| 1261 | :group 'org-faces) | 1291 | :group 'org-faces) |
| 1262 | 1292 | ||
| 1263 | (defface org-level-8-face ;;font-lock-string-face | 1293 | (defface org-level-8-face ;; font-lock-string-face |
| 1264 | '((((type tty) (class color)) (:foreground "green")) | 1294 | '((((type tty) (class color)) (:foreground "green")) |
| 1265 | (((class color) (background light)) (:foreground "RosyBrown")) | 1295 | (((class color) (background light)) (:foreground "RosyBrown")) |
| 1266 | (((class color) (background dark)) (:foreground "LightSalmon")) | 1296 | (((class color) (background dark)) (:foreground "LightSalmon")) |
| @@ -1276,8 +1306,24 @@ Otherwise, the buffer will just be saved to a file and stay hidden." | |||
| 1276 | "Face for deadlines and TODO keyords." | 1306 | "Face for deadlines and TODO keyords." |
| 1277 | :group 'org-faces) | 1307 | :group 'org-faces) |
| 1278 | 1308 | ||
| 1279 | ;; Inheritance does not work for xemacs, unfortunately. | 1309 | (defcustom org-fontify-done-headline nil |
| 1280 | ;; We just copy the definitions and waste some space.... | 1310 | "Non-nil means, change the face of a headline if it is marked DONE. |
| 1311 | Normally, only the TODO/DONE keyword indicates the state of a headline. | ||
| 1312 | When this is non-nil, the headline after the keyword is set to the | ||
| 1313 | `org-headline-done-face' as an additional indication." | ||
| 1314 | :group 'org-faces | ||
| 1315 | :type 'boolean) | ||
| 1316 | |||
| 1317 | (defface org-headline-done-face ;; font-lock-string-face | ||
| 1318 | '((((type tty) (class color)) (:foreground "green")) | ||
| 1319 | (((class color) (background light)) (:foreground "RosyBrown")) | ||
| 1320 | (((class color) (background dark)) (:foreground "LightSalmon")) | ||
| 1321 | (t (:italic t))) | ||
| 1322 | "Face used to indicate that a headline is DONE. See also the variable | ||
| 1323 | `org-fontify-done-headline'." | ||
| 1324 | :group 'org-faces) | ||
| 1325 | |||
| 1326 | ;; Inheritance does not yet work for xemacs. So we just copy... | ||
| 1281 | 1327 | ||
| 1282 | (defface org-deadline-announce-face | 1328 | (defface org-deadline-announce-face |
| 1283 | '((((type tty) (class color)) (:foreground "blue" :weight bold)) | 1329 | '((((type tty) (class color)) (:foreground "blue" :weight bold)) |
| @@ -1341,11 +1387,11 @@ Otherwise, the buffer will just be saved to a file and stay hidden." | |||
| 1341 | )) | 1387 | )) |
| 1342 | (defvar org-n-levels (length org-level-faces)) | 1388 | (defvar org-n-levels (length org-level-faces)) |
| 1343 | 1389 | ||
| 1344 | |||
| 1345 | ;; Tell the compiler about dynamically scoped variables, | 1390 | ;; Tell the compiler about dynamically scoped variables, |
| 1346 | ;; and variables from other packages | 1391 | ;; and variables from other packages |
| 1347 | (eval-when-compile | 1392 | (eval-when-compile |
| 1348 | (defvar zmacs-regions) | 1393 | (defvar zmacs-regions) |
| 1394 | (defvar original-date) | ||
| 1349 | (defvar org-transient-mark-mode) | 1395 | (defvar org-transient-mark-mode) |
| 1350 | (defvar org-old-auto-fill-inhibit-regexp) | 1396 | (defvar org-old-auto-fill-inhibit-regexp) |
| 1351 | (defvar orgtbl-mode-menu) | 1397 | (defvar orgtbl-mode-menu) |
| @@ -1521,8 +1567,11 @@ The following commands are available: | |||
| 1521 | (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") | 1567 | (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") |
| 1522 | '(1 'org-warning-face t)) | 1568 | '(1 'org-warning-face t)) |
| 1523 | '("^#.*" (0 'font-lock-comment-face t)) | 1569 | '("^#.*" (0 'font-lock-comment-face t)) |
| 1524 | (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>") | 1570 | (if org-fontify-done-headline |
| 1525 | '(1 'org-done-face t)) | 1571 | (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>") |
| 1572 | '(1 'org-done-face t) '(2 'org-headline-done-face t)) | ||
| 1573 | (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>") | ||
| 1574 | '(1 'org-done-face t))) | ||
| 1526 | '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" | 1575 | '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" |
| 1527 | (1 'org-table-face t)) | 1576 | (1 'org-table-face t)) |
| 1528 | '("^[ \t]*\\(:.*\\)" (1 'org-table-face t))))) | 1577 | '("^[ \t]*\\(:.*\\)" (1 'org-table-face t))))) |
| @@ -1563,7 +1612,7 @@ The following commands are available: | |||
| 1563 | (defvar org-cycle-global-status nil) | 1612 | (defvar org-cycle-global-status nil) |
| 1564 | (defvar org-cycle-subtree-status nil) | 1613 | (defvar org-cycle-subtree-status nil) |
| 1565 | (defun org-cycle (&optional arg) | 1614 | (defun org-cycle (&optional arg) |
| 1566 | "Visibility cycling for org-mode. | 1615 | "Visibility cycling for Org-mode. |
| 1567 | 1616 | ||
| 1568 | - When this function is called with a prefix argument, rotate the entire | 1617 | - When this function is called with a prefix argument, rotate the entire |
| 1569 | buffer through 3 states (global cycling) | 1618 | buffer through 3 states (global cycling) |
| @@ -1579,6 +1628,9 @@ The following commands are available: | |||
| 1579 | zoom in further. | 1628 | zoom in further. |
| 1580 | 3. SUBTREE: Show the entire subtree, including body text. | 1629 | 3. SUBTREE: Show the entire subtree, including body text. |
| 1581 | 1630 | ||
| 1631 | - When there is a numeric prefix, go ARG levels up and do a `show-subtree', | ||
| 1632 | keeping cursor position. | ||
| 1633 | |||
| 1582 | - When point is not at the beginning of a headline, execute | 1634 | - When point is not at the beginning of a headline, execute |
| 1583 | `indent-relative', like TAB normally does. See the option | 1635 | `indent-relative', like TAB normally does. See the option |
| 1584 | `org-cycle-emulate-tab' for details. | 1636 | `org-cycle-emulate-tab' for details. |
| @@ -1587,8 +1639,9 @@ The following commands are available: | |||
| 1587 | no headline in line 1, this function will act as if called with prefix arg." | 1639 | no headline in line 1, this function will act as if called with prefix arg." |
| 1588 | (interactive "P") | 1640 | (interactive "P") |
| 1589 | 1641 | ||
| 1590 | (if (and (bobp) (not (looking-at outline-regexp))) | 1642 | (if (or (and (bobp) (not (looking-at outline-regexp))) |
| 1591 | ; special case: use global cycling | 1643 | (equal arg '(4))) |
| 1644 | ;; special case: use global cycling | ||
| 1592 | (setq arg t)) | 1645 | (setq arg t)) |
| 1593 | 1646 | ||
| 1594 | (cond | 1647 | (cond |
| @@ -1600,7 +1653,7 @@ The following commands are available: | |||
| 1600 | (org-table-justify-field-maybe) | 1653 | (org-table-justify-field-maybe) |
| 1601 | (org-table-next-field)))) | 1654 | (org-table-next-field)))) |
| 1602 | 1655 | ||
| 1603 | (arg ;; Global cycling | 1656 | ((eq arg t) ;; Global cycling |
| 1604 | 1657 | ||
| 1605 | (cond | 1658 | (cond |
| 1606 | ((and (eq last-command this-command) | 1659 | ((and (eq last-command this-command) |
| @@ -1621,18 +1674,27 @@ The following commands are available: | |||
| 1621 | (if (bobp) (throw 'exit nil)))) | 1674 | (if (bobp) (throw 'exit nil)))) |
| 1622 | (message "CONTENTS...done")) | 1675 | (message "CONTENTS...done")) |
| 1623 | (setq org-cycle-global-status 'contents)) | 1676 | (setq org-cycle-global-status 'contents)) |
| 1677 | |||
| 1624 | ((and (eq last-command this-command) | 1678 | ((and (eq last-command this-command) |
| 1625 | (eq org-cycle-global-status 'contents)) | 1679 | (eq org-cycle-global-status 'contents)) |
| 1626 | ;; We just showed the table of contents - now show everything | 1680 | ;; We just showed the table of contents - now show everything |
| 1627 | (show-all) | 1681 | (show-all) |
| 1628 | (message "SHOW ALL") | 1682 | (message "SHOW ALL") |
| 1629 | (setq org-cycle-global-status 'all)) | 1683 | (setq org-cycle-global-status 'all)) |
| 1684 | |||
| 1630 | (t | 1685 | (t |
| 1631 | ;; Default action: go to overview | 1686 | ;; Default action: go to overview |
| 1632 | (hide-sublevels 1) | 1687 | (hide-sublevels 1) |
| 1633 | (message "OVERVIEW") | 1688 | (message "OVERVIEW") |
| 1634 | (setq org-cycle-global-status 'overview)))) | 1689 | (setq org-cycle-global-status 'overview)))) |
| 1635 | 1690 | ||
| 1691 | ((integerp arg) | ||
| 1692 | ;; Show-subtree, ARG levels up from here. | ||
| 1693 | (save-excursion | ||
| 1694 | (org-back-to-heading) | ||
| 1695 | (outline-up-heading arg) | ||
| 1696 | (show-subtree))) | ||
| 1697 | |||
| 1636 | ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) | 1698 | ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) |
| 1637 | ;; At a heading: rotate between three different views | 1699 | ;; At a heading: rotate between three different views |
| 1638 | (org-back-to-heading) | 1700 | (org-back-to-heading) |
| @@ -1970,7 +2032,7 @@ is changed at all." | |||
| 1970 | (save-excursion (outline-end-of-heading) | 2032 | (save-excursion (outline-end-of-heading) |
| 1971 | (setq folded (org-invisible-p))) | 2033 | (setq folded (org-invisible-p))) |
| 1972 | (outline-end-of-subtree)) | 2034 | (outline-end-of-subtree)) |
| 1973 | (if (equal (char-after) ?\n) (forward-char 1)) | 2035 | (outline-next-heading) |
| 1974 | (setq end (point)) | 2036 | (setq end (point)) |
| 1975 | ;; Find insertion point, with error handling | 2037 | ;; Find insertion point, with error handling |
| 1976 | (goto-char beg) | 2038 | (goto-char beg) |
| @@ -1982,7 +2044,10 @@ is changed at all." | |||
| 1982 | (if (> arg 0) | 2044 | (if (> arg 0) |
| 1983 | ;; Moving forward - still need to move over subtree | 2045 | ;; Moving forward - still need to move over subtree |
| 1984 | (progn (outline-end-of-subtree) | 2046 | (progn (outline-end-of-subtree) |
| 1985 | (if (equal (char-after) ?\n) (forward-char 1)))) | 2047 | (outline-next-heading) |
| 2048 | (if (not (or (looking-at (concat "^" outline-regexp)) | ||
| 2049 | (bolp))) | ||
| 2050 | (newline)))) | ||
| 1986 | (move-marker ins-point (point)) | 2051 | (move-marker ins-point (point)) |
| 1987 | (setq txt (buffer-substring beg end)) | 2052 | (setq txt (buffer-substring beg end)) |
| 1988 | (delete-region beg end) | 2053 | (delete-region beg end) |
| @@ -1993,7 +2058,7 @@ is changed at all." | |||
| 1993 | 2058 | ||
| 1994 | (defvar org-subtree-clip "" | 2059 | (defvar org-subtree-clip "" |
| 1995 | "Clipboard for cut and paste of subtrees. | 2060 | "Clipboard for cut and paste of subtrees. |
| 1996 | This is actually only a cpoy of the kill, because we use the normal kill | 2061 | This is actually only a copy of the kill, because we use the normal kill |
| 1997 | ring. We need it to check if the kill was created by `org-copy-subtree'.") | 2062 | ring. We need it to check if the kill was created by `org-copy-subtree'.") |
| 1998 | 2063 | ||
| 1999 | (defvar org-subtree-clip-folded nil | 2064 | (defvar org-subtree-clip-folded nil |
| @@ -2906,6 +2971,14 @@ The following commands are available: | |||
| 2906 | (define-key org-agenda-mode-map "p" 'org-agenda-priority) | 2971 | (define-key org-agenda-mode-map "p" 'org-agenda-priority) |
| 2907 | (define-key org-agenda-mode-map "," 'org-agenda-priority) | 2972 | (define-key org-agenda-mode-map "," 'org-agenda-priority) |
| 2908 | (define-key org-agenda-mode-map "i" 'org-agenda-diary-entry) | 2973 | (define-key org-agenda-mode-map "i" 'org-agenda-diary-entry) |
| 2974 | (define-key org-agenda-mode-map "c" 'org-agenda-goto-calendar) | ||
| 2975 | (define-key org-agenda-mode-map "C" 'org-agenda-convert-date) | ||
| 2976 | (define-key org-agenda-mode-map "m" 'org-agenda-phases-of-moon) | ||
| 2977 | (define-key org-agenda-mode-map "M" 'org-agenda-phases-of-moon) | ||
| 2978 | (define-key org-agenda-mode-map "s" 'org-agenda-sunrise-sunset) | ||
| 2979 | (define-key org-agenda-mode-map "S" 'org-agenda-sunrise-sunset) | ||
| 2980 | (define-key org-agenda-mode-map "h" 'org-agenda-holidays) | ||
| 2981 | (define-key org-agenda-mode-map "H" 'org-agenda-holidays) | ||
| 2909 | (define-key org-agenda-mode-map "+" 'org-agenda-priority-up) | 2982 | (define-key org-agenda-mode-map "+" 'org-agenda-priority-up) |
| 2910 | (define-key org-agenda-mode-map "-" 'org-agenda-priority-down) | 2983 | (define-key org-agenda-mode-map "-" 'org-agenda-priority-down) |
| 2911 | (define-key org-agenda-mode-map [(right)] 'org-agenda-later) | 2984 | (define-key org-agenda-mode-map [(right)] 'org-agenda-later) |
| @@ -2951,6 +3024,12 @@ The following commands are available: | |||
| 2951 | :style toggle :selected org-agenda-include-diary :active t] | 3024 | :style toggle :selected org-agenda-include-diary :active t] |
| 2952 | "--" | 3025 | "--" |
| 2953 | ["New Diary Entry" org-agenda-diary-entry t] | 3026 | ["New Diary Entry" org-agenda-diary-entry t] |
| 3027 | ("Calendar commands" | ||
| 3028 | ["Goto calendar" org-agenda-goto-calendar t] | ||
| 3029 | ["Phases of the Moon" org-agenda-phases-of-moon t] | ||
| 3030 | ["Sunrise/Sunset" org-agenda-sunrise-sunset t] | ||
| 3031 | ["Holidays" org-agenda-holidays t] | ||
| 3032 | ["Convert" org-agenda-convert-date t]) | ||
| 2954 | "--" | 3033 | "--" |
| 2955 | ["Quit" org-agenda-quit t] | 3034 | ["Quit" org-agenda-quit t] |
| 2956 | ["Exit and Release Buffers" org-agenda-exit t] | 3035 | ["Exit and Release Buffers" org-agenda-exit t] |
| @@ -3110,7 +3189,7 @@ NDAYS defaults to `org-agenda-ndays'." | |||
| 3110 | (d (- nt n1))) | 3189 | (d (- nt n1))) |
| 3111 | (- sd (+ (if (< d 0) 7 0) d))))) | 3190 | (- sd (+ (if (< d 0) 7 0) d))))) |
| 3112 | (day-numbers (list start)) | 3191 | (day-numbers (list start)) |
| 3113 | s e rtn rtnall file date d start-pos) | 3192 | s e rtn rtnall file date d start-pos end-pos) |
| 3114 | (setq org-agenda-redo-command | 3193 | (setq org-agenda-redo-command |
| 3115 | (list 'org-agenda include-all start-day ndays)) | 3194 | (list 'org-agenda include-all start-day ndays)) |
| 3116 | ;; Make the list of days | 3195 | ;; Make the list of days |
| @@ -3146,7 +3225,9 @@ NDAYS defaults to `org-agenda-ndays'." | |||
| 3146 | s (point)) | 3225 | s (point)) |
| 3147 | (if (or (= d today) | 3226 | (if (or (= d today) |
| 3148 | (and (not start-pos) (= d sd))) | 3227 | (and (not start-pos) (= d sd))) |
| 3149 | (setq start-pos (point))) | 3228 | (setq start-pos (point)) |
| 3229 | (if (and start-pos (not end-pos)) | ||
| 3230 | (setq end-pos (point)))) | ||
| 3150 | (setq files org-agenda-files | 3231 | (setq files org-agenda-files |
| 3151 | rtnall nil) | 3232 | rtnall nil) |
| 3152 | (while (setq file (pop files)) | 3233 | (while (setq file (pop files)) |
| @@ -3173,6 +3254,17 @@ NDAYS defaults to `org-agenda-ndays'." | |||
| 3173 | (put-text-property s (1- (point)) 'day d)))) | 3254 | (put-text-property s (1- (point)) 'day d)))) |
| 3174 | (goto-char (point-min)) | 3255 | (goto-char (point-min)) |
| 3175 | (setq buffer-read-only t) | 3256 | (setq buffer-read-only t) |
| 3257 | (if org-fit-agenda-window | ||
| 3258 | (fit-window-to-buffer nil (/ (* (frame-height) 3) 4) | ||
| 3259 | (/ (frame-height) 2))) | ||
| 3260 | (unless (and (pos-visible-in-window-p (point-min)) | ||
| 3261 | (pos-visible-in-window-p (point-max))) | ||
| 3262 | (goto-char (1- (point-max))) | ||
| 3263 | (recenter -1) | ||
| 3264 | (if (not (pos-visible-in-window-p (or start-pos 1))) | ||
| 3265 | (progn | ||
| 3266 | (goto-char (or start-pos 1)) | ||
| 3267 | (recenter 1)))) | ||
| 3176 | (goto-char (or start-pos 1)) | 3268 | (goto-char (or start-pos 1)) |
| 3177 | (if (not org-select-agenda-window) (select-window win)) | 3269 | (if (not org-select-agenda-window) (select-window win)) |
| 3178 | (message ""))) | 3270 | (message ""))) |
| @@ -3285,10 +3377,10 @@ With prefix ARG, go back that many times `org-agenda-ndays'." | |||
| 3285 | "Set the mode name to indicate all the small mode seetings." | 3377 | "Set the mode name to indicate all the small mode seetings." |
| 3286 | (setq mode-name | 3378 | (setq mode-name |
| 3287 | (concat "Org-Agenda" | 3379 | (concat "Org-Agenda" |
| 3288 | (if (equal org-agenda-ndays 1) " Day" "") | 3380 | (if (equal org-agenda-ndays 1) " Day" "") |
| 3289 | (if (equal org-agenda-ndays 7) " Week" "") | 3381 | (if (equal org-agenda-ndays 7) " Week" "") |
| 3290 | (if org-agenda-follow-mode " Follow" "") | 3382 | (if org-agenda-follow-mode " Follow" "") |
| 3291 | (if org-agenda-include-diary " Diary" ""))) | 3383 | (if org-agenda-include-diary " Diary" ""))) |
| 3292 | (force-mode-line-update)) | 3384 | (force-mode-line-update)) |
| 3293 | 3385 | ||
| 3294 | (defun org-agenda-post-command-hook () | 3386 | (defun org-agenda-post-command-hook () |
| @@ -3299,26 +3391,33 @@ With prefix ARG, go back that many times `org-agenda-ndays'." | |||
| 3299 | (defun org-get-entries-from-diary (date) | 3391 | (defun org-get-entries-from-diary (date) |
| 3300 | "Get the (emacs calendar) diary entries for DATE." | 3392 | "Get the (emacs calendar) diary entries for DATE." |
| 3301 | (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*") | 3393 | (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*") |
| 3302 | (diary-display-hook '(sort-diary-entries fancy-diary-display)) | 3394 | (diary-display-hook '(fancy-diary-display)) |
| 3395 | (list-diary-entries-hook | ||
| 3396 | (cons 'org-diary-default-entry list-diary-entries-hook)) | ||
| 3303 | entries | 3397 | entries |
| 3304 | (disable-org-agenda t)) | 3398 | (disable-org-diary t)) |
| 3305 | (save-excursion | 3399 | (save-excursion |
| 3306 | (save-window-excursion | 3400 | (save-window-excursion |
| 3307 | (list-diary-entries date 1))) | 3401 | (list-diary-entries date 1))) |
| 3308 | (if (not (get-buffer fancy-diary-buffer)) | 3402 | (if (not (get-buffer fancy-diary-buffer)) |
| 3309 | (setq entries nil) | 3403 | (setq entries nil) |
| 3310 | (save-excursion | 3404 | (save-excursion |
| 3311 | (set-buffer fancy-diary-buffer) | 3405 | (switch-to-buffer fancy-diary-buffer) |
| 3312 | (setq buffer-read-only nil) | 3406 | (setq buffer-read-only nil) |
| 3313 | (if (= (point-max) 1) | 3407 | (if (= (point-max) 1) |
| 3314 | ;; No entries | 3408 | ;; No entries |
| 3315 | (setq entries nil) | 3409 | (setq entries nil) |
| 3316 | ;; Omit the date | 3410 | ;; Omit the date and other unnecessary stuff |
| 3317 | (beginning-of-line 3) | 3411 | (org-agenda-cleanup-fancy-diary) |
| 3318 | (delete-region (point-min) (point)) | 3412 | ;; Add prefix to each line and extend the text properties |
| 3413 | (goto-char (point-min)) | ||
| 3319 | (while (and (re-search-forward "^" nil t) (not (eobp))) | 3414 | (while (and (re-search-forward "^" nil t) (not (eobp))) |
| 3320 | (replace-match " Diary: ")) | 3415 | (replace-match " Diary: ") |
| 3321 | (setq entries (buffer-substring (point-min) (- (point-max) 1)))) | 3416 | (add-text-properties (point-at-bol) (point) |
| 3417 | (text-properties-at (point)))) | ||
| 3418 | (if (= (point-max) 1) | ||
| 3419 | (setq entries nil) | ||
| 3420 | (setq entries (buffer-substring (point-min) (- (point-max) 1))))) | ||
| 3322 | (set-buffer-modified-p nil) | 3421 | (set-buffer-modified-p nil) |
| 3323 | (kill-buffer fancy-diary-buffer))) | 3422 | (kill-buffer fancy-diary-buffer))) |
| 3324 | (when entries | 3423 | (when entries |
| @@ -3337,6 +3436,49 @@ With prefix ARG, go back that many times `org-agenda-ndays'." | |||
| 3337 | x) | 3436 | x) |
| 3338 | entries))))) | 3437 | entries))))) |
| 3339 | 3438 | ||
| 3439 | (defun org-agenda-cleanup-fancy-diary () | ||
| 3440 | "Remove unwanted stuff in buffer created by fancy-diary-display. | ||
| 3441 | This gets rid of the date, the underline under the date, and | ||
| 3442 | the dummy entry installed by org-mode to ensure non-empty diary for each | ||
| 3443 | date." | ||
| 3444 | (goto-char (point-min)) | ||
| 3445 | (if (looking-at ".*?:[ \t]*") | ||
| 3446 | (progn | ||
| 3447 | (replace-match "") | ||
| 3448 | (re-search-forward "\n=+$" nil t) | ||
| 3449 | (replace-match "") | ||
| 3450 | (while (re-search-backward "^ +" nil t) (replace-match ""))) | ||
| 3451 | (re-search-forward "\n=+$" nil t) | ||
| 3452 | (delete-region (point-min) (min (point-max) (1+ (match-end 0))))) | ||
| 3453 | (if (re-search-forward "^Org-mode dummy\n?" nil t) | ||
| 3454 | (replace-match ""))) | ||
| 3455 | |||
| 3456 | ;; Advise the add-to-diary-list function to allow org to jump to | ||
| 3457 | ;; diary entires. Wrapped into eval-after-load to avoid loading | ||
| 3458 | ;; advice unnecessarily | ||
| 3459 | (eval-after-load "diary-lib" | ||
| 3460 | '(defadvice add-to-diary-list (before org-mark-diary-entry activate) | ||
| 3461 | "Make the position visible." | ||
| 3462 | (if (and (boundp 'disable-org-diary) ;; called from org-agenda | ||
| 3463 | (stringp string) | ||
| 3464 | (buffer-file-name)) | ||
| 3465 | (add-text-properties | ||
| 3466 | 0 (length string) | ||
| 3467 | (list 'mouse-face 'highlight | ||
| 3468 | 'keymap org-agenda-keymap | ||
| 3469 | 'help-echo | ||
| 3470 | (format | ||
| 3471 | "mouse-2 or RET jump to diary file %s" | ||
| 3472 | (abbreviate-file-name (buffer-file-name))) | ||
| 3473 | 'org-agenda-diary-link t | ||
| 3474 | 'org-marker (org-agenda-new-marker (point-at-bol))) | ||
| 3475 | string)))) | ||
| 3476 | |||
| 3477 | (defun org-diary-default-entry () | ||
| 3478 | "Add a dummy entry to the diary. | ||
| 3479 | Needed to avoid empty dates which mess up holiday display." | ||
| 3480 | (add-to-diary-list original-date "Org-mode dummy" "")) | ||
| 3481 | |||
| 3340 | (defun org-add-file (&optional file) | 3482 | (defun org-add-file (&optional file) |
| 3341 | "Add current file to the list of files in variable `org-agenda-files'. | 3483 | "Add current file to the list of files in variable `org-agenda-files'. |
| 3342 | These are the files which are being checked for agenda entries. | 3484 | These are the files which are being checked for agenda entries. |
| @@ -3468,7 +3610,7 @@ function from a program - use `org-agenda-get-day-entries' instead." | |||
| 3468 | file rtn results) | 3610 | file rtn results) |
| 3469 | ;; If this is called during org-agenda, don't return any entries to | 3611 | ;; If this is called during org-agenda, don't return any entries to |
| 3470 | ;; the calendar. Org Agenda will list these entries itself. | 3612 | ;; the calendar. Org Agenda will list these entries itself. |
| 3471 | (if (boundp 'disable-org-agenda) (setq files nil)) | 3613 | (if (boundp 'disable-org-diary) (setq files nil)) |
| 3472 | (while (setq file (pop files)) | 3614 | (while (setq file (pop files)) |
| 3473 | (setq rtn (apply 'org-agenda-get-day-entries file date args)) | 3615 | (setq rtn (apply 'org-agenda-get-day-entries file date args)) |
| 3474 | (setq results (append results rtn))) | 3616 | (setq results (append results rtn))) |
| @@ -3864,7 +4006,6 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 3864 | (let* ((pri (get-text-property (point-at-bol) 'priority))) | 4006 | (let* ((pri (get-text-property (point-at-bol) 'priority))) |
| 3865 | (message "Priority is %d" (if pri pri -1000)))) | 4007 | (message "Priority is %d" (if pri pri -1000)))) |
| 3866 | 4008 | ||
| 3867 | |||
| 3868 | (defun org-agenda-goto () | 4009 | (defun org-agenda-goto () |
| 3869 | "Go to the Org-mode file which contains the item at point." | 4010 | "Go to the Org-mode file which contains the item at point." |
| 3870 | (interactive) | 4011 | (interactive) |
| @@ -3875,10 +4016,11 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 3875 | (switch-to-buffer-other-window buffer) | 4016 | (switch-to-buffer-other-window buffer) |
| 3876 | (widen) | 4017 | (widen) |
| 3877 | (goto-char pos) | 4018 | (goto-char pos) |
| 3878 | (org-show-hidden-entry) | 4019 | (when (eq major-mode 'org-mode) |
| 3879 | (save-excursion | 4020 | (org-show-hidden-entry) |
| 3880 | (and (outline-next-heading) | 4021 | (save-excursion |
| 3881 | (org-flag-heading nil))))) ; show the next heading | 4022 | (and (outline-next-heading) |
| 4023 | (org-flag-heading nil)))))) ; show the next heading | ||
| 3882 | 4024 | ||
| 3883 | (defun org-agenda-switch-to () | 4025 | (defun org-agenda-switch-to () |
| 3884 | "Go to the Org-mode file which contains the item at point." | 4026 | "Go to the Org-mode file which contains the item at point." |
| @@ -3891,10 +4033,11 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 3891 | (delete-other-windows) | 4033 | (delete-other-windows) |
| 3892 | (widen) | 4034 | (widen) |
| 3893 | (goto-char pos) | 4035 | (goto-char pos) |
| 3894 | (org-show-hidden-entry) | 4036 | (when (eq major-mode 'org-mode) |
| 3895 | (save-excursion | 4037 | (org-show-hidden-entry) |
| 3896 | (and (outline-next-heading) | 4038 | (save-excursion |
| 3897 | (org-flag-heading nil))))) ; show the next heading | 4039 | (and (outline-next-heading) |
| 4040 | (org-flag-heading nil)))))) ; show the next heading | ||
| 3898 | 4041 | ||
| 3899 | (defun org-agenda-goto-mouse (ev) | 4042 | (defun org-agenda-goto-mouse (ev) |
| 3900 | "Go to the Org-mode file which contains the deadline at the mouse click." | 4043 | "Go to the Org-mode file which contains the deadline at the mouse click." |
| @@ -3923,12 +4066,18 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 3923 | (mouse-set-point ev) | 4066 | (mouse-set-point ev) |
| 3924 | (org-agenda-show)) | 4067 | (org-agenda-show)) |
| 3925 | 4068 | ||
| 4069 | (defun org-agenda-check-no-diary () | ||
| 4070 | "Check if the entry is a diary link and abort if yes." | ||
| 4071 | (if (get-text-property (point) 'org-agenda-diary-link) | ||
| 4072 | (org-agenda-error))) | ||
| 4073 | |||
| 3926 | (defun org-agenda-error () | 4074 | (defun org-agenda-error () |
| 3927 | (error "Command not allowed in this line.")) | 4075 | (error "Command not allowed in this line.")) |
| 3928 | 4076 | ||
| 3929 | (defun org-agenda-todo () | 4077 | (defun org-agenda-todo () |
| 3930 | "Cycle TODO state of line at point, also in Org-mode file." | 4078 | "Cycle TODO state of line at point, also in Org-mode file." |
| 3931 | (interactive) | 4079 | (interactive) |
| 4080 | (org-agenda-check-no-diary) | ||
| 3932 | (let* ((props (text-properties-at (point))) | 4081 | (let* ((props (text-properties-at (point))) |
| 3933 | (col (current-column)) | 4082 | (col (current-column)) |
| 3934 | (marker (or (get-text-property (point) 'org-marker) | 4083 | (marker (or (get-text-property (point) 'org-marker) |
| @@ -3971,6 +4120,7 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 3971 | (defun org-agenda-priority (&optional force-direction) | 4120 | (defun org-agenda-priority (&optional force-direction) |
| 3972 | "Set the priority of line at point, also in Org-mode file." | 4121 | "Set the priority of line at point, also in Org-mode file." |
| 3973 | (interactive) | 4122 | (interactive) |
| 4123 | (org-agenda-check-no-diary) | ||
| 3974 | (let* ((props (text-properties-at (point))) | 4124 | (let* ((props (text-properties-at (point))) |
| 3975 | (col (current-column)) | 4125 | (col (current-column)) |
| 3976 | (marker (or (get-text-property (point) 'org-marker) | 4126 | (marker (or (get-text-property (point) 'org-marker) |
| @@ -4003,6 +4153,7 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 4003 | (defun org-agenda-date-later (arg &optional what) | 4153 | (defun org-agenda-date-later (arg &optional what) |
| 4004 | "Change the date of this item to one day later." | 4154 | "Change the date of this item to one day later." |
| 4005 | (interactive "p") | 4155 | (interactive "p") |
| 4156 | (org-agenda-check-no-diary) | ||
| 4006 | (let* ((marker (or (get-text-property (point) 'org-marker) | 4157 | (let* ((marker (or (get-text-property (point) 'org-marker) |
| 4007 | (org-agenda-error))) | 4158 | (org-agenda-error))) |
| 4008 | (buffer (marker-buffer marker)) | 4159 | (buffer (marker-buffer marker)) |
| @@ -4022,8 +4173,9 @@ and by additional input from the age of a schedules or deadline entry." | |||
| 4022 | (org-agenda-date-later (- arg) what)) | 4173 | (org-agenda-date-later (- arg) what)) |
| 4023 | 4174 | ||
| 4024 | (defun org-agenda-date-today (arg) | 4175 | (defun org-agenda-date-today (arg) |
| 4025 | "Change the date of this item to one day later." | 4176 | "Change the date of this item to today." |
| 4026 | (interactive "p") | 4177 | (interactive "p") |
| 4178 | (org-agenda-check-no-diary) | ||
| 4027 | (let* ((marker (or (get-text-property (point) 'org-marker) | 4179 | (let* ((marker (or (get-text-property (point) 'org-marker) |
| 4028 | (org-agenda-error))) | 4180 | (org-agenda-error))) |
| 4029 | (buffer (marker-buffer marker)) | 4181 | (buffer (marker-buffer marker)) |
| @@ -4084,7 +4236,91 @@ All the standard commands work: block, weekly etc" | |||
| 4084 | (get-text-property point 'day)))) | 4236 | (get-text-property point 'day)))) |
| 4085 | (call-interactively cmd)) | 4237 | (call-interactively cmd)) |
| 4086 | (fset 'calendar-cursor-to-date oldf))))) | 4238 | (fset 'calendar-cursor-to-date oldf))))) |
| 4087 | 4239 | ||
| 4240 | |||
| 4241 | (defun org-agenda-execute-calendar-command (cmd) | ||
| 4242 | "Execute a calendar command from the agenda, with the date associated to | ||
| 4243 | the cursor position." | ||
| 4244 | (require 'diary-lib) | ||
| 4245 | (unless (get-text-property (point) 'day) | ||
| 4246 | (error "Don't know which date to use for calendar command")) | ||
| 4247 | (let* ((oldf (symbol-function 'calendar-cursor-to-date)) | ||
| 4248 | (point (point)) | ||
| 4249 | (mark (or (mark t) (point))) | ||
| 4250 | (date (calendar-gregorian-from-absolute | ||
| 4251 | (get-text-property point 'day))) | ||
| 4252 | (displayed-day (extract-calendar-day date)) | ||
| 4253 | (displayed-month (extract-calendar-month date)) | ||
| 4254 | (displayed-year (extract-calendar-year date))) | ||
| 4255 | (unwind-protect | ||
| 4256 | (progn | ||
| 4257 | (fset 'calendar-cursor-to-date | ||
| 4258 | (lambda (&optional error) | ||
| 4259 | (calendar-gregorian-from-absolute | ||
| 4260 | (get-text-property point 'day)))) | ||
| 4261 | (call-interactively cmd)) | ||
| 4262 | (fset 'calendar-cursor-to-date oldf)))) | ||
| 4263 | |||
| 4264 | (defun org-agenda-phases-of-moon () | ||
| 4265 | "Display the phases of the moon for 3 month around cursor date." | ||
| 4266 | (interactive) | ||
| 4267 | (org-agenda-execute-calendar-command 'calendar-phases-of-moon)) | ||
| 4268 | |||
| 4269 | (defun org-agenda-holidays () | ||
| 4270 | "Display the holidays for 3 month around cursor date." | ||
| 4271 | (interactive) | ||
| 4272 | (org-agenda-execute-calendar-command 'list-calendar-holidays)) | ||
| 4273 | |||
| 4274 | (defun org-agenda-sunrise-sunset (arg) | ||
| 4275 | "Display sunrise and sunset for the cursor date. | ||
| 4276 | Latitude and longitude can be specified with the variables | ||
| 4277 | `calendar-latitude' and `calendar-longitude'. When called with prefix | ||
| 4278 | argument, location will be prompted for." | ||
| 4279 | (interactive "P") | ||
| 4280 | (let ((calendar-longitude (if arg nil calendar-longitude)) | ||
| 4281 | (calendar-latitude (if arg nil calendar-latitude)) | ||
| 4282 | (calendar-location-name nil)) | ||
| 4283 | (org-agenda-execute-calendar-command 'calendar-sunrise-sunset))) | ||
| 4284 | |||
| 4285 | (defun org-agenda-goto-calendar () | ||
| 4286 | "Open the Emacs calendar with the date at the cursor." | ||
| 4287 | (interactive) | ||
| 4288 | (let* ((day (or (get-text-property (point) 'day) | ||
| 4289 | (error "Don't know which date to open in calendar"))) | ||
| 4290 | (date (calendar-gregorian-from-absolute day))) | ||
| 4291 | (calendar) | ||
| 4292 | (calendar-goto-date date))) | ||
| 4293 | |||
| 4294 | (defun org-agenda-convert-date () | ||
| 4295 | (interactive) | ||
| 4296 | (let ((day (get-text-property (point) 'day)) | ||
| 4297 | date s) | ||
| 4298 | (unless day | ||
| 4299 | (error "Don't know which date to convert")) | ||
| 4300 | (setq date (calendar-gregorian-from-absolute day)) | ||
| 4301 | (require 'cal-julian) | ||
| 4302 | (require 'cal-hebrew) | ||
| 4303 | (require 'cal-islam) | ||
| 4304 | (require 'cal-french) | ||
| 4305 | (require 'cal-mayan) | ||
| 4306 | (require 'cal-coptic) | ||
| 4307 | (require 'cal-persia) | ||
| 4308 | (require 'cal-china) | ||
| 4309 | (setq s (concat | ||
| 4310 | "Gregorian: " (calendar-date-string date) "\n" | ||
| 4311 | "Julian: " (calendar-julian-date-string date) "\n" | ||
| 4312 | "Astronomic: " (calendar-astro-date-string date) " (at noon UTC)\n" | ||
| 4313 | "Hebrew: " (calendar-hebrew-date-string date) "\n" | ||
| 4314 | "Islamic: " (calendar-islamic-date-string date) "\n" | ||
| 4315 | "French: " (calendar-french-date-string date) "\n" | ||
| 4316 | "Maya: " (calendar-mayan-date-string date) "\n" | ||
| 4317 | "Coptic: " (calendar-coptic-date-string date) "\n" | ||
| 4318 | "Persian: " (calendar-persian-date-string date) "\n" | ||
| 4319 | "Chineese: " (calendar-chinese-date-string date) "\n")) | ||
| 4320 | (with-output-to-temp-buffer "*Dates*" | ||
| 4321 | (princ s)) | ||
| 4322 | (fit-window-to-buffer (get-buffer-window "*Dates*")))) | ||
| 4323 | |||
| 4088 | ;;; Link Stuff | 4324 | ;;; Link Stuff |
| 4089 | 4325 | ||
| 4090 | (defun org-find-file-at-mouse (ev) | 4326 | (defun org-find-file-at-mouse (ev) |
| @@ -5087,14 +5323,23 @@ Before doing so, re-align the table if necessary." | |||
| 5087 | (skip-chars-backward "^|\n\r") | 5323 | (skip-chars-backward "^|\n\r") |
| 5088 | (if (looking-at " ") (forward-char 1))))) | 5324 | (if (looking-at " ") (forward-char 1))))) |
| 5089 | 5325 | ||
| 5090 | (defun org-table-copy-from-above (n) | 5326 | (defun org-table-copy-down (n) |
| 5091 | "Copy into the current column the nearest non-empty field from above. | 5327 | "Copy a field down in the current column. |
| 5092 | With prefix argument N, take the Nth non-empty field." | 5328 | If the field at the cursor is empty, copy into it the content of the nearest |
| 5329 | non-empty field above. With argument N, use the Nth non-empty field. | ||
| 5330 | If the current fields is not empty, it is copied down to the next row, and | ||
| 5331 | the cursor is moved with it. Therefore, repeating this command causes the | ||
| 5332 | column to be filled row-by-row. | ||
| 5333 | If the variable `org-table-copy-increment' is non-nil and the field is an | ||
| 5334 | integer, it will be incremented while copying." | ||
| 5093 | (interactive "p") | 5335 | (interactive "p") |
| 5094 | (let ((colpos (org-table-current-column)) | 5336 | (let* ((colpos (org-table-current-column)) |
| 5095 | (beg (org-table-begin)) | 5337 | (field (org-table-get-field)) |
| 5096 | txt) | 5338 | (non-empty (string-match "[^ \t]" field)) |
| 5339 | (beg (org-table-begin)) | ||
| 5340 | txt) | ||
| 5097 | (org-table-check-inside-data-field) | 5341 | (org-table-check-inside-data-field) |
| 5342 | (if non-empty (progn (org-table-next-row) (org-table-blank-field))) | ||
| 5098 | (if (save-excursion | 5343 | (if (save-excursion |
| 5099 | (setq txt | 5344 | (setq txt |
| 5100 | (catch 'exit | 5345 | (catch 'exit |
| @@ -5103,10 +5348,13 @@ With prefix argument N, take the Nth non-empty field." | |||
| 5103 | beg t)) | 5348 | beg t)) |
| 5104 | (org-table-goto-column colpos t) | 5349 | (org-table-goto-column colpos t) |
| 5105 | (if (and (looking-at | 5350 | (if (and (looking-at |
| 5106 | "|[ \t]*\\([^| \t][^|]*[^| \t]\\)[ \t]*|") | 5351 | "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") |
| 5107 | (= (setq n (1- n)) 0)) | 5352 | (= (setq n (1- n)) 0)) |
| 5108 | (throw 'exit (match-string 1))))))) | 5353 | (throw 'exit (match-string 1))))))) |
| 5109 | (progn | 5354 | (progn |
| 5355 | (if (and org-table-copy-increment | ||
| 5356 | (string-match "^[0-9]+$" txt)) | ||
| 5357 | (setq txt (format "%d" (+ (string-to-int txt) 1)))) | ||
| 5110 | (insert txt) | 5358 | (insert txt) |
| 5111 | (org-table-align)) | 5359 | (org-table-align)) |
| 5112 | (error "No non-empty field found")))) | 5360 | (error "No non-empty field found")))) |
| @@ -6039,7 +6287,7 @@ table editor iin arbitrary modes.") | |||
| 6039 | ([(shift tab)] org-table-previous-field) | 6287 | ([(shift tab)] org-table-previous-field) |
| 6040 | ("\C-c\C-c" org-table-align) | 6288 | ("\C-c\C-c" org-table-align) |
| 6041 | ([(return)] org-table-next-row) | 6289 | ([(return)] org-table-next-row) |
| 6042 | ([(shift return)] org-table-copy-from-above) | 6290 | ([(shift return)] org-table-copy-down) |
| 6043 | ([(meta return)] org-table-wrap-region) | 6291 | ([(meta return)] org-table-wrap-region) |
| 6044 | ("\C-c\C-q" org-table-wrap-region) | 6292 | ("\C-c\C-q" org-table-wrap-region) |
| 6045 | ("\C-c?" org-table-current-column) | 6293 | ("\C-c?" org-table-current-column) |
| @@ -6157,7 +6405,7 @@ a reduced column width." | |||
| 6157 | "--" | 6405 | "--" |
| 6158 | ["Blank field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"] | 6406 | ["Blank field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"] |
| 6159 | ["Copy field from above" | 6407 | ["Copy field from above" |
| 6160 | org-table-copy-from-above :active (org-at-table-p) :keys "S-RET"] | 6408 | org-table-copy-down :active (org-at-table-p) :keys "S-RET"] |
| 6161 | "--" | 6409 | "--" |
| 6162 | ("Column" | 6410 | ("Column" |
| 6163 | ["Move column left" org-metaleft :active (org-at-table-p) :keys "M-<left>"] | 6411 | ["Move column left" org-metaleft :active (org-at-table-p) :keys "M-<left>"] |
| @@ -6678,7 +6926,57 @@ underlined headlines. The default is 3." | |||
| 6678 | (setq char (nth (- umax level) (reverse org-ascii-underline))) | 6926 | (setq char (nth (- umax level) (reverse org-ascii-underline))) |
| 6679 | (if org-export-with-section-numbers | 6927 | (if org-export-with-section-numbers |
| 6680 | (setq title (concat (org-section-number level) " " title))) | 6928 | (setq title (concat (org-section-number level) " " title))) |
| 6681 | (insert title "\n" (make-string (length title) char) "\n")))) | 6929 | (insert title "\n" (make-string (string-width title) char) "\n")))) |
| 6930 | |||
| 6931 | (defun org-export-copy-visible (&optional arg) | ||
| 6932 | "Copy the visible part of the buffer to another buffer, for printing. | ||
| 6933 | Also removes the first line of the buffer it is specifies a mode, | ||
| 6934 | and all options lines." | ||
| 6935 | (interactive "P") | ||
| 6936 | (let* ((filename (concat (file-name-sans-extension (buffer-file-name)) | ||
| 6937 | ".txt")) | ||
| 6938 | (buffer (find-file-noselect filename)) | ||
| 6939 | (ore (concat | ||
| 6940 | (org-make-options-regexp | ||
| 6941 | '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" "STARTUP" | ||
| 6942 | "TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")) | ||
| 6943 | (if org-noutline-p "\\(\n\\|$\\)" ""))) | ||
| 6944 | s e) | ||
| 6945 | (save-excursion | ||
| 6946 | (set-buffer buffer) | ||
| 6947 | (erase-buffer) | ||
| 6948 | (text-mode)) | ||
| 6949 | (save-excursion | ||
| 6950 | (setq s (goto-char (point-min))) | ||
| 6951 | (while (not (= (point) (point-max))) | ||
| 6952 | (goto-char (org-find-invisible)) | ||
| 6953 | (append-to-buffer buffer s (point)) | ||
| 6954 | (setq s (goto-char (org-find-visible))))) | ||
| 6955 | (switch-to-buffer-other-window buffer) | ||
| 6956 | (newline) | ||
| 6957 | (goto-char (point-min)) | ||
| 6958 | (if (looking-at ".*-\\*- mode:.*\n") | ||
| 6959 | (replace-match "")) | ||
| 6960 | (while (re-search-forward ore nil t) | ||
| 6961 | (replace-match "")) | ||
| 6962 | (goto-char (point-min)))) | ||
| 6963 | |||
| 6964 | (defun org-find-visible () | ||
| 6965 | (if (featurep 'noutline) | ||
| 6966 | (let ((s (point))) | ||
| 6967 | (while (and (not (= (point-max) (setq s (next-overlay-change s)))) | ||
| 6968 | (get-char-property s 'invisible))) | ||
| 6969 | s) | ||
| 6970 | (skip-chars-forward "^\n") | ||
| 6971 | (point))) | ||
| 6972 | (defun org-find-invisible () | ||
| 6973 | (if (featurep 'noutline) | ||
| 6974 | (let ((s (point))) | ||
| 6975 | (while (and (not (= (point-max) (setq s (next-overlay-change s)))) | ||
| 6976 | (not (get-char-property s 'invisible)))) | ||
| 6977 | s) | ||
| 6978 | (skip-chars-forward "^\r") | ||
| 6979 | (point))) | ||
| 6682 | 6980 | ||
| 6683 | ;; HTML | 6981 | ;; HTML |
| 6684 | 6982 | ||
| @@ -7423,7 +7721,7 @@ When LEVEL is non-nil, increase section numbers on that level." | |||
| 7423 | (define-key org-mode-map [(shift tab)] 'org-shifttab) | 7721 | (define-key org-mode-map [(shift tab)] 'org-shifttab) |
| 7424 | (define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c) | 7722 | (define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c) |
| 7425 | (define-key org-mode-map [(return)] 'org-return) | 7723 | (define-key org-mode-map [(return)] 'org-return) |
| 7426 | (define-key org-mode-map [(shift return)] 'org-table-copy-from-above) | 7724 | (define-key org-mode-map [(shift return)] 'org-table-copy-down) |
| 7427 | (define-key org-mode-map [(meta return)] 'org-meta-return) | 7725 | (define-key org-mode-map [(meta return)] 'org-meta-return) |
| 7428 | (define-key org-mode-map [(control up)] 'org-move-line-up) | 7726 | (define-key org-mode-map [(control up)] 'org-move-line-up) |
| 7429 | (define-key org-mode-map [(control down)] 'org-move-line-down) | 7727 | (define-key org-mode-map [(control down)] 'org-move-line-down) |
| @@ -7436,6 +7734,10 @@ When LEVEL is non-nil, increase section numbers on that level." | |||
| 7436 | (define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) | 7734 | (define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) |
| 7437 | (define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) | 7735 | (define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) |
| 7438 | (define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) | 7736 | (define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) |
| 7737 | (define-key org-mode-map "\C-c\C-xv" 'org-export-copy-visible) | ||
| 7738 | (define-key org-mode-map "\C-c\C-x\C-v" 'org-export-copy-visible) | ||
| 7739 | (define-key org-mode-map "\C-c\C-xo" 'org-export-as-opml) | ||
| 7740 | (define-key org-mode-map "\C-c\C-x\C-o" 'org-export-as-opml) | ||
| 7439 | (define-key org-mode-map "\C-c\C-xt" 'org-insert-export-options-template) | 7741 | (define-key org-mode-map "\C-c\C-xt" 'org-insert-export-options-template) |
| 7440 | (define-key org-mode-map "\C-c:" 'org-toggle-fixed-width-section) | 7742 | (define-key org-mode-map "\C-c:" 'org-toggle-fixed-width-section) |
| 7441 | (define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) | 7743 | (define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) |
| @@ -7444,7 +7746,7 @@ When LEVEL is non-nil, increase section numbers on that level." | |||
| 7444 | 7746 | ||
| 7445 | ;; FIXME: Do we really need to save match data in these commands? | 7747 | ;; FIXME: Do we really need to save match data in these commands? |
| 7446 | ;; I would like to remove it in order to minimize impact. | 7748 | ;; I would like to remove it in order to minimize impact. |
| 7447 | ;; Self-insert already does not preserve it. How much resources does this take??? | 7749 | ;; Self-insert already does not preserve it. How much resources used by this??? |
| 7448 | 7750 | ||
| 7449 | (defsubst org-table-p () | 7751 | (defsubst org-table-p () |
| 7450 | (if (and (eq major-mode 'org-mode) font-lock-mode) | 7752 | (if (and (eq major-mode 'org-mode) font-lock-mode) |
| @@ -7469,28 +7771,7 @@ overwritten, and the table is not marked as requiring realignment." | |||
| 7469 | 7771 | ||
| 7470 | ;; FIXME: | 7772 | ;; FIXME: |
| 7471 | ;; The following two functions might still be optimized to trigger | 7773 | ;; The following two functions might still be optimized to trigger |
| 7472 | ;; re-alignment less frequently. Right now they raise the flag each time | 7774 | ;; re-alignment less frequently. |
| 7473 | ;; (through before-change-functions). Here is how this could be minimized: | ||
| 7474 | ;; Basically, check if the non-white field width before deletion is | ||
| 7475 | ;; equal to the column width. If yes, the delete should trigger a | ||
| 7476 | ;; re-align. I have not implemented this so far because it is not so | ||
| 7477 | ;; easy, requires grabbing the field etc. So it may finally have some | ||
| 7478 | ;; impact on typing performance which we don't want. | ||
| 7479 | |||
| 7480 | ;; The defsubst is only a draft, untested... | ||
| 7481 | |||
| 7482 | ;; Maybe it is not so important to get rid of realigns - maybe the most | ||
| 7483 | ;; important aspect is to keep the table look noce as long as possible, | ||
| 7484 | ;; which is already achieved... | ||
| 7485 | |||
| 7486 | ;(defsubst org-check-delete-triggers-realign () | ||
| 7487 | ; (let ((pos (point))) | ||
| 7488 | ; (skip-chars-backward "^|\n") | ||
| 7489 | ; (and (looking-at " *\\(.*?\\) *|") | ||
| 7490 | ; (= (nth (1- (org-table-current-column)) | ||
| 7491 | ; org-table-last-column-widths) | ||
| 7492 | ; (- (match-end 1) (match-beginning 1))) | ||
| 7493 | ; (setq org-table-may-need-update t)))) | ||
| 7494 | 7775 | ||
| 7495 | (defun org-delete-backward-char (N) | 7776 | (defun org-delete-backward-char (N) |
| 7496 | "Like `delete-backward-char', insert whitespace at field end in tables. | 7777 | "Like `delete-backward-char', insert whitespace at field end in tables. |
| @@ -7769,7 +8050,7 @@ the automatic table editor has been turned off." | |||
| 7769 | ["Next row" org-return (org-at-table-p)] | 8050 | ["Next row" org-return (org-at-table-p)] |
| 7770 | "--" | 8051 | "--" |
| 7771 | ["Blank field" org-table-blank-field (org-at-table-p)] | 8052 | ["Blank field" org-table-blank-field (org-at-table-p)] |
| 7772 | ["Copy field from above" org-table-copy-from-above (org-at-table-p)] | 8053 | ["Copy field from above" org-table-copy-down (org-at-table-p)] |
| 7773 | "--" | 8054 | "--" |
| 7774 | ("Column" | 8055 | ("Column" |
| 7775 | ["Move column left" org-metaleft (org-at-table-p)] | 8056 | ["Move column left" org-metaleft (org-at-table-p)] |
| @@ -7807,8 +8088,10 @@ the automatic table editor has been turned off." | |||
| 7807 | "--" | 8088 | "--" |
| 7808 | ("Export" | 8089 | ("Export" |
| 7809 | ["ASCII" org-export-as-ascii t] | 8090 | ["ASCII" org-export-as-ascii t] |
| 8091 | ["Extract visible text" org-export-copy-visible t] | ||
| 7810 | ["HTML" org-export-as-html t] | 8092 | ["HTML" org-export-as-html t] |
| 7811 | ["HTML, and open" org-export-as-html-and-open t] | 8093 | ["HTML, and open" org-export-as-html-and-open t] |
| 8094 | ["OPML" org-export-as-opml nil] | ||
| 7812 | "--" | 8095 | "--" |
| 7813 | ["Option template" org-insert-export-options-template t] | 8096 | ["Option template" org-insert-export-options-template t] |
| 7814 | ["Toggle fixed width" org-toggle-fixed-width-section t]) | 8097 | ["Toggle fixed width" org-toggle-fixed-width-section t]) |
| @@ -8098,3 +8381,5 @@ When ENTRY is non-nil, show the entire entry." | |||
| 8098 | 8381 | ||
| 8099 | ;;; org.el ends here | 8382 | ;;; org.el ends here |
| 8100 | 8383 | ||
| 8384 | |||
| 8385 | |||
diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el index 9979f4a3e27..d5f3b19cc9c 100644 --- a/lisp/textmodes/refill.el +++ b/lisp/textmodes/refill.el | |||
| @@ -221,7 +221,9 @@ With prefix arg, turn Refill mode on iff arg is positive. | |||
| 221 | When Refill mode is on, the current paragraph will be formatted when | 221 | When Refill mode is on, the current paragraph will be formatted when |
| 222 | changes are made within it. Self-inserting characters only cause | 222 | changes are made within it. Self-inserting characters only cause |
| 223 | refilling if they would cause auto-filling." | 223 | refilling if they would cause auto-filling." |
| 224 | nil " Refill" '(("\177" . backward-delete-char-untabify)) | 224 | :group 'refill |
| 225 | :lighter " Refill" | ||
| 226 | :keymap '(("\177" . backward-delete-char-untabify)) | ||
| 225 | ;; Remove old state if necessary | 227 | ;; Remove old state if necessary |
| 226 | (when refill-ignorable-overlay | 228 | (when refill-ignorable-overlay |
| 227 | (delete-overlay refill-ignorable-overlay) | 229 | (delete-overlay refill-ignorable-overlay) |
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 6fcf5869143..c4019d39fe5 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el | |||
| @@ -1804,7 +1804,7 @@ have <h1>Very Major Headlines</h1> through <h6>Very Minor Headlines</h6> | |||
| 1804 | 1804 | ||
| 1805 | <p>Paragraphs only need an opening tag. Line breaks and multiple spaces are | 1805 | <p>Paragraphs only need an opening tag. Line breaks and multiple spaces are |
| 1806 | ignored unless the text is <pre>preformatted.</pre> Text can be marked as | 1806 | ignored unless the text is <pre>preformatted.</pre> Text can be marked as |
| 1807 | <b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal M-g or | 1807 | <b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal M-o or |
| 1808 | Edit/Text Properties/Face commands. | 1808 | Edit/Text Properties/Face commands. |
| 1809 | 1809 | ||
| 1810 | Pages can have <a name=\"SOMENAME\">named points</a> and can link other points | 1810 | Pages can have <a name=\"SOMENAME\">named points</a> and can link other points |
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 7e5d9fee78b..cc9ed23c6be 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el | |||
| @@ -1562,8 +1562,9 @@ Return the process in which TeX is running." | |||
| 1562 | (concat | 1562 | (concat |
| 1563 | (if file | 1563 | (if file |
| 1564 | (if star (concat (substring cmd 0 star) | 1564 | (if star (concat (substring cmd 0 star) |
| 1565 | file (substring cmd (1+ star))) | 1565 | (shell-quote-argument file) |
| 1566 | (concat cmd " " file)) | 1566 | (substring cmd (1+ star))) |
| 1567 | (concat cmd " " (shell-quote-argument file))) | ||
| 1567 | cmd) | 1568 | cmd) |
| 1568 | (if background "&" "")))) | 1569 | (if background "&" "")))) |
| 1569 | ;; Switch to buffer before checking for subproc output in it. | 1570 | ;; Switch to buffer before checking for subproc output in it. |
| @@ -1886,8 +1887,8 @@ FILE is typically the output DVI or PDF file." | |||
| 1886 | (prog1 (file-name-directory (expand-file-name file)) | 1887 | (prog1 (file-name-directory (expand-file-name file)) |
| 1887 | (setq file (file-name-nondirectory file)))) | 1888 | (setq file (file-name-nondirectory file)))) |
| 1888 | (root (file-name-sans-extension file)) | 1889 | (root (file-name-sans-extension file)) |
| 1889 | (fspec (list (cons ?r (comint-quote-filename root)) | 1890 | (fspec (list (cons ?r (shell-quote-argument root)) |
| 1890 | (cons ?f (comint-quote-filename file)))) | 1891 | (cons ?f (shell-quote-argument file)))) |
| 1891 | (default (tex-compile-default fspec))) | 1892 | (default (tex-compile-default fspec))) |
| 1892 | (list default-directory | 1893 | (list default-directory |
| 1893 | (completing-read | 1894 | (completing-read |
| @@ -1908,14 +1909,14 @@ FILE is typically the output DVI or PDF file." | |||
| 1908 | (compile-command | 1909 | (compile-command |
| 1909 | (if star | 1910 | (if star |
| 1910 | (concat (substring command 0 star) | 1911 | (concat (substring command 0 star) |
| 1911 | (comint-quote-filename file) | 1912 | (shell-quote-argument file) |
| 1912 | (substring command (1+ star))) | 1913 | (substring command (1+ star))) |
| 1913 | (concat command " " | 1914 | (concat command " " |
| 1914 | tex-start-options | 1915 | tex-start-options |
| 1915 | (if (< 0 (length tex-start-commands)) | 1916 | (if (< 0 (length tex-start-commands)) |
| 1916 | (concat | 1917 | (concat |
| 1917 | (shell-quote-argument tex-start-commands) " ")) | 1918 | (shell-quote-argument tex-start-commands) " ")) |
| 1918 | (comint-quote-filename file))))) | 1919 | (shell-quote-argument file))))) |
| 1919 | (tex-send-tex-command compile-command dir))) | 1920 | (tex-send-tex-command compile-command dir))) |
| 1920 | 1921 | ||
| 1921 | (defun tex-send-tex-command (cmd &optional dir) | 1922 | (defun tex-send-tex-command (cmd &optional dir) |
diff --git a/lisp/tooltip.el b/lisp/tooltip.el index 6ed93a0e99e..59f82c12e31 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el | |||
| @@ -130,7 +130,7 @@ position to pop up the tooltip." | |||
| 130 | 130 | ||
| 131 | (defcustom tooltip-gud-display | 131 | (defcustom tooltip-gud-display |
| 132 | '((eq (tooltip-event-buffer tooltip-gud-event) | 132 | '((eq (tooltip-event-buffer tooltip-gud-event) |
| 133 | (marker-buffer overlay-arrow-position))) | 133 | (marker-buffer gud-overlay-arrow-position))) |
| 134 | "List of forms determining where GUD tooltips are displayed. | 134 | "List of forms determining where GUD tooltips are displayed. |
| 135 | 135 | ||
| 136 | Forms in the list are combined with AND. The default is to display | 136 | Forms in the list are combined with AND. The default is to display |
| @@ -469,27 +469,7 @@ This function must return nil if it doesn't handle EVENT." | |||
| 469 | (defun tooltip-show-help-function (msg) | 469 | (defun tooltip-show-help-function (msg) |
| 470 | "Function installed as `show-help-function'. | 470 | "Function installed as `show-help-function'. |
| 471 | MSG is either a help string to display, or nil to cancel the display." | 471 | MSG is either a help string to display, or nil to cancel the display." |
| 472 | (let ((previous-help tooltip-help-message) | 472 | (let ((previous-help tooltip-help-message)) |
| 473 | mp pos) | ||
| 474 | (if (and mouse-1-click-follows-link | ||
| 475 | (stringp msg) | ||
| 476 | (save-match-data | ||
| 477 | (string-match "^mouse-2" msg)) | ||
| 478 | (setq mp (mouse-pixel-position)) | ||
| 479 | (consp (setq pos (cdr mp))) | ||
| 480 | (car pos) (>= (car pos) 0) | ||
| 481 | (cdr pos) (>= (cdr pos) 0) | ||
| 482 | (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp))) | ||
| 483 | (windowp (posn-window pos))) | ||
| 484 | (with-current-buffer (window-buffer (posn-window pos)) | ||
| 485 | (if (mouse-on-link-p pos) | ||
| 486 | (setq msg (concat | ||
| 487 | (cond | ||
| 488 | ((eq mouse-1-click-follows-link 'double) "double-") | ||
| 489 | ((and (integerp mouse-1-click-follows-link) | ||
| 490 | (< mouse-1-click-follows-link 0)) "Long ") | ||
| 491 | (t "")) | ||
| 492 | "mouse-1" (substring msg 7)))))) | ||
| 493 | (setq tooltip-help-message msg) | 473 | (setq tooltip-help-message msg) |
| 494 | (cond ((null msg) | 474 | (cond ((null msg) |
| 495 | ;; Cancel display. This also cancels a delayed tip, if | 475 | ;; Cancel display. This also cancels a delayed tip, if |
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 5a3bf23529c..82b7f64dc01 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2005-04-04 Lute Kamstra <lute@gnu.org> | ||
| 2 | |||
| 3 | * url-handlers.el (url-handler-mode): Specify :group. | ||
| 4 | |||
| 1 | 2005-02-26 James Cloos <cloos@jhcloos.com> (tiny change) | 5 | 2005-02-26 James Cloos <cloos@jhcloos.com> (tiny change) |
| 2 | 6 | ||
| 3 | * url-history.el (url-have-visited-url): Don't barf if | 7 | * url-history.el (url-have-visited-url): Don't barf if |
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el index f90f21a3dbe..68bf0ec7ab5 100644 --- a/lisp/url/url-handlers.el +++ b/lisp/url/url-handlers.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; url-handlers.el --- file-name-handler stuff for URL loading | 1 | ;;; url-handlers.el --- file-name-handler stuff for URL loading |
| 2 | 2 | ||
| 3 | ;; Copyright (c) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (c) 1996, 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Keywords: comm, data, processes, hypermedia | 5 | ;; Keywords: comm, data, processes, hypermedia |
| 6 | 6 | ||
| @@ -106,7 +106,7 @@ particularly bad at this\).") | |||
| 106 | ;;;###autoload | 106 | ;;;###autoload |
| 107 | (define-minor-mode url-handler-mode | 107 | (define-minor-mode url-handler-mode |
| 108 | "Use URL to handle URL-like file names." | 108 | "Use URL to handle URL-like file names." |
| 109 | :global t | 109 | :global t :group 'url |
| 110 | (if (not (boundp 'file-name-handler-alist)) | 110 | (if (not (boundp 'file-name-handler-alist)) |
| 111 | ;; Can't be turned ON anyway. | 111 | ;; Can't be turned ON anyway. |
| 112 | (setq url-handler-mode nil) | 112 | (setq url-handler-mode nil) |
diff --git a/lisp/url/vc-dav.el b/lisp/url/vc-dav.el index e0e32f5da1a..3bf03165564 100644 --- a/lisp/url/vc-dav.el +++ b/lisp/url/vc-dav.el | |||
| @@ -21,6 +21,11 @@ | |||
| 21 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
| 22 | ;; Boston, MA 02111-1307, USA. | 22 | ;; Boston, MA 02111-1307, USA. |
| 23 | 23 | ||
| 24 | |||
| 25 | ;;; Commentary: | ||
| 26 | |||
| 27 | ;;; Code: | ||
| 28 | |||
| 24 | (require 'url) | 29 | (require 'url) |
| 25 | (require 'url-dav) | 30 | (require 'url-dav) |
| 26 | 31 | ||
| @@ -175,4 +180,5 @@ It should return a status of either 0 (no differences found), or | |||
| 175 | 180 | ||
| 176 | (provide 'vc-dav) | 181 | (provide 'vc-dav) |
| 177 | 182 | ||
| 178 | ;;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e | 183 | ;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e |
| 184 | ;;; vc-dav.el ends here | ||
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el index 81a18eadd87..52b4659cec6 100644 --- a/lisp/vc-hooks.el +++ b/lisp/vc-hooks.el | |||
| @@ -481,7 +481,9 @@ and does not employ any heuristic at all." | |||
| 481 | "Return non-nil if FILE has not changed since the last checkout." | 481 | "Return non-nil if FILE has not changed since the last checkout." |
| 482 | (let ((checkout-time (vc-file-getprop file 'vc-checkout-time)) | 482 | (let ((checkout-time (vc-file-getprop file 'vc-checkout-time)) |
| 483 | (lastmod (nth 5 (file-attributes file)))) | 483 | (lastmod (nth 5 (file-attributes file)))) |
| 484 | (if checkout-time | 484 | (if (and checkout-time |
| 485 | ;; Tramp and Ange-FTP return this when they don't know the time. | ||
| 486 | (not (equal lastmod '(0 0)))) | ||
| 485 | (equal checkout-time lastmod) | 487 | (equal checkout-time lastmod) |
| 486 | (let ((unchanged (vc-call workfile-unchanged-p file))) | 488 | (let ((unchanged (vc-call workfile-unchanged-p file))) |
| 487 | (vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0)) | 489 | (vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0)) |
diff --git a/lisp/vc.el b/lisp/vc.el index 2e241e67f48..ce4cb2d36c8 100644 --- a/lisp/vc.el +++ b/lisp/vc.el | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; vc.el --- drive a version-control system from within Emacs | 1 | ;;; vc.el --- drive a version-control system from within Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, | 3 | ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
| 4 | ;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc. | 4 | ;; 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: FSF (see below for full credits) | 6 | ;; Author: FSF (see below for full credits) |
| 7 | ;; Maintainer: Andre Spiegel <spiegel@gnu.org> | 7 | ;; Maintainer: Andre Spiegel <spiegel@gnu.org> |
| @@ -962,8 +962,10 @@ that is inserted into the command line before the filename." | |||
| 962 | ;; start-process does not support remote execution | 962 | ;; start-process does not support remote execution |
| 963 | (setq okstatus nil)) | 963 | (setq okstatus nil)) |
| 964 | (if (eq okstatus 'async) | 964 | (if (eq okstatus 'async) |
| 965 | (let ((proc (apply 'start-process command (current-buffer) command | 965 | (let ((proc |
| 966 | squeezed))) | 966 | (let ((process-connection-type nil)) |
| 967 | (apply 'start-process command (current-buffer) command | ||
| 968 | squeezed)))) | ||
| 967 | (unless (active-minibuffer-window) | 969 | (unless (active-minibuffer-window) |
| 968 | (message "Running %s in the background..." command)) | 970 | (message "Running %s in the background..." command)) |
| 969 | ;;(set-process-sentinel proc (lambda (p msg) (delete-process p))) | 971 | ;;(set-process-sentinel proc (lambda (p msg) (delete-process p))) |
diff --git a/lisp/wdired.el b/lisp/wdired.el index 92d7a81627a..a4119343600 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el | |||
| @@ -330,7 +330,8 @@ See `wdired-mode'." | |||
| 330 | (set-buffer-modified-p nil) | 330 | (set-buffer-modified-p nil) |
| 331 | (setq buffer-undo-list nil) | 331 | (setq buffer-undo-list nil) |
| 332 | (run-hooks 'wdired-mode-hook) | 332 | (run-hooks 'wdired-mode-hook) |
| 333 | (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished"))) | 333 | (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished \ |
| 334 | or \\[wdired-abort-changes] to abort changes"))) | ||
| 334 | 335 | ||
| 335 | 336 | ||
| 336 | ;; Protect the buffer so only the filenames can be changed, and put | 337 | ;; Protect the buffer so only the filenames can be changed, and put |
diff --git a/lisp/window.el b/lisp/window.el index 5768436eaae..b4fd664a43c 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -397,20 +397,13 @@ lines than are actually needed in the case where some error may be present." | |||
| 397 | 397 | ||
| 398 | (defun window-buffer-height (window) | 398 | (defun window-buffer-height (window) |
| 399 | "Return the height (in screen lines) of the buffer that WINDOW is displaying." | 399 | "Return the height (in screen lines) of the buffer that WINDOW is displaying." |
| 400 | (save-excursion | 400 | (with-current-buffer (window-buffer window) |
| 401 | (set-buffer (window-buffer window)) | 401 | (max 1 |
| 402 | (goto-char (point-min)) | 402 | (count-screen-lines (point-min) (point-max) |
| 403 | (let ((ignore-final-newline | 403 | ;; If buffer ends with a newline, ignore it when |
| 404 | ;; If buffer ends with a newline, ignore it when counting height | 404 | ;; counting height unless point is after it. |
| 405 | ;; unless point is after it. | 405 | (eobp) |
| 406 | (and (not (eobp)) (eq ?\n (char-after (1- (point-max))))))) | 406 | window)))) |
| 407 | (+ 1 (nth 2 (compute-motion (point-min) | ||
| 408 | '(0 . 0) | ||
| 409 | (- (point-max) (if ignore-final-newline 1 0)) | ||
| 410 | (cons 0 100000000) | ||
| 411 | nil | ||
| 412 | nil | ||
| 413 | window)))))) | ||
| 414 | 407 | ||
| 415 | (defun count-screen-lines (&optional beg end count-final-newline window) | 408 | (defun count-screen-lines (&optional beg end count-final-newline window) |
| 416 | "Return the number of screen lines in the region. | 409 | "Return the number of screen lines in the region. |
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index 131f95db7d0..4f7e19623fe 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el | |||
| @@ -155,8 +155,11 @@ | |||
| 155 | "Toggle XTerm mouse mode. | 155 | "Toggle XTerm mouse mode. |
| 156 | With prefix arg, turn XTerm mouse mode on iff arg is positive. | 156 | With prefix arg, turn XTerm mouse mode on iff arg is positive. |
| 157 | 157 | ||
| 158 | Turn it on to use emacs mouse commands, and off to use xterm mouse commands." | 158 | Turn it on to use Emacs mouse commands, and off to use xterm mouse commands. |
| 159 | nil " Mouse" nil :global t | 159 | This works in terminal emulators compatible with xterm. Only single clicks |
| 160 | are supported. When turned on, the normal xterm mouse functionality is still | ||
| 161 | available by holding down the SHIFT key while pressing the mouse button." | ||
| 162 | nil " Mouse" nil :global t :group 'mouse | ||
| 160 | (if xterm-mouse-mode | 163 | (if xterm-mouse-mode |
| 161 | ;; Turn it on | 164 | ;; Turn it on |
| 162 | (unless window-system | 165 | (unless window-system |
diff --git a/lispref/ChangeLog b/lispref/ChangeLog index e6c901f786e..0f778a1591c 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog | |||
| @@ -1,3 +1,40 @@ | |||
| 1 | 2005-04-03 Lute Kamstra <lute@gnu.org> | ||
| 2 | |||
| 3 | * hooks.texi (Standard Hooks): Add some hooks. Add cross | ||
| 4 | references and/or descriptions. Delete major mode hooks; mention | ||
| 5 | them as a category instead. Rename or delete obsolete hooks. | ||
| 6 | |||
| 7 | 2005-04-02 Richard M. Stallman <rms@gnu.org> | ||
| 8 | |||
| 9 | * nonascii.texi (Coding System Basics): Another wording cleanup. | ||
| 10 | |||
| 11 | 2005-04-01 Richard M. Stallman <rms@gnu.org> | ||
| 12 | |||
| 13 | * nonascii.texi (Coding System Basics): Clarify previous change. | ||
| 14 | |||
| 15 | 2005-04-01 Kenichi Handa <handa@m17n.org> | ||
| 16 | |||
| 17 | * nonascii.texi (Coding System Basics): Describe about rondtrip | ||
| 18 | identity of coding systems. | ||
| 19 | |||
| 20 | 2005-03-29 Chong Yidong <cyd@stupidchicken.com> | ||
| 21 | |||
| 22 | * text.texi (Buffer Contents): Add filter-buffer-substring and | ||
| 23 | buffer-substring-filters. | ||
| 24 | |||
| 25 | 2005-03-26 Chong Yidong <cyd@stupidchicken.com> | ||
| 26 | |||
| 27 | * anti.texi (Antinews): Mention `G' interactive code. | ||
| 28 | |||
| 29 | * tips.texi (Compilation Tips): Mention benchmark.el. | ||
| 30 | |||
| 31 | 2005-03-27 Luc Teirlinck <teirllm@auburn.edu> | ||
| 32 | |||
| 33 | * modes.texi (Other Font Lock Variables): `font-lock-fontify-block' | ||
| 34 | is now bound to M-o M-o. | ||
| 35 | |||
| 36 | * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o. | ||
| 37 | |||
| 1 | 2005-03-26 Glenn Morris <gmorris@ast.cam.ac.uk> | 38 | 2005-03-26 Glenn Morris <gmorris@ast.cam.ac.uk> |
| 2 | 39 | ||
| 3 | * calendar.texi: Delete file (and move contents to emacs-xtra.texi | 40 | * calendar.texi: Delete file (and move contents to emacs-xtra.texi |
diff --git a/lispref/anti.texi b/lispref/anti.texi index a744ddf421b..458409f2603 100644 --- a/lispref/anti.texi +++ b/lispref/anti.texi | |||
| @@ -238,6 +238,10 @@ alists, obarrays, and functions.) In addition, the function | |||
| 238 | @code{test-completion} is no longer available. | 238 | @code{test-completion} is no longer available. |
| 239 | 239 | ||
| 240 | @item | 240 | @item |
| 241 | The @samp{G} interactive code character is no longer supported. | ||
| 242 | Use @samp{F} instead. | ||
| 243 | |||
| 244 | @item | ||
| 241 | Arbitrary Lisp functions can no longer be recorded into | 245 | Arbitrary Lisp functions can no longer be recorded into |
| 242 | @code{buffer-undo-list}. As a consequence, @code{yank-undo-function} | 246 | @code{buffer-undo-list}. As a consequence, @code{yank-undo-function} |
| 243 | is obsolete, and has been removed. | 247 | is obsolete, and has been removed. |
diff --git a/lispref/hooks.texi b/lispref/hooks.texi index 1aa22b94686..ea7c6605796 100644 --- a/lispref/hooks.texi +++ b/lispref/hooks.texi | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | @c -*-texinfo-*- | 1 | @c -*-texinfo-*- |
| 2 | @c This is part of the GNU Emacs Lisp Reference Manual. | 2 | @c This is part of the GNU Emacs Lisp Reference Manual. |
| 3 | @c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2004 Free Software Foundation, Inc. | 3 | @c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2004, 2005 Free Software Foundation, Inc. |
| 4 | @c See the file elisp.texi for copying conditions. | 4 | @c See the file elisp.texi for copying conditions. |
| 5 | @setfilename ../info/hooks | 5 | @setfilename ../info/hooks |
| 6 | @node Standard Hooks, Index, Standard Keymaps, Top | 6 | @node Standard Hooks, Index, Standard Keymaps, Top |
| @@ -16,6 +16,11 @@ arguments and their values are completely ignored. The recommended way | |||
| 16 | to put a new function on such a hook is to call @code{add-hook}. | 16 | to put a new function on such a hook is to call @code{add-hook}. |
| 17 | @xref{Hooks}, for more information about using hooks. | 17 | @xref{Hooks}, for more information about using hooks. |
| 18 | 18 | ||
| 19 | Every major mode defines a mode hook named | ||
| 20 | @samp{@var{modename}-mode-hook}. The major mode command runs this | ||
| 21 | normal hook with @code{run-mode-hooks} as the very last thing it does. | ||
| 22 | @xref{Mode Hooks}. Mode hooks are omitted in the list below. | ||
| 23 | |||
| 19 | The variables whose names end in @samp{-hooks} or @samp{-functions} are | 24 | The variables whose names end in @samp{-hooks} or @samp{-functions} are |
| 20 | usually @dfn{abnormal hooks}; their values are lists of functions, but | 25 | usually @dfn{abnormal hooks}; their values are lists of functions, but |
| 21 | these functions are called in a special way (they are passed arguments, | 26 | these functions are called in a special way (they are passed arguments, |
| @@ -28,118 +33,229 @@ as their values. (In older Emacs versions, some of these variables had | |||
| 28 | names ending in @samp{-hook} even though they were not normal hooks; | 33 | names ending in @samp{-hook} even though they were not normal hooks; |
| 29 | however, we have renamed all of those.) | 34 | however, we have renamed all of those.) |
| 30 | 35 | ||
| 31 | @c !!! need xref to where each hook is documented or else document it | 36 | @c We need to xref to where each hook is documented or else document |
| 32 | @c by specifying what is expected, and when it is called relative to | 37 | @c it here. |
| 33 | @c mode initialization. | ||
| 34 | 38 | ||
| 35 | @table @code | 39 | @table @code |
| 36 | @item activate-mark-hook | 40 | @item activate-mark-hook |
| 41 | @xref{The Mark}. | ||
| 42 | |||
| 37 | @item after-change-functions | 43 | @item after-change-functions |
| 44 | @xref{Change Hooks}. | ||
| 45 | |||
| 38 | @item after-change-major-mode-hook | 46 | @item after-change-major-mode-hook |
| 47 | @xref{Mode Hooks}. | ||
| 48 | |||
| 39 | @item after-init-hook | 49 | @item after-init-hook |
| 50 | @xref{Init File}. | ||
| 51 | |||
| 40 | @item after-insert-file-functions | 52 | @item after-insert-file-functions |
| 53 | @xref{Saving Properties}. | ||
| 54 | |||
| 41 | @item after-make-frame-functions | 55 | @item after-make-frame-functions |
| 56 | @xref{Creating Frames}. | ||
| 57 | |||
| 42 | @item after-revert-hook | 58 | @item after-revert-hook |
| 59 | @xref{Reverting}. | ||
| 60 | |||
| 43 | @item after-save-hook | 61 | @item after-save-hook |
| 44 | @item apropos-mode-hook | 62 | @xref{Saving Buffers}. |
| 63 | |||
| 45 | @item auto-fill-function | 64 | @item auto-fill-function |
| 65 | @xref{Auto Filling}. | ||
| 66 | |||
| 46 | @item auto-save-hook | 67 | @item auto-save-hook |
| 68 | @xref{Auto-Saving}. | ||
| 69 | |||
| 47 | @item before-change-functions | 70 | @item before-change-functions |
| 71 | @xref{Change Hooks}. | ||
| 72 | |||
| 48 | @item before-init-hook | 73 | @item before-init-hook |
| 74 | @xref{Init File}. | ||
| 75 | |||
| 49 | @item before-make-frame-hook | 76 | @item before-make-frame-hook |
| 77 | @xref{Creating Frames}. | ||
| 78 | |||
| 50 | @item before-revert-hook | 79 | @item before-revert-hook |
| 80 | @xref{Reverting}. | ||
| 81 | |||
| 51 | @item before-save-hook | 82 | @item before-save-hook |
| 83 | @xref{Saving Buffers}. | ||
| 84 | |||
| 52 | @item blink-paren-function | 85 | @item blink-paren-function |
| 86 | @xref{Blinking}. | ||
| 87 | |||
| 53 | @item buffer-access-fontify-functions | 88 | @item buffer-access-fontify-functions |
| 54 | @item c-mode-hook | 89 | @xref{Lazy Properties}. |
| 90 | |||
| 55 | @item calendar-load-hook | 91 | @item calendar-load-hook |
| 92 | @inforef{Calendar Customizing,, emacs-xtra}. | ||
| 93 | |||
| 56 | @item change-major-mode-hook | 94 | @item change-major-mode-hook |
| 57 | @item command-history-hook | 95 | @xref{Creating Buffer-Local}. |
| 96 | |||
| 58 | @item command-line-functions | 97 | @item command-line-functions |
| 98 | @xref{Command-Line Arguments}. | ||
| 99 | |||
| 59 | @item comment-indent-function | 100 | @item comment-indent-function |
| 101 | @xref{Options for Comments,, Options Controlling Comments, emacs, the | ||
| 102 | GNU Emacs Manual}. | ||
| 103 | |||
| 60 | @item custom-define-hook | 104 | @item custom-define-hook |
| 105 | Hook called after defining each customize option. | ||
| 106 | |||
| 61 | @item deactivate-mark-hook | 107 | @item deactivate-mark-hook |
| 108 | @xref{The Mark}. | ||
| 109 | |||
| 62 | @item desktop-after-read-hook | 110 | @item desktop-after-read-hook |
| 111 | Normal hook run after a successful @code{desktop-read}. May be used | ||
| 112 | to show a buffer list. @xref{Saving Emacs Sessions,, Saving Emacs | ||
| 113 | Sessions, emacs, the GNU Emacs Manual}. | ||
| 114 | |||
| 63 | @item desktop-no-desktop-file-hook | 115 | @item desktop-no-desktop-file-hook |
| 116 | Normal hook run when @code{desktop-read} can't find a desktop file. | ||
| 117 | May be used to show a dired buffer. @xref{Saving Emacs Sessions,, | ||
| 118 | Saving Emacs Sessions, emacs, the GNU Emacs Manual}. | ||
| 119 | |||
| 64 | @item desktop-save-hook | 120 | @item desktop-save-hook |
| 121 | Normal hook run before the desktop is saved in a desktop file. This | ||
| 122 | is useful for truncating history lists, for example. @xref{Saving | ||
| 123 | Emacs Sessions,, Saving Emacs Sessions, emacs, the GNU Emacs Manual}. | ||
| 124 | |||
| 65 | @item diary-display-hook | 125 | @item diary-display-hook |
| 126 | @inforef{Fancy Diary Display,, emacs-xtra}. | ||
| 127 | |||
| 66 | @item diary-hook | 128 | @item diary-hook |
| 67 | @item dired-mode-hook | 129 | List of functions called after the display of the diary. Can be used |
| 130 | for appointment notification. | ||
| 131 | |||
| 68 | @item disabled-command-function | 132 | @item disabled-command-function |
| 133 | @xref{Disabling Commands}. | ||
| 134 | |||
| 69 | @item echo-area-clear-hook | 135 | @item echo-area-clear-hook |
| 70 | @item edit-picture-hook | 136 | @xref{The Echo Area}. |
| 71 | @item electric-buffer-menu-mode-hook | 137 | |
| 72 | @item electric-command-history-hook | 138 | @item emacs-startup-hook |
| 73 | @item electric-help-mode-hook | 139 | @xref{Init File}. |
| 74 | @item emacs-lisp-mode-hook | 140 | |
| 75 | @item find-file-hook | 141 | @item find-file-hook |
| 142 | @xref{Visiting Functions}. | ||
| 143 | |||
| 76 | @item find-file-not-found-functions | 144 | @item find-file-not-found-functions |
| 145 | @xref{Visiting Functions}. | ||
| 146 | |||
| 77 | @item first-change-hook | 147 | @item first-change-hook |
| 78 | @item fortran-comment-hook | 148 | @xref{Change Hooks}. |
| 79 | @item fortran-mode-hook | 149 | |
| 80 | @item indent-mim-hook | ||
| 81 | @item initial-calendar-window-hook | 150 | @item initial-calendar-window-hook |
| 151 | @inforef{Calendar Customizing,, emacs-xtra}. | ||
| 152 | |||
| 82 | @item kbd-macro-termination-hook | 153 | @item kbd-macro-termination-hook |
| 154 | @xref{Keyboard Macros}. | ||
| 155 | |||
| 83 | @item kill-buffer-hook | 156 | @item kill-buffer-hook |
| 157 | @xref{Killing Buffers}. | ||
| 158 | |||
| 84 | @item kill-buffer-query-functions | 159 | @item kill-buffer-query-functions |
| 160 | @xref{Killing Buffers}. | ||
| 161 | |||
| 85 | @item kill-emacs-hook | 162 | @item kill-emacs-hook |
| 163 | @xref{Killing Emacs}. | ||
| 164 | |||
| 86 | @item kill-emacs-query-functions | 165 | @item kill-emacs-query-functions |
| 87 | @item LaTeX-mode-hook | 166 | @xref{Killing Emacs}. |
| 88 | @item ledit-mode-hook | 167 | |
| 89 | @item lisp-indent-function | 168 | @item lisp-indent-function |
| 90 | @item lisp-interaction-mode-hook | 169 | |
| 91 | @item lisp-mode-hook | ||
| 92 | @item list-diary-entries-hook | 170 | @item list-diary-entries-hook |
| 93 | @item mail-mode-hook | 171 | @inforef{Fancy Diary Display,, emacs-xtra}. |
| 172 | |||
| 94 | @item mail-setup-hook | 173 | @item mail-setup-hook |
| 174 | @xref{Mail Mode Misc,, Mail Mode Miscellany, emacs, the GNU Emacs | ||
| 175 | Manual}. | ||
| 176 | |||
| 95 | @item mark-diary-entries-hook | 177 | @item mark-diary-entries-hook |
| 96 | @item medit-mode-hook | 178 | @inforef{Fancy Diary Display,, emacs-xtra}. |
| 179 | |||
| 97 | @item menu-bar-update-hook | 180 | @item menu-bar-update-hook |
| 181 | @xref{Menu Bar}. | ||
| 182 | |||
| 98 | @item minibuffer-setup-hook | 183 | @item minibuffer-setup-hook |
| 184 | @xref{Minibuffer Misc}. | ||
| 185 | |||
| 99 | @item minibuffer-exit-hook | 186 | @item minibuffer-exit-hook |
| 187 | @xref{Minibuffer Misc}. | ||
| 188 | |||
| 100 | @item mouse-position-function | 189 | @item mouse-position-function |
| 101 | @item news-mode-hook | 190 | @xref{Mouse Position}. |
| 102 | @item news-reply-mode-hook | 191 | |
| 103 | @item news-setup-hook | ||
| 104 | @item nongregorian-diary-listing-hook | 192 | @item nongregorian-diary-listing-hook |
| 193 | @inforef{Hebrew/Islamic Entries,, emacs-xtra}. | ||
| 194 | |||
| 105 | @item nongregorian-diary-marking-hook | 195 | @item nongregorian-diary-marking-hook |
| 106 | @item nroff-mode-hook | 196 | @inforef{Hebrew/Islamic Entries,, emacs-xtra}. |
| 107 | @item outline-mode-hook | 197 | |
| 108 | @item plain-TeX-mode-hook | ||
| 109 | @item post-command-hook | 198 | @item post-command-hook |
| 199 | @xref{Command Overview}. | ||
| 200 | |||
| 110 | @item pre-abbrev-expand-hook | 201 | @item pre-abbrev-expand-hook |
| 202 | @xref{Abbrev Expansion}. | ||
| 203 | |||
| 111 | @item pre-command-hook | 204 | @item pre-command-hook |
| 205 | @xref{Command Overview}. | ||
| 206 | |||
| 112 | @item print-diary-entries-hook | 207 | @item print-diary-entries-hook |
| 113 | @item prolog-mode-hook | 208 | @inforef{Diary Customizing,, emacs-xtra}. |
| 114 | @item protect-innocence-hook | 209 | |
| 115 | @item redisplay-end-trigger-functions | 210 | @item redisplay-end-trigger-functions |
| 116 | @item rmail-edit-mode-hook | 211 | @xref{Window Hooks}. |
| 117 | @item rmail-mode-hook | 212 | |
| 118 | @item rmail-summary-mode-hook | 213 | @item scheme-indent-function |
| 119 | @item scheme-indent-hook | 214 | |
| 120 | @item scheme-mode-hook | ||
| 121 | @item scribe-mode-hook | ||
| 122 | @item shell-mode-hook | ||
| 123 | @item shell-set-directory-error-hook | ||
| 124 | @item suspend-hook | 215 | @item suspend-hook |
| 216 | @xref{Suspending Emacs}. | ||
| 217 | |||
| 125 | @item suspend-resume-hook | 218 | @item suspend-resume-hook |
| 219 | @xref{Suspending Emacs}. | ||
| 220 | |||
| 221 | @item temp-buffer-setup-hook | ||
| 222 | @xref{Temporary Displays}. | ||
| 223 | |||
| 126 | @item temp-buffer-show-function | 224 | @item temp-buffer-show-function |
| 225 | @xref{Temporary Displays}. | ||
| 226 | |||
| 227 | @item temp-buffer-show-hook | ||
| 228 | @xref{Temporary Displays}. | ||
| 229 | |||
| 127 | @item term-setup-hook | 230 | @item term-setup-hook |
| 128 | @item terminal-mode-hook | 231 | @xref{Terminal-Specific}. |
| 129 | @item terminal-mode-break-hook | 232 | |
| 130 | @item TeX-mode-hook | ||
| 131 | @item text-mode-hook | ||
| 132 | @item today-visible-calendar-hook | 233 | @item today-visible-calendar-hook |
| 234 | @inforef{Calendar Customizing,, emacs-xtra}. | ||
| 235 | |||
| 133 | @item today-invisible-calendar-hook | 236 | @item today-invisible-calendar-hook |
| 134 | @item vi-mode-hook | 237 | @inforef{Calendar Customizing,, emacs-xtra}. |
| 135 | @item view-hook | 238 | |
| 136 | @item window-configuration-change-hook | 239 | @item window-configuration-change-hook |
| 240 | @xref{Window Hooks}. | ||
| 241 | |||
| 137 | @item window-scroll-functions | 242 | @item window-scroll-functions |
| 243 | @xref{Window Hooks}. | ||
| 244 | |||
| 138 | @item window-setup-hook | 245 | @item window-setup-hook |
| 246 | @xref{Window Systems}. | ||
| 247 | |||
| 139 | @item window-size-change-functions | 248 | @item window-size-change-functions |
| 249 | @xref{Window Hooks}. | ||
| 250 | |||
| 140 | @item write-contents-functions | 251 | @item write-contents-functions |
| 252 | @xref{Saving Buffers}. | ||
| 253 | |||
| 141 | @item write-file-functions | 254 | @item write-file-functions |
| 255 | @xref{Saving Buffers}. | ||
| 256 | |||
| 142 | @item write-region-annotate-functions | 257 | @item write-region-annotate-functions |
| 258 | @xref{Saving Properties}. | ||
| 143 | @end table | 259 | @end table |
| 144 | 260 | ||
| 145 | @ignore | 261 | @ignore |
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi index f374472e101..59e2e19966d 100644 --- a/lispref/keymaps.texi +++ b/lispref/keymaps.texi | |||
| @@ -456,16 +456,16 @@ key. | |||
| 456 | key. | 456 | key. |
| 457 | 457 | ||
| 458 | @item | 458 | @item |
| 459 | @cindex @kbd{M-g} | 459 | @cindex @kbd{M-o} |
| 460 | @vindex facemenu-keymap | 460 | @vindex facemenu-keymap |
| 461 | @code{facemenu-keymap} is the global keymap used for the @kbd{M-g} | 461 | @code{facemenu-keymap} is the global keymap used for the @kbd{M-o} |
| 462 | prefix key. | 462 | prefix key. |
| 463 | 463 | ||
| 464 | @c Emacs 19 feature | 464 | @c Emacs 19 feature |
| 465 | @item | 465 | @item |
| 466 | The other Emacs prefix keys are @kbd{C-x @@}, @kbd{C-x a i}, @kbd{C-x | 466 | The other Emacs prefix keys are @kbd{M-g}, @kbd{C-x @@}, @kbd{C-x a i}, |
| 467 | @key{ESC}} and @kbd{@key{ESC} @key{ESC}}. They use keymaps that have no | 467 | @kbd{C-x @key{ESC}} and @kbd{@key{ESC} @key{ESC}}. They use keymaps |
| 468 | special names. | 468 | that have no special names. |
| 469 | @end itemize | 469 | @end itemize |
| 470 | 470 | ||
| 471 | The keymap binding of a prefix key is used for looking up the event | 471 | The keymap binding of a prefix key is used for looking up the event |
diff --git a/lispref/modes.texi b/lispref/modes.texi index 9464f900d4f..f2cfcd2eb8c 100644 --- a/lispref/modes.texi +++ b/lispref/modes.texi | |||
| @@ -2349,7 +2349,7 @@ be slow. | |||
| 2349 | @defvar font-lock-mark-block-function | 2349 | @defvar font-lock-mark-block-function |
| 2350 | If this variable is non-@code{nil}, it should be a function that is | 2350 | If this variable is non-@code{nil}, it should be a function that is |
| 2351 | called with no arguments, to choose an enclosing range of text for | 2351 | called with no arguments, to choose an enclosing range of text for |
| 2352 | refontification for the command @kbd{M-g M-g} | 2352 | refontification for the command @kbd{M-o M-o} |
| 2353 | (@code{font-lock-fontify-block}). | 2353 | (@code{font-lock-fontify-block}). |
| 2354 | 2354 | ||
| 2355 | The function should report its choice by placing the region around it. | 2355 | The function should report its choice by placing the region around it. |
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi index 70e77e0a837..aaa23e90a48 100644 --- a/lispref/nonascii.texi +++ b/lispref/nonascii.texi | |||
| @@ -628,6 +628,27 @@ characters; for example, there are three coding systems for the Cyrillic | |||
| 628 | conversion, but some of them leave the choice unspecified---to be chosen | 628 | conversion, but some of them leave the choice unspecified---to be chosen |
| 629 | heuristically for each file, based on the data. | 629 | heuristically for each file, based on the data. |
| 630 | 630 | ||
| 631 | In general, a coding system doesn't guarantee roundtrip identity: | ||
| 632 | decoding a byte sequence using coding system, then encoding the | ||
| 633 | resulting text in the same coding system, can produce a different byte | ||
| 634 | sequence. However, the following coding systems do guarantee that the | ||
| 635 | byte sequence will be the same as what you originally decoded: | ||
| 636 | |||
| 637 | @quotation | ||
| 638 | chinese-big5 chinese-iso-8bit cyrillic-iso-8bit emacs-mule | ||
| 639 | greek-iso-8bit hebrew-iso-8bit iso-latin-1 iso-latin-2 iso-latin-3 | ||
| 640 | iso-latin-4 iso-latin-5 iso-latin-8 iso-latin-9 iso-safe | ||
| 641 | japanese-iso-8bit japanese-shift-jis korean-iso-8bit raw-text | ||
| 642 | @end quotation | ||
| 643 | |||
| 644 | Encoding buffer text and then decoding the result can also fail to | ||
| 645 | reproduce the original text. For instance, if you encode Latin-2 | ||
| 646 | characters with @code{utf-8} and decode the result using the same | ||
| 647 | coding system, you'll get Unicode characters (of charset | ||
| 648 | @code{mule-unicode-0100-24ff}). If you encode Unicode characters with | ||
| 649 | @code{iso-latin-2} and decode the result with the same coding system, | ||
| 650 | you'll get Latin-2 characters. | ||
| 651 | |||
| 631 | @cindex end of line conversion | 652 | @cindex end of line conversion |
| 632 | @dfn{End of line conversion} handles three different conventions used | 653 | @dfn{End of line conversion} handles three different conventions used |
| 633 | on various systems for representing end of line in files. The Unix | 654 | on various systems for representing end of line in files. The Unix |
diff --git a/lispref/text.texi b/lispref/text.texi index e300b345454..1d4dc0fce8a 100644 --- a/lispref/text.texi +++ b/lispref/text.texi | |||
| @@ -207,6 +207,41 @@ This is like @code{buffer-substring}, except that it does not copy text | |||
| 207 | properties, just the characters themselves. @xref{Text Properties}. | 207 | properties, just the characters themselves. @xref{Text Properties}. |
| 208 | @end defun | 208 | @end defun |
| 209 | 209 | ||
| 210 | @defun filter-buffer-substring start end &optional delete | ||
| 211 | This function passes the buffer text between @var{start} and @var{end} | ||
| 212 | through the filter functions specified by the variable | ||
| 213 | @code{buffer-substring-filters}, and returns the value from the last | ||
| 214 | filter function. If @code{buffer-substring-filters} is @code{nil}, | ||
| 215 | the value is the unaltered text from the buffer, what | ||
| 216 | @code{buffer-substring} would return. | ||
| 217 | |||
| 218 | If @var{delete} is non-@code{nil}, this function deletes the text | ||
| 219 | between @var{start} and @var{end} after copying it, like | ||
| 220 | @code{delete-and-extract-region}. | ||
| 221 | |||
| 222 | Lisp code should use this function instead of @code{buffer-substring} | ||
| 223 | or @code{delete-and-extract-region} when copying into user-accessible | ||
| 224 | data structures such as the kill-ring, X clipboard, and registers. | ||
| 225 | Major and minor modes can add functions to | ||
| 226 | @code{buffer-substring-filters} to alter such text as it is copied out | ||
| 227 | of the buffer. | ||
| 228 | @end defun | ||
| 229 | |||
| 230 | @defvar buffer-substring-filters | ||
| 231 | This variable should be a list of functions that accept a single | ||
| 232 | argument, a string, and return a string. | ||
| 233 | @code{filter-buffer-substring} passes the buffer substring to the | ||
| 234 | first function in this list, and the return value of each function is | ||
| 235 | passed to the next function. The return value of the last function is | ||
| 236 | used as the return value of @code{filter-buffer-substring}. | ||
| 237 | |||
| 238 | As a special convention, point is set to the start of the buffer text | ||
| 239 | being operated on (i.e., the @var{start} argument for | ||
| 240 | @code{filter-buffer-substring}) before these functions are called. | ||
| 241 | |||
| 242 | If this variable is @code{nil}, no filtering is performed. | ||
| 243 | @end defvar | ||
| 244 | |||
| 210 | @defun buffer-string | 245 | @defun buffer-string |
| 211 | This function returns the contents of the entire accessible portion of | 246 | This function returns the contents of the entire accessible portion of |
| 212 | the current buffer as a string. It is equivalent to | 247 | the current buffer as a string. It is equivalent to |
diff --git a/lispref/tips.texi b/lispref/tips.texi index c029ee1d451..538affd7450 100644 --- a/lispref/tips.texi +++ b/lispref/tips.texi | |||
| @@ -452,6 +452,13 @@ Profile your program with the @file{elp} library. See the file | |||
| 452 | @file{elp.el} for instructions. | 452 | @file{elp.el} for instructions. |
| 453 | 453 | ||
| 454 | @item | 454 | @item |
| 455 | @cindex @file{benchmark.el} | ||
| 456 | @cindex benchmarking | ||
| 457 | Check the speed of individual Emacs Lisp forms using the | ||
| 458 | @file{benchmark} library. See the functions @code{benchmark-run} and | ||
| 459 | @code{benchmark-run-compiled} in @file{benchmark.el}. | ||
| 460 | |||
| 461 | @item | ||
| 455 | Use iteration rather than recursion whenever possible. | 462 | Use iteration rather than recursion whenever possible. |
| 456 | Function calls are slow in Emacs Lisp even when a compiled function | 463 | Function calls are slow in Emacs Lisp even when a compiled function |
| 457 | is calling another compiled function. | 464 | is calling another compiled function. |
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 7823673ec1b..d085f41ff77 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog | |||
| @@ -1,3 +1,16 @@ | |||
| 1 | 2005-04-01 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | Reenable support for I18N to Lucid menus. | ||
| 4 | |||
| 5 | * xlwmenuP.h (_XlwMenu_part): Add fontSet resource. | ||
| 6 | |||
| 7 | * xlwmenu.c (string_width): | ||
| 8 | (MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Ditto. | ||
| 9 | (display_menu_item, make_drawing_gcs, XlwMenuInitialize) | ||
| 10 | (XlwMenuSetValues): Use font if fontSet is NULL, use only | ||
| 11 | font for !HAVE_X_I18N. | ||
| 12 | (xlwMenuResources): Add fontSet resource. | ||
| 13 | |||
| 1 | 2005-03-22 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 14 | 2005-03-22 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> |
| 2 | 15 | ||
| 3 | * xlwmenuP.h: Temporary #undef HAVE_X_I18N until FontSet for UTF-8 | 16 | * xlwmenuP.h: Temporary #undef HAVE_X_I18N until FontSet for UTF-8 |
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index 77b61d32e21..3fab2e80dbe 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c | |||
| @@ -131,20 +131,16 @@ xlwMenuTranslations [] = | |||
| 131 | 131 | ||
| 132 | /* FIXME: F10 should enter the menu, the first one in the menu-bar. */ | 132 | /* FIXME: F10 should enter the menu, the first one in the menu-bar. */ |
| 133 | 133 | ||
| 134 | /* FIXME: HAVE_X_I18N does not work yet. */ | ||
| 135 | #undef HAVE_X_I18N | ||
| 136 | |||
| 137 | #define offset(field) XtOffset(XlwMenuWidget, field) | 134 | #define offset(field) XtOffset(XlwMenuWidget, field) |
| 138 | static XtResource | 135 | static XtResource |
| 139 | xlwMenuResources[] = | 136 | xlwMenuResources[] = |
| 140 | { | 137 | { |
| 141 | #ifdef HAVE_X_I18N | 138 | #ifdef HAVE_X_I18N |
| 142 | {XtNfont, XtCFont, XtRFontSet, sizeof(XFontSet), | 139 | {XtNfontSet, XtCFontSet, XtRFontSet, sizeof(XFontSet), |
| 143 | offset(menu.font), XtRString, "XtDefaultFontSet"}, | 140 | offset(menu.fontSet), XtRFontSet, NULL}, |
| 144 | #else | 141 | #endif |
| 145 | {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), | 142 | {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), |
| 146 | offset(menu.font), XtRString, "XtDefaultFont"}, | 143 | offset(menu.font), XtRString, "XtDefaultFont"}, |
| 147 | #endif | ||
| 148 | {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), | 144 | {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel), |
| 149 | offset(menu.foreground), XtRString, "XtDefaultForeground"}, | 145 | offset(menu.foreground), XtRString, "XtDefaultForeground"}, |
| 150 | {XtNdisabledForeground, XtCDisabledForeground, XtRPixel, sizeof(Pixel), | 146 | {XtNdisabledForeground, XtCDisabledForeground, XtRPixel, sizeof(Pixel), |
| @@ -361,24 +357,31 @@ string_width (mw, s) | |||
| 361 | XlwMenuWidget mw; | 357 | XlwMenuWidget mw; |
| 362 | char *s; | 358 | char *s; |
| 363 | { | 359 | { |
| 364 | #ifdef HAVE_X_I18N | ||
| 365 | XRectangle ink, logical; | ||
| 366 | XmbTextExtents (mw->menu.font, s, strlen (s), &ink, &logical); | ||
| 367 | return logical.width; | ||
| 368 | #else | ||
| 369 | XCharStruct xcs; | 360 | XCharStruct xcs; |
| 370 | int drop; | 361 | int drop; |
| 362 | #ifdef HAVE_X_I18N | ||
| 363 | XRectangle ink, logical; | ||
| 364 | if (mw->menu.fontSet) | ||
| 365 | { | ||
| 366 | XmbTextExtents (mw->menu.fontSet, s, strlen (s), &ink, &logical); | ||
| 367 | return logical.width; | ||
| 368 | } | ||
| 369 | #endif | ||
| 371 | 370 | ||
| 372 | XTextExtents (mw->menu.font, s, strlen (s), &drop, &drop, &drop, &xcs); | 371 | XTextExtents (mw->menu.font, s, strlen (s), &drop, &drop, &drop, &xcs); |
| 373 | return xcs.width; | 372 | return xcs.width; |
| 374 | #endif | 373 | |
| 375 | } | 374 | } |
| 376 | 375 | ||
| 377 | #ifdef HAVE_X_I18N | 376 | #ifdef HAVE_X_I18N |
| 378 | #define MENU_FONT_HEIGHT(mw) \ | 377 | #define MENU_FONT_HEIGHT(mw) \ |
| 379 | ((mw)->menu.font_extents->max_logical_extent.height) | 378 | ((mw)->menu.fontSet != NULL \ |
| 379 | ? (mw)->menu.font_extents->max_logical_extent.height \ | ||
| 380 | : (mw)->menu.font->ascent + (mw)->menu.font->descent) | ||
| 380 | #define MENU_FONT_ASCENT(mw) \ | 381 | #define MENU_FONT_ASCENT(mw) \ |
| 381 | (- (mw)->menu.font_extents->max_logical_extent.y) | 382 | ((mw)->menu.fontSet != NULL \ |
| 383 | ? - (mw)->menu.font_extents->max_logical_extent.y \ | ||
| 384 | : (mw)->menu.font->ascent) | ||
| 382 | #else | 385 | #else |
| 383 | #define MENU_FONT_HEIGHT(mw) \ | 386 | #define MENU_FONT_HEIGHT(mw) \ |
| 384 | ((mw)->menu.font->ascent + (mw)->menu.font->descent) | 387 | ((mw)->menu.font->ascent + (mw)->menu.font->descent) |
| @@ -1053,10 +1056,14 @@ display_menu_item (mw, val, ws, where, highlighted_p, horizontal_p, | |||
| 1053 | 1056 | ||
| 1054 | 1057 | ||
| 1055 | #ifdef HAVE_X_I18N | 1058 | #ifdef HAVE_X_I18N |
| 1056 | XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font, | 1059 | if (mw->menu.fontSet) |
| 1057 | #else | 1060 | XmbDrawString (XtDisplay (mw), ws->window, mw->menu.fontSet, |
| 1058 | XDrawString (XtDisplay (mw), ws->window, | 1061 | text_gc, x_offset, |
| 1062 | y + v_spacing + shadow + font_ascent, | ||
| 1063 | display_string, strlen (display_string)); | ||
| 1064 | else | ||
| 1059 | #endif | 1065 | #endif |
| 1066 | XDrawString (XtDisplay (mw), ws->window, | ||
| 1060 | text_gc, x_offset, | 1067 | text_gc, x_offset, |
| 1061 | y + v_spacing + shadow + font_ascent, | 1068 | y + v_spacing + shadow + font_ascent, |
| 1062 | display_string, strlen (display_string)); | 1069 | display_string, strlen (display_string)); |
| @@ -1083,10 +1090,16 @@ display_menu_item (mw, val, ws, where, highlighted_p, horizontal_p, | |||
| 1083 | else if (val->key) | 1090 | else if (val->key) |
| 1084 | { | 1091 | { |
| 1085 | #ifdef HAVE_X_I18N | 1092 | #ifdef HAVE_X_I18N |
| 1086 | XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font, | 1093 | if (mw->menu.fontSet) |
| 1087 | #else | 1094 | XmbDrawString (XtDisplay (mw), ws->window, |
| 1088 | XDrawString (XtDisplay (mw), ws->window, | 1095 | mw->menu.fontSet, |
| 1096 | text_gc, | ||
| 1097 | x + label_width + mw->menu.arrow_spacing, | ||
| 1098 | y + v_spacing + shadow + font_ascent, | ||
| 1099 | val->key, strlen (val->key)); | ||
| 1100 | else | ||
| 1089 | #endif | 1101 | #endif |
| 1102 | XDrawString (XtDisplay (mw), ws->window, | ||
| 1090 | text_gc, | 1103 | text_gc, |
| 1091 | x + label_width + mw->menu.arrow_spacing, | 1104 | x + label_width + mw->menu.arrow_spacing, |
| 1092 | y + v_spacing + shadow + font_ascent, | 1105 | y + v_spacing + shadow + font_ascent, |
| @@ -1493,34 +1506,25 @@ make_drawing_gcs (mw) | |||
| 1493 | { | 1506 | { |
| 1494 | XGCValues xgcv; | 1507 | XGCValues xgcv; |
| 1495 | float scale; | 1508 | float scale; |
| 1509 | XtGCMask mask = GCForeground | GCBackground; | ||
| 1496 | 1510 | ||
| 1497 | #ifndef HAVE_X_I18N | 1511 | #ifdef HAVE_X_I18N |
| 1512 | if (!mw->menu.fontSet) | ||
| 1513 | { | ||
| 1514 | xgcv.font = mw->menu.font->fid; | ||
| 1515 | mask |= GCFont; | ||
| 1516 | } | ||
| 1517 | #else | ||
| 1498 | xgcv.font = mw->menu.font->fid; | 1518 | xgcv.font = mw->menu.font->fid; |
| 1519 | mask |= GCFont; | ||
| 1499 | #endif | 1520 | #endif |
| 1500 | xgcv.foreground = mw->menu.foreground; | 1521 | xgcv.foreground = mw->menu.foreground; |
| 1501 | xgcv.background = mw->core.background_pixel; | 1522 | xgcv.background = mw->core.background_pixel; |
| 1502 | mw->menu.foreground_gc = XtGetGC ((Widget)mw, | 1523 | mw->menu.foreground_gc = XtGetGC ((Widget)mw, mask, &xgcv); |
| 1503 | #ifndef HAVE_X_I18N | ||
| 1504 | GCFont | | ||
| 1505 | #endif | ||
| 1506 | GCForeground | GCBackground, | ||
| 1507 | &xgcv); | ||
| 1508 | 1524 | ||
| 1509 | #ifndef HAVE_X_I18N | ||
| 1510 | xgcv.font = mw->menu.font->fid; | ||
| 1511 | #endif | ||
| 1512 | xgcv.foreground = mw->menu.button_foreground; | 1525 | xgcv.foreground = mw->menu.button_foreground; |
| 1513 | xgcv.background = mw->core.background_pixel; | 1526 | mw->menu.button_gc = XtGetGC ((Widget)mw, mask, &xgcv); |
| 1514 | mw->menu.button_gc = XtGetGC ((Widget)mw, | ||
| 1515 | #ifndef HAVE_X_I18N | ||
| 1516 | GCFont | | ||
| 1517 | #endif | ||
| 1518 | GCForeground | GCBackground, | ||
| 1519 | &xgcv); | ||
| 1520 | 1527 | ||
| 1521 | #ifndef HAVE_X_I18N | ||
| 1522 | xgcv.font = mw->menu.font->fid; | ||
| 1523 | #endif | ||
| 1524 | xgcv.background = mw->core.background_pixel; | 1528 | xgcv.background = mw->core.background_pixel; |
| 1525 | 1529 | ||
| 1526 | #define BRIGHTNESS(color) (((color) & 0xff) + (((color) >> 8) & 0xff) + (((color) >> 16) & 0xff)) | 1530 | #define BRIGHTNESS(color) (((color) & 0xff) + (((color) >> 8) & 0xff) + (((color) >> 16) & 0xff)) |
| @@ -1545,49 +1549,26 @@ make_drawing_gcs (mw) | |||
| 1545 | xgcv.foreground = mw->menu.foreground; | 1549 | xgcv.foreground = mw->menu.foreground; |
| 1546 | xgcv.fill_style = FillStippled; | 1550 | xgcv.fill_style = FillStippled; |
| 1547 | xgcv.stipple = mw->menu.gray_pixmap; | 1551 | xgcv.stipple = mw->menu.gray_pixmap; |
| 1548 | mw->menu.disabled_gc = XtGetGC ((Widget)mw, | 1552 | mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask |
| 1549 | #ifndef HAVE_X_I18N | ||
| 1550 | GCFont | | ||
| 1551 | #endif | ||
| 1552 | GCForeground | GCBackground | ||
| 1553 | | GCFillStyle | GCStipple, &xgcv); | 1553 | | GCFillStyle | GCStipple, &xgcv); |
| 1554 | } | 1554 | } |
| 1555 | else | 1555 | else |
| 1556 | { | 1556 | { |
| 1557 | /* Many colors available, use disabled pixel. */ | 1557 | /* Many colors available, use disabled pixel. */ |
| 1558 | xgcv.foreground = mw->menu.disabled_foreground; | 1558 | xgcv.foreground = mw->menu.disabled_foreground; |
| 1559 | mw->menu.disabled_gc = XtGetGC ((Widget)mw, | 1559 | mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask, &xgcv); |
| 1560 | #ifndef HAVE_X_I18N | ||
| 1561 | GCFont | | ||
| 1562 | #endif | ||
| 1563 | GCForeground | GCBackground, &xgcv); | ||
| 1564 | } | 1560 | } |
| 1565 | 1561 | ||
| 1566 | #ifndef HAVE_X_I18N | ||
| 1567 | xgcv.font = mw->menu.font->fid; | ||
| 1568 | #endif | ||
| 1569 | xgcv.foreground = mw->menu.button_foreground; | 1562 | xgcv.foreground = mw->menu.button_foreground; |
| 1570 | xgcv.background = mw->core.background_pixel; | 1563 | xgcv.background = mw->core.background_pixel; |
| 1571 | xgcv.fill_style = FillStippled; | 1564 | xgcv.fill_style = FillStippled; |
| 1572 | xgcv.stipple = mw->menu.gray_pixmap; | 1565 | xgcv.stipple = mw->menu.gray_pixmap; |
| 1573 | mw->menu.inactive_button_gc = XtGetGC ((Widget)mw, | 1566 | mw->menu.inactive_button_gc = XtGetGC ((Widget)mw, mask |
| 1574 | #ifndef HAVE_X_I18N | ||
| 1575 | GCFont | | ||
| 1576 | #endif | ||
| 1577 | GCForeground | GCBackground | ||
| 1578 | | GCFillStyle | GCStipple, &xgcv); | 1567 | | GCFillStyle | GCStipple, &xgcv); |
| 1579 | 1568 | ||
| 1580 | #ifndef HAVE_X_I18N | ||
| 1581 | xgcv.font = mw->menu.font->fid; | ||
| 1582 | #endif | ||
| 1583 | xgcv.foreground = mw->core.background_pixel; | 1569 | xgcv.foreground = mw->core.background_pixel; |
| 1584 | xgcv.background = mw->menu.foreground; | 1570 | xgcv.background = mw->menu.foreground; |
| 1585 | mw->menu.background_gc = XtGetGC ((Widget)mw, | 1571 | mw->menu.background_gc = XtGetGC ((Widget)mw, mask, &xgcv); |
| 1586 | #ifndef HAVE_X_I18N | ||
| 1587 | GCFont | | ||
| 1588 | #endif | ||
| 1589 | GCForeground | GCBackground, | ||
| 1590 | &xgcv); | ||
| 1591 | } | 1572 | } |
| 1592 | 1573 | ||
| 1593 | static void | 1574 | static void |
| @@ -1793,14 +1774,14 @@ XlwMenuInitialize (request, mw, args, num_args) | |||
| 1793 | gray_bitmap_width, gray_bitmap_height, | 1774 | gray_bitmap_width, gray_bitmap_height, |
| 1794 | (unsigned long)1, (unsigned long)0, 1); | 1775 | (unsigned long)1, (unsigned long)0, 1); |
| 1795 | 1776 | ||
| 1796 | #ifndef HAVE_X_I18N | ||
| 1797 | /* I don't understand why this ends up 0 sometimes, | 1777 | /* I don't understand why this ends up 0 sometimes, |
| 1798 | but it does. This kludge works around it. | 1778 | but it does. This kludge works around it. |
| 1799 | Can anyone find a real fix? -- rms. */ | 1779 | Can anyone find a real fix? -- rms. */ |
| 1800 | if (mw->menu.font == 0) | 1780 | if (mw->menu.font == 0) |
| 1801 | mw->menu.font = xlwmenu_default_font; | 1781 | mw->menu.font = xlwmenu_default_font; |
| 1802 | #else | 1782 | #ifdef HAVE_X_I18N |
| 1803 | mw->menu.font_extents = XExtentsOfFontSet (mw->menu.font); | 1783 | if (mw->menu.fontSet) |
| 1784 | mw->menu.font_extents = XExtentsOfFontSet (mw->menu.fontSet); | ||
| 1804 | #endif | 1785 | #endif |
| 1805 | 1786 | ||
| 1806 | make_drawing_gcs (mw); | 1787 | make_drawing_gcs (mw); |
| @@ -1969,7 +1950,10 @@ XlwMenuSetValues (current, request, new) | |||
| 1969 | 1950 | ||
| 1970 | if (newmw->core.background_pixel != oldmw->core.background_pixel | 1951 | if (newmw->core.background_pixel != oldmw->core.background_pixel |
| 1971 | || newmw->menu.foreground != oldmw->menu.foreground | 1952 | || newmw->menu.foreground != oldmw->menu.foreground |
| 1972 | #ifndef HAVE_X_I18N | 1953 | #ifdef HAVE_X_I18N |
| 1954 | || newmw->menu.fontSet != oldmw->menu.fontSet | ||
| 1955 | || (newmw->menu.fontSet == NULL && newmw->menu.font != oldmw->menu.font) | ||
| 1956 | #else | ||
| 1973 | || newmw->menu.font != oldmw->menu.font | 1957 | || newmw->menu.font != oldmw->menu.font |
| 1974 | #endif | 1958 | #endif |
| 1975 | ) | 1959 | ) |
| @@ -1999,10 +1983,10 @@ XlwMenuSetValues (current, request, new) | |||
| 1999 | } | 1983 | } |
| 2000 | 1984 | ||
| 2001 | #ifdef HAVE_X_I18N | 1985 | #ifdef HAVE_X_I18N |
| 2002 | if (newmw->menu.font != oldmw->menu.font) | 1986 | if (newmw->menu.fontSet != oldmw->menu.fontSet && newmw->menu.fontSet != NULL) |
| 2003 | { | 1987 | { |
| 2004 | redisplay = True; | 1988 | redisplay = True; |
| 2005 | newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.font); | 1989 | newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.fontSet); |
| 2006 | } | 1990 | } |
| 2007 | #endif | 1991 | #endif |
| 2008 | 1992 | ||
diff --git a/lwlib/xlwmenuP.h b/lwlib/xlwmenuP.h index 12cc1790d9d..ac908d34b74 100644 --- a/lwlib/xlwmenuP.h +++ b/lwlib/xlwmenuP.h | |||
| @@ -24,9 +24,6 @@ Boston, MA 02111-1307, USA. */ | |||
| 24 | #include "xlwmenu.h" | 24 | #include "xlwmenu.h" |
| 25 | #include <X11/CoreP.h> | 25 | #include <X11/CoreP.h> |
| 26 | 26 | ||
| 27 | /* FIXME: HAVE_X_I18N does not work yet. */ | ||
| 28 | #undef HAVE_X_I18N | ||
| 29 | |||
| 30 | /* Elements in the stack arrays. */ | 27 | /* Elements in the stack arrays. */ |
| 31 | typedef struct _window_state | 28 | typedef struct _window_state |
| 32 | { | 29 | { |
| @@ -47,11 +44,10 @@ typedef struct _XlwMenu_part | |||
| 47 | { | 44 | { |
| 48 | /* slots set by the resources */ | 45 | /* slots set by the resources */ |
| 49 | #ifdef HAVE_X_I18N | 46 | #ifdef HAVE_X_I18N |
| 50 | XFontSet font; | 47 | XFontSet fontSet; |
| 51 | XFontSetExtents *font_extents; | 48 | XFontSetExtents *font_extents; |
| 52 | #else | ||
| 53 | XFontStruct* font; | ||
| 54 | #endif | 49 | #endif |
| 50 | XFontStruct* font; | ||
| 55 | Pixel foreground; | 51 | Pixel foreground; |
| 56 | Pixel disabled_foreground; | 52 | Pixel disabled_foreground; |
| 57 | Pixel button_foreground; | 53 | Pixel button_foreground; |
diff --git a/man/ChangeLog b/man/ChangeLog index 432fd8bad2c..eddd1e97741 100644 --- a/man/ChangeLog +++ b/man/ChangeLog | |||
| @@ -1,3 +1,138 @@ | |||
| 1 | 2005-04-04 Jay Belanger <belanger@truman.edu> | ||
| 2 | |||
| 3 | * calc.texi: Change Calc version number. | ||
| 4 | (Customizable variables): Fix description of calc-language-alist. | ||
| 5 | (Copying): Put in version 2 of GPL. | ||
| 6 | |||
| 7 | 2005-04-03 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 8 | |||
| 9 | * calendar.texi (Diary): Mention shell utility `calendar'. | ||
| 10 | |||
| 11 | 2005-04-01 Jay Belanger <belanger@truman.edu> | ||
| 12 | |||
| 13 | * calc.texi (Troubleshooting Commands): Remove comment about | ||
| 14 | installation. | ||
| 15 | (Installation): Remove section. | ||
| 16 | (Customizable Variables): New section. | ||
| 17 | (Basic Embedded Mode, Customizing Embedded Mode, Graphics) | ||
| 18 | (Graphical Devices): Add references to Customizable Variables. | ||
| 19 | |||
| 20 | 2005-04-01 Lute Kamstra <lute@gnu.org> | ||
| 21 | |||
| 22 | * maintaining.texi (Change Log): add-change-log-entry uses | ||
| 23 | add-log-mailing-address. | ||
| 24 | |||
| 25 | 2005-03-31 Luc Teirlinck <teirllm@auburn.edu> | ||
| 26 | |||
| 27 | * files.texi (Reverting): Move `auto-revert-check-vc-info' to | ||
| 28 | `VC Mode Line' and put in an xref to that node. | ||
| 29 | (VC Mode Line): Move `auto-revert-check-vc-info' here and clarify | ||
| 30 | its description. | ||
| 31 | |||
| 32 | 2005-03-31 Paul Eggert <eggert@cs.ucla.edu> | ||
| 33 | |||
| 34 | * calendar.texi (Calendar Systems): Say that the Persian calendar | ||
| 35 | implemented here is the arithmetical one championed by Birashk. | ||
| 36 | |||
| 37 | 2005-03-30 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 38 | |||
| 39 | * programs.texi (Fortran Motion): Fix previous change. | ||
| 40 | |||
| 41 | 2005-03-25 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 42 | |||
| 43 | * emacs-mime.texi (Display Customization): Markup fixes. | ||
| 44 | (rfc2047): Update. | ||
| 45 | |||
| 46 | 2005-03-23 Reiner Steib <Reiner.Steib@gmx.de> | ||
| 47 | |||
| 48 | * gnus-faq.texi: Replaced with auto-generated version. | ||
| 49 | |||
| 50 | 2005-03-29 Richard M. Stallman <rms@gnu.org> | ||
| 51 | |||
| 52 | * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info. | ||
| 53 | |||
| 54 | 2005-03-29 Chong Yidong <cyd@stupidchicken.com> | ||
| 55 | |||
| 56 | * text.texi (Refill): Refer to Long Lines Mode. | ||
| 57 | (Longlines): New node. | ||
| 58 | (Auto Fill): Don't index "word wrap" here. | ||
| 59 | (Filling): Add Longlines to menu. | ||
| 60 | |||
| 61 | 2005-03-29 Richard M. Stallman <rms@gnu.org> | ||
| 62 | |||
| 63 | * xresources.texi: Minor fixes. | ||
| 64 | |||
| 65 | * misc.texi (Emacs Server): Fix Texinfo usage. | ||
| 66 | |||
| 67 | * emacs.texi (Top): Don't use a real section heading for | ||
| 68 | "Detailed Node Listing". Fake it instead. | ||
| 69 | |||
| 70 | * basic.texi (Position Info): Minor cleanup. | ||
| 71 | |||
| 72 | * mule.texi (Input Methods): Minor cleanup. | ||
| 73 | |||
| 74 | 2005-03-29 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 75 | |||
| 76 | * programs.texi (ForIndent Vars): `fortran-if-indent' does other | ||
| 77 | constructs as well. | ||
| 78 | (Fortran Motion): Add fortran-end-of-block, | ||
| 79 | fortran-beginning-of-block. | ||
| 80 | |||
| 81 | 2005-03-29 Kenichi Handa <handa@m17n.org> | ||
| 82 | |||
| 83 | * mule.texi (Input Methods): Refer to the command C-u C-x =. | ||
| 84 | |||
| 85 | * basic.texi (Position Info): Update the description about the | ||
| 86 | command C-u C-x =. | ||
| 87 | |||
| 88 | 2005-03-28 Richard M. Stallman <rms@gnu.org> | ||
| 89 | |||
| 90 | * emacs.texi (Top): Use @section for the detailed node listing. | ||
| 91 | |||
| 92 | * calendar.texi: Minor fixes to previous change. | ||
| 93 | |||
| 94 | * programs.texi (Fortran): Small fixes to previous changes. | ||
| 95 | |||
| 96 | * emacs.texi (Top): Update list of subnodes of Dired. | ||
| 97 | Likewise for building.texi. | ||
| 98 | |||
| 99 | * files.texi (File Conveniences): Delete Auto Image File mode. | ||
| 100 | |||
| 101 | 2005-03-28 Chong Yidong <cyd@stupidchicken.com> | ||
| 102 | |||
| 103 | * building.texi (Flymake): New node. | ||
| 104 | |||
| 105 | * custom.texi (Function Keys): Document kp- event types and | ||
| 106 | keypad-setup package. | ||
| 107 | |||
| 108 | * dired.texi (Wdired): New node. | ||
| 109 | |||
| 110 | * files.texi (File Conveniences): Reorder entries. | ||
| 111 | Explain how to turn on Auto-image-file mode. | ||
| 112 | Document Thumbs mode. | ||
| 113 | |||
| 114 | * mule.texi (Specify Coding): Document recode-region and | ||
| 115 | recode-file-name. | ||
| 116 | |||
| 117 | * programs.texi (Program Modes): Add Conf mode and DNS mode. | ||
| 118 | |||
| 119 | 2005-03-27 Luc Teirlinck <teirllm@auburn.edu> | ||
| 120 | |||
| 121 | * commands.texi (Keys): M-o is now a prefix key. | ||
| 122 | |||
| 123 | 2005-03-27 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 124 | |||
| 125 | * programs.texi: Reformat and update copyright years. | ||
| 126 | (Fortran): Update section. | ||
| 127 | |||
| 128 | 2005-03-26 Luc Teirlinck <teirllm@auburn.edu> | ||
| 129 | |||
| 130 | * files.texi: Several small changes in addition to: | ||
| 131 | (Visiting): Change xref for Dialog Boxes to ref. | ||
| 132 | (Version Headers): Replace references to obsolete var | ||
| 133 | `vc-header-alist' with `vc-BACKEND-header'. | ||
| 134 | (Customizing VC): Update value of `vc-handled-backends'. | ||
| 135 | |||
| 1 | 2005-03-26 Glenn Morris <gmorris@ast.cam.ac.uk> | 136 | 2005-03-26 Glenn Morris <gmorris@ast.cam.ac.uk> |
| 2 | 137 | ||
| 3 | * emacs-xtra.texi (Advanced Calendar/Diary Usage): New section; | 138 | * emacs-xtra.texi (Advanced Calendar/Diary Usage): New section; |
| @@ -49,7 +184,7 @@ | |||
| 49 | * files.texi (Visiting): Fix cross-references introduced with the | 184 | * files.texi (Visiting): Fix cross-references introduced with the |
| 50 | last change. | 185 | last change. |
| 51 | 186 | ||
| 52 | * xresources.texi (GTK resources): Fix last change. | 187 | * xresources.texi (GTK resources): Fix last change. |
| 53 | 188 | ||
| 54 | 2005-03-26 Jay Belanger <belanger@truman.edu> | 189 | 2005-03-26 Jay Belanger <belanger@truman.edu> |
| 55 | 190 | ||
diff --git a/man/basic.texi b/man/basic.texi index 2f8c2bc1764..ad3cfbca88a 100644 --- a/man/basic.texi +++ b/man/basic.texi | |||
| @@ -677,36 +677,57 @@ point=26957 of 26956(100%) column 0 | |||
| 677 | @cindex character set of character at point | 677 | @cindex character set of character at point |
| 678 | @cindex font of character at point | 678 | @cindex font of character at point |
| 679 | @cindex text properties at point | 679 | @cindex text properties at point |
| 680 | @w{@kbd{C-u C-x =}} displays additional information about a | 680 | @w{@kbd{C-u C-x =}} displays these additional information about a |
| 681 | character, including the character set name and the codes that | 681 | character. |
| 682 | identify the character within that character set; @acronym{ASCII} characters are | 682 | |
| 683 | identified as belonging to the @code{ascii} character set. It also | 683 | @itemize @bullet |
| 684 | shows the character's syntax, categories, and encodings both | 684 | @item |
| 685 | internally in the buffer and externally if you save the file. It also | 685 | The character set name, and the codes that identify the character |
| 686 | shows the character's text properties (@pxref{Text Properties,,, | 686 | within that character set; @acronym{ASCII} characters are identified |
| 687 | as belonging to the @code{ascii} character set. | ||
| 688 | |||
| 689 | @item | ||
| 690 | The character's syntax and categories. | ||
| 691 | |||
| 692 | @item | ||
| 693 | The character's encodings, both internally in the buffer, and externally | ||
| 694 | if you were to save the file. | ||
| 695 | |||
| 696 | @item | ||
| 697 | What to type to input the character in the current input method | ||
| 698 | (if it supports the character). | ||
| 699 | |||
| 700 | @item | ||
| 701 | If you are running Emacs on a window system, the font name and glyph | ||
| 702 | code for the character. If you are running Emacs on a terminal, the | ||
| 703 | code(s) sent to the terminal. | ||
| 704 | |||
| 705 | @item | ||
| 706 | The character's text properties (@pxref{Text Properties,,, | ||
| 687 | elisp, the Emacs Lisp Reference Manual}), and any overlays containing it | 707 | elisp, the Emacs Lisp Reference Manual}), and any overlays containing it |
| 688 | (@pxref{Overlays,,, elisp, the same manual}). | 708 | (@pxref{Overlays,,, elisp, the same manual}). |
| 709 | @end itemize | ||
| 689 | 710 | ||
| 690 | Here's an example showing the Latin-1 character A with grave accent, | 711 | Here's an example showing the Latin-1 character A with grave accent, |
| 691 | in a buffer whose coding system is @code{iso-2022-7bit}, whose | 712 | in a buffer whose coding system is @code{iso-latin-1}, whose |
| 692 | terminal coding system is @code{iso-latin-1} (so the terminal actually | 713 | terminal coding system is @code{iso-latin-1} (so the terminal actually |
| 693 | displays the character as @samp{@`A}), and which has font-lock-mode | 714 | displays the character as @samp{@`A}), and which has font-lock-mode |
| 694 | (@pxref{Font Lock}) enabled: | 715 | (@pxref{Font Lock}) enabled: |
| 695 | 716 | ||
| 696 | @smallexample | 717 | @smallexample |
| 697 | character: @`A (04300, 2240, 0x8c0) | 718 | character: @`A (04300, 2240, 0x8c0, U+00C0) |
| 698 | charset: latin-iso8859-1 | 719 | charset: latin-iso8859-1 |
| 699 | (Right-Hand Part of Latin Alphabet 1@dots{} | 720 | (Right-Hand Part of Latin Alphabet 1@dots{} |
| 700 | code point: 64 | 721 | code point: 64 |
| 701 | syntax: w which means: word | 722 | syntax: w which means: word |
| 702 | category: l:Latin | 723 | category: l:Latin |
| 703 | buffer code: 0x81 0xC0 | 724 | to input: type "`A" |
| 704 | file code: ESC 2C 41 40 (encoded by coding system iso-2022-7bit) | 725 | buffer code: 0x81 0xC0 |
| 705 | terminal code: C0 | 726 | file code: ESC 2C 41 40 (encoded by coding system iso-2022-7bit) |
| 706 | 727 | display: terminal code 0xC0 | |
| 707 | Text properties | 728 | |
| 708 | font-lock-face: font-lock-variable-name-face | 729 | There are text properties here: |
| 709 | fontified: t | 730 | fontified t |
| 710 | @end smallexample | 731 | @end smallexample |
| 711 | 732 | ||
| 712 | @node Arguments | 733 | @node Arguments |
diff --git a/man/building.texi b/man/building.texi index 50490e34dd5..10b7b8053d2 100644 --- a/man/building.texi +++ b/man/building.texi | |||
| @@ -18,6 +18,7 @@ in the larger process of developing and maintaining programs. | |||
| 18 | * Compilation Shell:: Customizing your shell properly | 18 | * Compilation Shell:: Customizing your shell properly |
| 19 | for use in the compilation buffer. | 19 | for use in the compilation buffer. |
| 20 | * Grep Searching:: Searching with grep. | 20 | * Grep Searching:: Searching with grep. |
| 21 | * Flymake:: Finding syntax errors on the fly. | ||
| 21 | * Debuggers:: Running symbolic debuggers for non-Lisp programs. | 22 | * Debuggers:: Running symbolic debuggers for non-Lisp programs. |
| 22 | * Executing Lisp:: Various modes for editing Lisp programs, | 23 | * Executing Lisp:: Various modes for editing Lisp programs, |
| 23 | with different facilities for running | 24 | with different facilities for running |
| @@ -337,6 +338,31 @@ initial default for the command---one that runs both @code{find} and | |||
| 337 | @code{grep}, so as to search every file in a directory tree. See also | 338 | @code{grep}, so as to search every file in a directory tree. See also |
| 338 | the @code{find-grep-dired} command, in @ref{Dired and Find}. | 339 | the @code{find-grep-dired} command, in @ref{Dired and Find}. |
| 339 | 340 | ||
| 341 | @node Flymake | ||
| 342 | @section Finding Syntax Errors On The Fly | ||
| 343 | @cindex checking syntax | ||
| 344 | |||
| 345 | Flymake mode is a minor mode that performs on-the-fly syntax | ||
| 346 | checking for many programming and markup languages, including C, C++, | ||
| 347 | Perl, HTML, and @TeX{}/La@TeX{}. It is somewhat analogous to Flyspell | ||
| 348 | mode, which performs spell checking for ordinary human languages in a | ||
| 349 | similar fashion (@pxref{Spelling}). As you edit a file, Flymake mode | ||
| 350 | runs an appropriate syntax checking tool in the background, using a | ||
| 351 | temporary copy of the buffer. It then parses the error and warning | ||
| 352 | messages, and highlights the erroneous lines in the buffer. The | ||
| 353 | syntax checking tool used depends on the language; for example, for | ||
| 354 | C/C++ files this is usually the C compiler. Flymake can also use | ||
| 355 | build tools such as @code{make} for checking complicated projects. | ||
| 356 | |||
| 357 | To activate Flymake mode, type @kbd{M-x flymake-mode}. You can move | ||
| 358 | to the errors spotted by Flymake mode with @kbd{M-x | ||
| 359 | flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}. To | ||
| 360 | display any error messages associated with the current line, use | ||
| 361 | @kbd{M-x flymake-display-err-menu-for-current-line}. | ||
| 362 | |||
| 363 | For more details about using Flymake, see @ref{Top, Flymake, | ||
| 364 | Flymake, flymake, The Flymake Manual}. | ||
| 365 | |||
| 340 | @node Debuggers | 366 | @node Debuggers |
| 341 | @section Running Debuggers Under Emacs | 367 | @section Running Debuggers Under Emacs |
| 342 | @cindex debuggers | 368 | @cindex debuggers |
diff --git a/man/calc.texi b/man/calc.texi index 07c33206f28..0cd28e5bf8a 100644 --- a/man/calc.texi +++ b/man/calc.texi | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | @c smallbook | 3 | @c smallbook |
| 4 | @setfilename ../info/calc | 4 | @setfilename ../info/calc |
| 5 | @c [title] | 5 | @c [title] |
| 6 | @settitle GNU Emacs Calc 2.02g Manual | 6 | @settitle GNU Emacs Calc 2.1 Manual |
| 7 | @setchapternewpage odd | 7 | @setchapternewpage odd |
| 8 | @comment %**end of header (This is for running Texinfo on a region.) | 8 | @comment %**end of header (This is for running Texinfo on a region.) |
| 9 | 9 | ||
| @@ -108,7 +108,7 @@ Software Foundation raise funds for GNU development.'' | |||
| 108 | @sp 6 | 108 | @sp 6 |
| 109 | @center @titlefont{Calc Manual} | 109 | @center @titlefont{Calc Manual} |
| 110 | @sp 4 | 110 | @sp 4 |
| 111 | @center GNU Emacs Calc Version 2.02g | 111 | @center GNU Emacs Calc Version 2.1 |
| 112 | @c [volume] | 112 | @c [volume] |
| 113 | @sp 1 | 113 | @sp 1 |
| 114 | @center March 2005 | 114 | @center March 2005 |
| @@ -165,7 +165,7 @@ longer Info tutorial.) | |||
| 165 | * Embedded Mode:: Working with formulas embedded in a file. | 165 | * Embedded Mode:: Working with formulas embedded in a file. |
| 166 | * Programming:: Calc as a programmable calculator. | 166 | * Programming:: Calc as a programmable calculator. |
| 167 | 167 | ||
| 168 | * Installation:: Installing Calc as a part of GNU Emacs. | 168 | * Customizable Variables:: Customizable Variables. |
| 169 | * Reporting Bugs:: How to report bugs and make suggestions. | 169 | * Reporting Bugs:: How to report bugs and make suggestions. |
| 170 | 170 | ||
| 171 | * Summary:: Summary of Calc commands and functions. | 171 | * Summary:: Summary of Calc commands and functions. |
| @@ -180,11 +180,13 @@ longer Info tutorial.) | |||
| 180 | 180 | ||
| 181 | @node Copying, Getting Started, Top, Top | 181 | @node Copying, Getting Started, Top, Top |
| 182 | @unnumbered GNU GENERAL PUBLIC LICENSE | 182 | @unnumbered GNU GENERAL PUBLIC LICENSE |
| 183 | @center Version 1, February 1989 | 183 | @center Version 2, June 1991 |
| 184 | |||
| 185 | @c This file is intended to be included in another file. | ||
| 184 | 186 | ||
| 185 | @display | 187 | @display |
| 186 | Copyright @copyright{} 1989 Free Software Foundation, Inc. | 188 | Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. |
| 187 | 675 Mass Ave, Cambridge, MA 02139, USA | 189 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
| 188 | 190 | ||
| 189 | Everyone is permitted to copy and distribute verbatim copies | 191 | Everyone is permitted to copy and distribute verbatim copies |
| 190 | of this license document, but changing it is not allowed. | 192 | of this license document, but changing it is not allowed. |
| @@ -192,30 +194,33 @@ of this license document, but changing it is not allowed. | |||
| 192 | 194 | ||
| 193 | @unnumberedsec Preamble | 195 | @unnumberedsec Preamble |
| 194 | 196 | ||
| 195 | The license agreements of most software companies try to keep users | 197 | The licenses for most software are designed to take away your |
| 196 | at the mercy of those companies. By contrast, our General Public | 198 | freedom to share and change it. By contrast, the GNU General Public |
| 197 | License is intended to guarantee your freedom to share and change free | 199 | License is intended to guarantee your freedom to share and change free |
| 198 | software---to make sure the software is free for all its users. The | 200 | software---to make sure the software is free for all its users. This |
| 199 | General Public License applies to the Free Software Foundation's | 201 | General Public License applies to most of the Free Software |
| 200 | software and to any other program whose authors commit to using it. | 202 | Foundation's software and to any other program whose authors commit to |
| 201 | You can use it for your programs, too. | 203 | using it. (Some other Free Software Foundation software is covered by |
| 204 | the GNU Library General Public License instead.) You can apply it to | ||
| 205 | your programs, too. | ||
| 202 | 206 | ||
| 203 | When we speak of free software, we are referring to freedom, not | 207 | When we speak of free software, we are referring to freedom, not |
| 204 | price. Specifically, the General Public License is designed to make | 208 | price. Our General Public Licenses are designed to make sure that you |
| 205 | sure that you have the freedom to give away or sell copies of free | 209 | have the freedom to distribute copies of free software (and charge for |
| 206 | software, that you receive source code or can get it if you want it, | 210 | this service if you wish), that you receive source code or can get it |
| 207 | that you can change the software or use pieces of it in new free | 211 | if you want it, that you can change the software or use pieces of it |
| 208 | programs; and that you know you can do these things. | 212 | in new free programs; and that you know you can do these things. |
| 209 | 213 | ||
| 210 | To protect your rights, we need to make restrictions that forbid | 214 | To protect your rights, we need to make restrictions that forbid |
| 211 | anyone to deny you these rights or to ask you to surrender the rights. | 215 | anyone to deny you these rights or to ask you to surrender the rights. |
| 212 | These restrictions translate to certain responsibilities for you if you | 216 | These restrictions translate to certain responsibilities for you if you |
| 213 | distribute copies of the software, or if you modify it. | 217 | distribute copies of the software, or if you modify it. |
| 214 | 218 | ||
| 215 | For example, if you distribute copies of a such a program, whether | 219 | For example, if you distribute copies of such a program, whether |
| 216 | gratis or for a fee, you must give the recipients all the rights that | 220 | gratis or for a fee, you must give the recipients all the rights that |
| 217 | you have. You must make sure that they, too, receive or can get the | 221 | you have. You must make sure that they, too, receive or can get the |
| 218 | source code. And you must tell them their rights. | 222 | source code. And you must show them these terms so they know their |
| 223 | rights. | ||
| 219 | 224 | ||
| 220 | We protect your rights with two steps: (1) copyright the software, and | 225 | We protect your rights with two steps: (1) copyright the software, and |
| 221 | (2) offer you this license which gives you legal permission to copy, | 226 | (2) offer you this license which gives you legal permission to copy, |
| @@ -228,128 +233,216 @@ want its recipients to know that what they have is not the original, so | |||
| 228 | that any problems introduced by others will not reflect on the original | 233 | that any problems introduced by others will not reflect on the original |
| 229 | authors' reputations. | 234 | authors' reputations. |
| 230 | 235 | ||
| 236 | Finally, any free program is threatened constantly by software | ||
| 237 | patents. We wish to avoid the danger that redistributors of a free | ||
| 238 | program will individually obtain patent licenses, in effect making the | ||
| 239 | program proprietary. To prevent this, we have made it clear that any | ||
| 240 | patent must be licensed for everyone's free use or not licensed at all. | ||
| 241 | |||
| 231 | The precise terms and conditions for copying, distribution and | 242 | The precise terms and conditions for copying, distribution and |
| 232 | modification follow. | 243 | modification follow. |
| 233 | 244 | ||
| 234 | @iftex | 245 | @iftex |
| 235 | @unnumberedsec TERMS AND CONDITIONS | 246 | @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
| 236 | @end iftex | 247 | @end iftex |
| 237 | @ifinfo | 248 | @ifinfo |
| 238 | @center TERMS AND CONDITIONS | 249 | @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
| 239 | @end ifinfo | 250 | @end ifinfo |
| 240 | 251 | ||
| 241 | @enumerate | 252 | @enumerate 0 |
| 242 | @item | 253 | @item |
| 243 | This License Agreement applies to any program or other work which | 254 | This License applies to any program or other work which contains |
| 244 | contains a notice placed by the copyright holder saying it may be | 255 | a notice placed by the copyright holder saying it may be distributed |
| 245 | distributed under the terms of this General Public License. The | 256 | under the terms of this General Public License. The ``Program'', below, |
| 246 | ``Program'', below, refers to any such program or work, and a ``work based | 257 | refers to any such program or work, and a ``work based on the Program'' |
| 247 | on the Program'' means either the Program or any work containing the | 258 | means either the Program or any derivative work under copyright law: |
| 248 | Program or a portion of it, either verbatim or with modifications. Each | 259 | that is to say, a work containing the Program or a portion of it, |
| 249 | licensee is addressed as ``you''. | 260 | either verbatim or with modifications and/or translated into another |
| 261 | language. (Hereinafter, translation is included without limitation in | ||
| 262 | the term ``modification''.) Each licensee is addressed as ``you''. | ||
| 263 | |||
| 264 | Activities other than copying, distribution and modification are not | ||
| 265 | covered by this License; they are outside its scope. The act of | ||
| 266 | running the Program is not restricted, and the output from the Program | ||
| 267 | is covered only if its contents constitute a work based on the | ||
| 268 | Program (independent of having been made by running the Program). | ||
| 269 | Whether that is true depends on what the Program does. | ||
| 250 | 270 | ||
| 251 | @item | 271 | @item |
| 252 | You may copy and distribute verbatim copies of the Program's source | 272 | You may copy and distribute verbatim copies of the Program's |
| 253 | code as you receive it, in any medium, provided that you conspicuously and | 273 | source code as you receive it, in any medium, provided that you |
| 254 | appropriately publish on each copy an appropriate copyright notice and | 274 | conspicuously and appropriately publish on each copy an appropriate |
| 255 | disclaimer of warranty; keep intact all the notices that refer to this | 275 | copyright notice and disclaimer of warranty; keep intact all the |
| 256 | General Public License and to the absence of any warranty; and give any | 276 | notices that refer to this License and to the absence of any warranty; |
| 257 | other recipients of the Program a copy of this General Public License | 277 | and give any other recipients of the Program a copy of this License |
| 258 | along with the Program. You may charge a fee for the physical act of | 278 | along with the Program. |
| 259 | transferring a copy. | ||
| 260 | 279 | ||
| 261 | @item | 280 | You may charge a fee for the physical act of transferring a copy, and |
| 262 | You may modify your copy or copies of the Program or any portion of | 281 | you may at your option offer warranty protection in exchange for a fee. |
| 263 | it, and copy and distribute such modifications under the terms of Paragraph | ||
| 264 | 1 above, provided that you also do the following: | ||
| 265 | 282 | ||
| 266 | @itemize @bullet | ||
| 267 | @item | 283 | @item |
| 268 | cause the modified files to carry prominent notices stating that | 284 | You may modify your copy or copies of the Program or any portion |
| 269 | you changed the files and the date of any change; and | 285 | of it, thus forming a work based on the Program, and copy and |
| 286 | distribute such modifications or work under the terms of Section 1 | ||
| 287 | above, provided that you also meet all of these conditions: | ||
| 270 | 288 | ||
| 289 | @enumerate a | ||
| 271 | @item | 290 | @item |
| 272 | cause the whole of any work that you distribute or publish, that | 291 | You must cause the modified files to carry prominent notices |
| 273 | in whole or in part contains the Program or any part thereof, either | 292 | stating that you changed the files and the date of any change. |
| 274 | with or without modifications, to be licensed at no charge to all | ||
| 275 | third parties under the terms of this General Public License (except | ||
| 276 | that you may choose to grant warranty protection to some or all | ||
| 277 | third parties, at your option). | ||
| 278 | 293 | ||
| 279 | @item | 294 | @item |
| 280 | If the modified program normally reads commands interactively when | 295 | You must cause any work that you distribute or publish, that in |
| 281 | run, you must cause it, when started running for such interactive use | 296 | whole or in part contains or is derived from the Program or any |
| 282 | in the simplest and most usual way, to print or display an | 297 | part thereof, to be licensed as a whole at no charge to all third |
| 283 | announcement including an appropriate copyright notice and a notice | 298 | parties under the terms of this License. |
| 284 | that there is no warranty (or else, saying that you provide a | ||
| 285 | warranty) and that users may redistribute the program under these | ||
| 286 | conditions, and telling the user how to view a copy of this General | ||
| 287 | Public License. | ||
| 288 | 299 | ||
| 289 | @item | 300 | @item |
| 290 | You may charge a fee for the physical act of transferring a | 301 | If the modified program normally reads commands interactively |
| 291 | copy, and you may at your option offer warranty protection in | 302 | when run, you must cause it, when started running for such |
| 292 | exchange for a fee. | 303 | interactive use in the most ordinary way, to print or display an |
| 293 | @end itemize | 304 | announcement including an appropriate copyright notice and a |
| 305 | notice that there is no warranty (or else, saying that you provide | ||
| 306 | a warranty) and that users may redistribute the program under | ||
| 307 | these conditions, and telling the user how to view a copy of this | ||
| 308 | License. (Exception: if the Program itself is interactive but | ||
| 309 | does not normally print such an announcement, your work based on | ||
| 310 | the Program is not required to print an announcement.) | ||
| 311 | @end enumerate | ||
| 294 | 312 | ||
| 295 | Mere aggregation of another independent work with the Program (or its | 313 | These requirements apply to the modified work as a whole. If |
| 296 | derivative) on a volume of a storage or distribution medium does not bring | 314 | identifiable sections of that work are not derived from the Program, |
| 297 | the other work under the scope of these terms. | 315 | and can be reasonably considered independent and separate works in |
| 316 | themselves, then this License, and its terms, do not apply to those | ||
| 317 | sections when you distribute them as separate works. But when you | ||
| 318 | distribute the same sections as part of a whole which is a work based | ||
| 319 | on the Program, the distribution of the whole must be on the terms of | ||
| 320 | this License, whose permissions for other licensees extend to the | ||
| 321 | entire whole, and thus to each and every part regardless of who wrote it. | ||
| 322 | |||
| 323 | Thus, it is not the intent of this section to claim rights or contest | ||
| 324 | your rights to work written entirely by you; rather, the intent is to | ||
| 325 | exercise the right to control the distribution of derivative or | ||
| 326 | collective works based on the Program. | ||
| 327 | |||
| 328 | In addition, mere aggregation of another work not based on the Program | ||
| 329 | with the Program (or with a work based on the Program) on a volume of | ||
| 330 | a storage or distribution medium does not bring the other work under | ||
| 331 | the scope of this License. | ||
| 298 | 332 | ||
| 299 | @item | 333 | @item |
| 300 | You may copy and distribute the Program (or a portion or derivative of | 334 | You may copy and distribute the Program (or a work based on it, |
| 301 | it, under Paragraph 2) in object code or executable form under the terms of | 335 | under Section 2) in object code or executable form under the terms of |
| 302 | Paragraphs 1 and 2 above provided that you also do one of the following: | 336 | Sections 1 and 2 above provided that you also do one of the following: |
| 303 | 337 | ||
| 304 | @itemize @bullet | 338 | @enumerate a |
| 305 | @item | 339 | @item |
| 306 | accompany it with the complete corresponding machine-readable | 340 | Accompany it with the complete corresponding machine-readable |
| 307 | source code, which must be distributed under the terms of | 341 | source code, which must be distributed under the terms of Sections |
| 308 | Paragraphs 1 and 2 above; or, | 342 | 1 and 2 above on a medium customarily used for software interchange; or, |
| 309 | 343 | ||
| 310 | @item | 344 | @item |
| 311 | accompany it with a written offer, valid for at least three | 345 | Accompany it with a written offer, valid for at least three |
| 312 | years, to give any third party free (except for a nominal charge | 346 | years, to give any third party, for a charge no more than your |
| 313 | for the cost of distribution) a complete machine-readable copy of the | 347 | cost of physically performing source distribution, a complete |
| 314 | corresponding source code, to be distributed under the terms of | 348 | machine-readable copy of the corresponding source code, to be |
| 315 | Paragraphs 1 and 2 above; or, | 349 | distributed under the terms of Sections 1 and 2 above on a medium |
| 350 | customarily used for software interchange; or, | ||
| 316 | 351 | ||
| 317 | @item | 352 | @item |
| 318 | accompany it with the information you received as to where the | 353 | Accompany it with the information you received as to the offer |
| 319 | corresponding source code may be obtained. (This alternative is | 354 | to distribute corresponding source code. (This alternative is |
| 320 | allowed only for noncommercial distribution and only if you | 355 | allowed only for noncommercial distribution and only if you |
| 321 | received the program in object code or executable form alone.) | 356 | received the program in object code or executable form with such |
| 322 | @end itemize | 357 | an offer, in accord with Subsection b above.) |
| 358 | @end enumerate | ||
| 323 | 359 | ||
| 324 | Source code for a work means the preferred form of the work for making | 360 | The source code for a work means the preferred form of the work for |
| 325 | modifications to it. For an executable file, complete source code means | 361 | making modifications to it. For an executable work, complete source |
| 326 | all the source code for all modules it contains; but, as a special | 362 | code means all the source code for all modules it contains, plus any |
| 327 | exception, it need not include source code for modules which are standard | 363 | associated interface definition files, plus the scripts used to |
| 328 | libraries that accompany the operating system on which the executable | 364 | control compilation and installation of the executable. However, as a |
| 329 | file runs, or for standard header files or definitions files that | 365 | special exception, the source code distributed need not include |
| 330 | accompany that operating system. | 366 | anything that is normally distributed (in either source or binary |
| 367 | form) with the major components (compiler, kernel, and so on) of the | ||
| 368 | operating system on which the executable runs, unless that component | ||
| 369 | itself accompanies the executable. | ||
| 370 | |||
| 371 | If distribution of executable or object code is made by offering | ||
| 372 | access to copy from a designated place, then offering equivalent | ||
| 373 | access to copy the source code from the same place counts as | ||
| 374 | distribution of the source code, even though third parties are not | ||
| 375 | compelled to copy the source along with the object code. | ||
| 331 | 376 | ||
| 332 | @item | 377 | @item |
| 333 | You may not copy, modify, sublicense, distribute or transfer the | 378 | You may not copy, modify, sublicense, or distribute the Program |
| 334 | Program except as expressly provided under this General Public License. | 379 | except as expressly provided under this License. Any attempt |
| 335 | Any attempt otherwise to copy, modify, sublicense, distribute or transfer | 380 | otherwise to copy, modify, sublicense or distribute the Program is |
| 336 | the Program is void, and will automatically terminate your rights to use | 381 | void, and will automatically terminate your rights under this License. |
| 337 | the Program under this License. However, parties who have received | 382 | However, parties who have received copies, or rights, from you under |
| 338 | copies, or rights to use copies, from you under this General Public | 383 | this License will not have their licenses terminated so long as such |
| 339 | License will not have their licenses terminated so long as such parties | 384 | parties remain in full compliance. |
| 340 | remain in full compliance. | ||
| 341 | 385 | ||
| 342 | @item | 386 | @item |
| 343 | By copying, distributing or modifying the Program (or any work based | 387 | You are not required to accept this License, since you have not |
| 344 | on the Program) you indicate your acceptance of this license to do so, | 388 | signed it. However, nothing else grants you permission to modify or |
| 345 | and all its terms and conditions. | 389 | distribute the Program or its derivative works. These actions are |
| 390 | prohibited by law if you do not accept this License. Therefore, by | ||
| 391 | modifying or distributing the Program (or any work based on the | ||
| 392 | Program), you indicate your acceptance of this License to do so, and | ||
| 393 | all its terms and conditions for copying, distributing or modifying | ||
| 394 | the Program or works based on it. | ||
| 346 | 395 | ||
| 347 | @item | 396 | @item |
| 348 | Each time you redistribute the Program (or any work based on the | 397 | Each time you redistribute the Program (or any work based on the |
| 349 | Program), the recipient automatically receives a license from the original | 398 | Program), the recipient automatically receives a license from the |
| 350 | licensor to copy, distribute or modify the Program subject to these | 399 | original licensor to copy, distribute or modify the Program subject to |
| 351 | terms and conditions. You may not impose any further restrictions on the | 400 | these terms and conditions. You may not impose any further |
| 352 | recipients' exercise of the rights granted herein. | 401 | restrictions on the recipients' exercise of the rights granted herein. |
| 402 | You are not responsible for enforcing compliance by third parties to | ||
| 403 | this License. | ||
| 404 | |||
| 405 | @item | ||
| 406 | If, as a consequence of a court judgment or allegation of patent | ||
| 407 | infringement or for any other reason (not limited to patent issues), | ||
| 408 | conditions are imposed on you (whether by court order, agreement or | ||
| 409 | otherwise) that contradict the conditions of this License, they do not | ||
| 410 | excuse you from the conditions of this License. If you cannot | ||
| 411 | distribute so as to satisfy simultaneously your obligations under this | ||
| 412 | License and any other pertinent obligations, then as a consequence you | ||
| 413 | may not distribute the Program at all. For example, if a patent | ||
| 414 | license would not permit royalty-free redistribution of the Program by | ||
| 415 | all those who receive copies directly or indirectly through you, then | ||
| 416 | the only way you could satisfy both it and this License would be to | ||
| 417 | refrain entirely from distribution of the Program. | ||
| 418 | |||
| 419 | If any portion of this section is held invalid or unenforceable under | ||
| 420 | any particular circumstance, the balance of the section is intended to | ||
| 421 | apply and the section as a whole is intended to apply in other | ||
| 422 | circumstances. | ||
| 423 | |||
| 424 | It is not the purpose of this section to induce you to infringe any | ||
| 425 | patents or other property right claims or to contest validity of any | ||
| 426 | such claims; this section has the sole purpose of protecting the | ||
| 427 | integrity of the free software distribution system, which is | ||
| 428 | implemented by public license practices. Many people have made | ||
| 429 | generous contributions to the wide range of software distributed | ||
| 430 | through that system in reliance on consistent application of that | ||
| 431 | system; it is up to the author/donor to decide if he or she is willing | ||
| 432 | to distribute software through any other system and a licensee cannot | ||
| 433 | impose that choice. | ||
| 434 | |||
| 435 | This section is intended to make thoroughly clear what is believed to | ||
| 436 | be a consequence of the rest of this License. | ||
| 437 | |||
| 438 | @item | ||
| 439 | If the distribution and/or use of the Program is restricted in | ||
| 440 | certain countries either by patents or by copyrighted interfaces, the | ||
| 441 | original copyright holder who places the Program under this License | ||
| 442 | may add an explicit geographical distribution limitation excluding | ||
| 443 | those countries, so that distribution is permitted only in or among | ||
| 444 | countries not thus excluded. In such case, this License incorporates | ||
| 445 | the limitation as if written in the body of this License. | ||
| 353 | 446 | ||
| 354 | @item | 447 | @item |
| 355 | The Free Software Foundation may publish revised and/or new versions | 448 | The Free Software Foundation may publish revised and/or new versions |
| @@ -358,11 +451,11 @@ be similar in spirit to the present version, but may differ in detail to | |||
| 358 | address new problems or concerns. | 451 | address new problems or concerns. |
| 359 | 452 | ||
| 360 | Each version is given a distinguishing version number. If the Program | 453 | Each version is given a distinguishing version number. If the Program |
| 361 | specifies a version number of the license which applies to it and ``any | 454 | specifies a version number of this License which applies to it and ``any |
| 362 | later version'', you have the option of following the terms and conditions | 455 | later version'', you have the option of following the terms and conditions |
| 363 | either of that version or of any later version published by the Free | 456 | either of that version or of any later version published by the Free |
| 364 | Software Foundation. If the Program does not specify a version number of | 457 | Software Foundation. If the Program does not specify a version number of |
| 365 | the license, you may choose any version ever published by the Free Software | 458 | this License, you may choose any version ever published by the Free Software |
| 366 | Foundation. | 459 | Foundation. |
| 367 | 460 | ||
| 368 | @item | 461 | @item |
| @@ -393,17 +486,91 @@ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | |||
| 393 | REPAIR OR CORRECTION. | 486 | REPAIR OR CORRECTION. |
| 394 | 487 | ||
| 395 | @item | 488 | @item |
| 396 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL | 489 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
| 397 | ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | 490 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
| 398 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | 491 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
| 399 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES | 492 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
| 400 | ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT | 493 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
| 401 | LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES | 494 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
| 402 | SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE | 495 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
| 403 | WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN | 496 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
| 404 | ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | 497 | POSSIBILITY OF SUCH DAMAGES. |
| 405 | @end enumerate | 498 | @end enumerate |
| 406 | 499 | ||
| 500 | @iftex | ||
| 501 | @heading END OF TERMS AND CONDITIONS | ||
| 502 | @end iftex | ||
| 503 | @ifinfo | ||
| 504 | @center END OF TERMS AND CONDITIONS | ||
| 505 | @end ifinfo | ||
| 506 | |||
| 507 | @page | ||
| 508 | @unnumberedsec Appendix: How to Apply These Terms to Your New Programs | ||
| 509 | |||
| 510 | If you develop a new program, and you want it to be of the greatest | ||
| 511 | possible use to the public, the best way to achieve this is to make it | ||
| 512 | free software which everyone can redistribute and change under these terms. | ||
| 513 | |||
| 514 | To do so, attach the following notices to the program. It is safest | ||
| 515 | to attach them to the start of each source file to most effectively | ||
| 516 | convey the exclusion of warranty; and each file should have at least | ||
| 517 | the ``copyright'' line and a pointer to where the full notice is found. | ||
| 518 | |||
| 519 | @smallexample | ||
| 520 | @var{one line to give the program's name and a brief idea of what it does.} | ||
| 521 | Copyright (C) @var{yyyy} @var{name of author} | ||
| 522 | |||
| 523 | This program is free software; you can redistribute it and/or modify | ||
| 524 | it under the terms of the GNU General Public License as published by | ||
| 525 | the Free Software Foundation; either version 2 of the License, or | ||
| 526 | (at your option) any later version. | ||
| 527 | |||
| 528 | This program is distributed in the hope that it will be useful, | ||
| 529 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 530 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 531 | GNU General Public License for more details. | ||
| 532 | |||
| 533 | You should have received a copy of the GNU General Public License | ||
| 534 | along with this program; if not, write to the Free Software | ||
| 535 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 536 | @end smallexample | ||
| 537 | |||
| 538 | Also add information on how to contact you by electronic and paper mail. | ||
| 539 | |||
| 540 | If the program is interactive, make it output a short notice like this | ||
| 541 | when it starts in an interactive mode: | ||
| 542 | |||
| 543 | @smallexample | ||
| 544 | Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author} | ||
| 545 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||
| 546 | This is free software, and you are welcome to redistribute it | ||
| 547 | under certain conditions; type `show c' for details. | ||
| 548 | @end smallexample | ||
| 549 | |||
| 550 | The hypothetical commands @samp{show w} and @samp{show c} should show | ||
| 551 | the appropriate parts of the General Public License. Of course, the | ||
| 552 | commands you use may be called something other than @samp{show w} and | ||
| 553 | @samp{show c}; they could even be mouse-clicks or menu items---whatever | ||
| 554 | suits your program. | ||
| 555 | |||
| 556 | You should also get your employer (if you work as a programmer) or your | ||
| 557 | school, if any, to sign a ``copyright disclaimer'' for the program, if | ||
| 558 | necessary. Here is a sample; alter the names: | ||
| 559 | |||
| 560 | @example | ||
| 561 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||
| 562 | `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||
| 563 | |||
| 564 | @var{signature of Ty Coon}, 1 April 1989 | ||
| 565 | Ty Coon, President of Vice | ||
| 566 | @end example | ||
| 567 | |||
| 568 | This General Public License does not permit incorporating your program into | ||
| 569 | proprietary programs. If your program is a subroutine library, you may | ||
| 570 | consider it more useful to permit linking proprietary applications with the | ||
| 571 | library. If this is what you want to do, use the GNU Library General | ||
| 572 | Public License instead of this License. | ||
| 573 | |||
| 407 | @node Getting Started, Tutorial, Copying, Top | 574 | @node Getting Started, Tutorial, Copying, Top |
| 408 | @chapter Getting Started | 575 | @chapter Getting Started |
| 409 | @noindent | 576 | @noindent |
| @@ -10613,11 +10780,6 @@ If this happens, the easiest workaround is to type @kbd{M-# L} | |||
| 10613 | loaded right away. This will cause Emacs to take up a lot more | 10780 | loaded right away. This will cause Emacs to take up a lot more |
| 10614 | memory than it would otherwise, but it's guaranteed to fix the problem. | 10781 | memory than it would otherwise, but it's guaranteed to fix the problem. |
| 10615 | 10782 | ||
| 10616 | If you seem to run into this problem no matter what you do, or if | ||
| 10617 | even the @kbd{M-# L} command crashes, Calc may have been improperly | ||
| 10618 | installed. @xref{Installation}, for details of the installation | ||
| 10619 | process. | ||
| 10620 | |||
| 10621 | @node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands | 10783 | @node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands |
| 10622 | @subsection Recursion Depth | 10784 | @subsection Recursion Depth |
| 10623 | 10785 | ||
| @@ -12306,7 +12468,7 @@ if this file exists, and this file becomes the one that Calc will | |||
| 12306 | use in the future for commands like @kbd{m m}. The default settings | 12468 | use in the future for commands like @kbd{m m}. The default settings |
| 12307 | file name is @file{~/.calc.el}. You can see the current file name by | 12469 | file name is @file{~/.calc.el}. You can see the current file name by |
| 12308 | giving a blank response to the @kbd{m F} prompt. See also the | 12470 | giving a blank response to the @kbd{m F} prompt. See also the |
| 12309 | discussion of the @code{calc-settings-file} variable; @pxref{Installation}. | 12471 | discussion of the @code{calc-settings-file} variable; @pxref{Customizable Variables}. |
| 12310 | 12472 | ||
| 12311 | If the file name you give is your user init file (typically | 12473 | If the file name you give is your user init file (typically |
| 12312 | @file{~/.emacs}), @kbd{m F} will not automatically load the new file. This | 12474 | @file{~/.emacs}), @kbd{m F} will not automatically load the new file. This |
| @@ -29109,7 +29271,7 @@ of the @samp{*Gnuplot Commands*} buffer. | |||
| 29109 | @vindex calc-gnuplot-print-command | 29271 | @vindex calc-gnuplot-print-command |
| 29110 | @vindex calc-gnuplot-print-device | 29272 | @vindex calc-gnuplot-print-device |
| 29111 | @vindex calc-gnuplot-print-output | 29273 | @vindex calc-gnuplot-print-output |
| 29112 | If you are installing Calc you may wish to configure the default and | 29274 | You may wish to configure the default and |
| 29113 | printer devices and output files for the whole system. The relevant | 29275 | printer devices and output files for the whole system. The relevant |
| 29114 | Lisp variables are @code{calc-gnuplot-default-device} and @code{-output}, | 29276 | Lisp variables are @code{calc-gnuplot-default-device} and @code{-output}, |
| 29115 | and @code{calc-gnuplot-print-device} and @code{-output}. The output | 29277 | and @code{calc-gnuplot-print-device} and @code{-output}. The output |
| @@ -29122,7 +29284,8 @@ display or print the output of GNUPLOT, respectively. These may be | |||
| 29122 | @code{nil} if no command is necessary, or strings which can include | 29284 | @code{nil} if no command is necessary, or strings which can include |
| 29123 | @samp{%s} to signify the name of the file to be displayed or printed. | 29285 | @samp{%s} to signify the name of the file to be displayed or printed. |
| 29124 | Or, these variables may contain Lisp expressions which are evaluated | 29286 | Or, these variables may contain Lisp expressions which are evaluated |
| 29125 | to display or print the output. | 29287 | to display or print the output. These variables are customizable |
| 29288 | (@pxref{Customizable Variables}). | ||
| 29126 | 29289 | ||
| 29127 | @kindex g x | 29290 | @kindex g x |
| 29128 | @pindex calc-graph-display | 29291 | @pindex calc-graph-display |
| @@ -29910,7 +30073,8 @@ Similarly, Calc will use @TeX{} language for @code{tex-mode}, | |||
| 29910 | @code{plain-tex-mode} and @code{context-mode}, C language for | 30073 | @code{plain-tex-mode} and @code{context-mode}, C language for |
| 29911 | @code{c-mode} and @code{c++-mode}, FORTRAN language for | 30074 | @code{c-mode} and @code{c++-mode}, FORTRAN language for |
| 29912 | @code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode}, | 30075 | @code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode}, |
| 29913 | and eqn for @code{nroff-mode}. These can be overridden with Calc's mode | 30076 | and eqn for @code{nroff-mode} (@pxref{Customizable Variables}). |
| 30077 | These can be overridden with Calc's mode | ||
| 29914 | changing commands (@pxref{Mode Settings in Embedded Mode}). If no | 30078 | changing commands (@pxref{Mode Settings in Embedded Mode}). If no |
| 29915 | suitable language is available, Calc will continue with its current language. | 30079 | suitable language is available, Calc will continue with its current language. |
| 29916 | 30080 | ||
| @@ -30612,10 +30776,10 @@ for @code{Save} have no effect. | |||
| 30612 | 30776 | ||
| 30613 | @noindent | 30777 | @noindent |
| 30614 | You can modify Embedded mode's behavior by setting various Lisp | 30778 | You can modify Embedded mode's behavior by setting various Lisp |
| 30615 | variables described here. Use @kbd{M-x set-variable} or | 30779 | variables described here. These variables are customizable |
| 30616 | @kbd{M-x edit-options} to adjust a variable on the fly, or | 30780 | (@pxref{Customizable Variables}), or you can use @kbd{M-x set-variable} |
| 30617 | put a suitable @code{setq} statement in your Calc init file (or | 30781 | or @kbd{M-x edit-options} to adjust a variable on the fly. |
| 30618 | @file{~/.emacs}) to set a variable permanently. (Another possibility would | 30782 | (Another possibility would |
| 30619 | be to use a file-local variable annotation at the end of the | 30783 | be to use a file-local variable annotation at the end of the |
| 30620 | file; @pxref{File Variables, , Local Variables in Files, emacs, the | 30784 | file; @pxref{File Variables, , Local Variables in Files, emacs, the |
| 30621 | Emacs manual}.) | 30785 | Emacs manual}.) |
| @@ -30760,7 +30924,7 @@ is simply a newline, @code{"\n"}. If you change this, it is a | |||
| 30760 | good idea still to end with a newline so that mode annotations | 30924 | good idea still to end with a newline so that mode annotations |
| 30761 | will appear on lines by themselves. | 30925 | will appear on lines by themselves. |
| 30762 | 30926 | ||
| 30763 | @node Programming, Installation, Embedded Mode, Top | 30927 | @node Programming, Customizable Variables, Embedded Mode, Top |
| 30764 | @chapter Programming | 30928 | @chapter Programming |
| 30765 | 30929 | ||
| 30766 | @noindent | 30930 | @noindent |
| @@ -34610,70 +34774,204 @@ used the first time, your hook should add a variable to the | |||
| 34610 | list and also call @code{make-local-variable} itself. | 34774 | list and also call @code{make-local-variable} itself. |
| 34611 | @end defvar | 34775 | @end defvar |
| 34612 | 34776 | ||
| 34613 | @node Installation, Reporting Bugs, Programming, Top | 34777 | @node Customizable Variables, Reporting Bugs, Programming, Top |
| 34614 | @appendix Installation | 34778 | @appendix Customizable Variables |
| 34779 | |||
| 34780 | GNU Calc is controlled by many variables, most of which can be reset | ||
| 34781 | from within Calc. Some variables are less involved with actual | ||
| 34782 | calculation, and can be set outside of Calc using Emacs's | ||
| 34783 | customization facilities. These variables are listed below. | ||
| 34784 | Typing @kbd{M-x customize-variable RET @var{variable-name} RET} | ||
| 34785 | will bring up a buffer in which the variable's value can be redefined. | ||
| 34786 | Typing @kbd{M-x customize-group RET calc RET} will bring up a buffer which | ||
| 34787 | contains all of Calc's customizable variables. (These variables can | ||
| 34788 | also be reset by putting the appropriate lines in your .emacs file; | ||
| 34789 | @xref{Init File, ,Init File, emacs, The GNU Emacs Manual}.) | ||
| 34790 | |||
| 34791 | Some of the customizable variables are regular expressions. A regular | ||
| 34792 | expression is basically a pattern that Calc can search for. | ||
| 34793 | See @ref{Regexp Search,, Regular Expression Search, emacs, The GNU Emacs Manual} | ||
| 34794 | to see how regular expressions work. | ||
| 34615 | 34795 | ||
| 34616 | @noindent | 34796 | @table @code |
| 34617 | As of Calc 2.02g, Calc is integrated with GNU Emacs, and thus requires | ||
| 34618 | no separate installation of its Lisp files and this manual. | ||
| 34619 | 34797 | ||
| 34620 | @appendixsec The GNUPLOT Program | 34798 | @item calc-settings-file |
| 34621 | 34799 | ||
| 34622 | @noindent | 34800 | @vindex calc-settings-file |
| 34623 | Calc's graphing commands use the GNUPLOT program. If you have GNUPLOT | 34801 | The variable @code{calc-settings-file} holds the file name in |
| 34624 | but you must type some command other than @file{gnuplot} to get it, | 34802 | which commands like @kbd{m m} and @kbd{Z P} store ``permanent'' |
| 34625 | you should add a command to set the Lisp variable @code{calc-gnuplot-name} | 34803 | definitions. |
| 34626 | to the appropriate file name. You may also need to change the variables | 34804 | If @code{calc-settings-file} is not your user init file (typically |
| 34627 | @code{calc-gnuplot-plot-command} and @code{calc-gnuplot-print-command} in | 34805 | @file{~/.emacs}) and if the variable @code{calc-loaded-settings-file} is |
| 34628 | order to get correct displays and hardcopies, respectively, of your | 34806 | @code{nil}, then Calc will automatically load your settings file (if it |
| 34629 | plots. | 34807 | exists) the first time Calc is invoked. |
| 34808 | |||
| 34809 | The default value for this variable is @code{"~/.calc.el"}. | ||
| 34810 | |||
| 34811 | @item calc-gnuplot-name | ||
| 34812 | |||
| 34813 | See @ref{Graphics}.@* | ||
| 34814 | The variable @code{calc-gnuplot-name} should be the name of the | ||
| 34815 | GNUPLOT program (a string). If you have GNUPLOT installed on your | ||
| 34816 | system but Calc is unable to find it, you may need to set this | ||
| 34817 | variable. (@pxref{Customizable Variables}) | ||
| 34818 | You may also need to set some Lisp variables to show Calc how to run | ||
| 34819 | GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} . The default value | ||
| 34820 | of @code{calc-gnuplot-name} is @code{"gnuplot"}. | ||
| 34821 | |||
| 34822 | @item calc-gnuplot-plot-command | ||
| 34823 | @itemx calc-gnuplot-print-command | ||
| 34824 | |||
| 34825 | See @ref{Devices, ,Graphical Devices}.@* | ||
| 34826 | The variables @code{calc-gnuplot-plot-command} and | ||
| 34827 | @code{calc-gnuplot-print-command} represent system commands to | ||
| 34828 | display and print the output of GNUPLOT, respectively. These may be | ||
| 34829 | @code{nil} if no command is necessary, or strings which can include | ||
| 34830 | @samp{%s} to signify the name of the file to be displayed or printed. | ||
| 34831 | Or, these variables may contain Lisp expressions which are evaluated | ||
| 34832 | to display or print the output. | ||
| 34630 | 34833 | ||
| 34631 | @ifinfo | 34834 | The default value of @code{calc-gnuplot-plot-command} is @code{nil}, |
| 34835 | and the default value of @code{calc-gnuplot-print-command} is | ||
| 34836 | @code{"lp %s"}. | ||
| 34837 | |||
| 34838 | @item calc-language-alist | ||
| 34839 | |||
| 34840 | See @ref{Basic Embedded Mode}.@* | ||
| 34841 | The variable @code{calc-language-alist} controls the languages that | ||
| 34842 | Calc will associate with major modes. When Calc embedded mode is | ||
| 34843 | enabled, it will try to use the current major mode to | ||
| 34844 | determine what language should be used. (This can be overridden using | ||
| 34845 | Calc's mode changing commands, @xref{Mode Settings in Embedded Mode}.) | ||
| 34846 | The variable @code{calc-language-alist} consists of a list of pairs of | ||
| 34847 | the form @code{(@var{MAJOR-MODE} . @var{LANGUAGE})}; for example, | ||
| 34848 | @code{(latex-mode . latex)} is one such pair. If Calc embedded is | ||
| 34849 | activated in a buffer whose major mode is @var{MAJOR-MODE}, it will set itself | ||
| 34850 | to use the language @var{LANGUAGE}. | ||
| 34851 | |||
| 34852 | The default value of @code{calc-language-alist} is | ||
| 34632 | @example | 34853 | @example |
| 34633 | 34854 | ((latex-mode . latex) | |
| 34855 | (tex-mode . tex) | ||
| 34856 | (plain-tex-mode . tex) | ||
| 34857 | (context-mode . tex) | ||
| 34858 | (nroff-mode . eqn) | ||
| 34859 | (pascal-mode . pascal) | ||
| 34860 | (c-mode . c) | ||
| 34861 | (c++-mode . c) | ||
| 34862 | (fortran-mode . fortran) | ||
| 34863 | (f90-mode . fortran)) | ||
| 34634 | @end example | 34864 | @end example |
| 34635 | @end ifinfo | ||
| 34636 | 34865 | ||
| 34637 | @appendixsec Settings File | 34866 | @item calc-embedded-announce-formula |
| 34638 | 34867 | ||
| 34639 | @noindent | 34868 | See @ref{Customizing Embedded Mode}.@* |
| 34640 | @vindex calc-settings-file | 34869 | The variable @code{calc-embedded-announce-formula} helps determine |
| 34641 | Another variable you might want to set is @code{calc-settings-file}, | 34870 | what formulas @kbd{M-# a} will activate in a buffer. It is a |
| 34642 | which holds the file name in which commands like @kbd{m m} and @kbd{Z P} | 34871 | regular expression, and when activating embedded formulas with |
| 34643 | store ``permanent'' definitions. The default value for this variable | 34872 | @kbd{M-# a}, it will tell Calc that what follows is a formula to be |
| 34644 | is @code{"~/.calc.el"}. If @code{calc-settings-file} is not your user | 34873 | activated. (Calc also uses other patterns to find formulas, such as |
| 34645 | init file (typically @file{~/.emacs}) and if the variable | 34874 | @samp{=>} and @samp{:=}.) |
| 34646 | @code{calc-loaded-settings-file} is @code{nil}, then Calc will | ||
| 34647 | automatically load your settings file (if it exists) the first time | ||
| 34648 | Calc is invoked. | ||
| 34649 | 34875 | ||
| 34650 | @ifinfo | 34876 | The default pattern is @code{"%Embed\n\\(% .*\n\\)*"}, which checks |
| 34651 | @example | 34877 | for @samp{%Embed} followed by any number of lines beginning with |
| 34878 | @samp{%} and a space. | ||
| 34652 | 34879 | ||
| 34653 | @end example | 34880 | @item calc-embedded-open-formula |
| 34654 | @end ifinfo | 34881 | @itemx calc-embedded-close-formula |
| 34655 | @appendixsec Testing the Installation | ||
| 34656 | 34882 | ||
| 34657 | @noindent | 34883 | See @ref{Customizing Embedded Mode}.@* |
| 34658 | To test your installation of Calc, start a new Emacs and type @kbd{M-# c} | 34884 | The variables @code{calc-embedded-open-formula} and |
| 34659 | to make sure the autoloads and key bindings work. Type @kbd{M-# i} | 34885 | @code{calc-embedded-open-formula} control the region that Calc will |
| 34660 | to make sure Calc can find its Info documentation. Press @kbd{q} to | 34886 | activate as a formula when Embedded mode is entered with @kbd{M-# e}. |
| 34661 | exit the Info system and @kbd{M-# c} to re-enter the Calculator. | 34887 | They are regular expressions; |
| 34662 | Type @kbd{20 S} to compute the sine of 20 degrees; this will test the | 34888 | Calc normally scans backward and forward in the buffer for the |
| 34663 | autoloading of the extensions modules. The result should be | 34889 | nearest text matching these regular expressions to be the ``formula |
| 34664 | 0.342020143326. Finally, press @kbd{M-# c} again to make sure the | 34890 | delimiters''. |
| 34665 | Calculator can exit. | ||
| 34666 | 34891 | ||
| 34667 | You may also wish to test the GNUPLOT interface; to plot a sine wave, | 34892 | The simplest delimiters are blank lines. Other delimiters that |
| 34668 | type @kbd{' [0 ..@: 360], sin(x) @key{RET} g f}. Type @kbd{g q} when you | 34893 | Embedded mode understands by default are: |
| 34669 | are done viewing the plot. | 34894 | @enumerate |
| 34895 | @item | ||
| 34896 | The @TeX{} and La@TeX{} math delimiters @samp{$ $}, @samp{$$ $$}, | ||
| 34897 | @samp{\[ \]}, and @samp{\( \)}; | ||
| 34898 | @item | ||
| 34899 | Lines beginning with @samp{\begin} and @samp{\end} (except matrix delimiters); | ||
| 34900 | @item | ||
| 34901 | Lines beginning with @samp{@@} (Texinfo delimiters). | ||
| 34902 | @item | ||
| 34903 | Lines beginning with @samp{.EQ} and @samp{.EN} (@dfn{eqn} delimiters); | ||
| 34904 | @item | ||
| 34905 | Lines containing a single @samp{%} or @samp{.\"} symbol and nothing else. | ||
| 34906 | @end enumerate | ||
| 34670 | 34907 | ||
| 34671 | Calc is now ready to use. If you wish to go through the Calc Tutorial, | 34908 | @item calc-embedded-open-word |
| 34672 | press @kbd{M-# t} to begin. | 34909 | @itemx calc-embedded-close-word |
| 34673 | @example | ||
| 34674 | 34910 | ||
| 34675 | @end example | 34911 | See @ref{Customizing Embedded Mode}.@* |
| 34676 | @node Reporting Bugs, Summary, Installation, Top | 34912 | The variables @code{calc-embedded-open-word} and |
| 34913 | @code{calc-embedded-close-word} control the region that Calc will | ||
| 34914 | activate when Embedded mode is entered with @kbd{M-# w}. They are | ||
| 34915 | regular expressions. | ||
| 34916 | |||
| 34917 | The default values of @code{calc-embedded-open-word} and | ||
| 34918 | @code{calc-embedded-close-word} are @code{"^\\|[^-+0-9.eE]"} and | ||
| 34919 | @code{"$\\|[^-+0-9.eE]"} respectively. | ||
| 34920 | |||
| 34921 | @item calc-embedded-open-plain | ||
| 34922 | @itemx calc-embedded-close-plain | ||
| 34923 | |||
| 34924 | See @ref{Customizing Embedded Mode}.@* | ||
| 34925 | The variables @code{calc-embedded-open-plain} and | ||
| 34926 | @code{calc-embedded-open-plain} are used to delimit ``plain'' | ||
| 34927 | formulas. Note that these are actual strings, not regular | ||
| 34928 | expressions, because Calc must be able to write these string into a | ||
| 34929 | buffer as well as to recognize them. | ||
| 34930 | |||
| 34931 | The default string for @code{calc-embedded-open-plain} is | ||
| 34932 | @code{"%%% "}, note the trailing space. The default string for | ||
| 34933 | @code{calc-embedded-close-plain} is @code{" %%%\n"}, without | ||
| 34934 | the trailing newline here, the first line of a Big mode formula | ||
| 34935 | that followed might be shifted over with respect to the other lines. | ||
| 34936 | |||
| 34937 | @item calc-embedded-open-new-formula | ||
| 34938 | @itemx calc-embedded-close-new-formula | ||
| 34939 | |||
| 34940 | See @ref{Customizing Embedded Mode}.@* | ||
| 34941 | The variables @code{calc-embedded-open-new-formula} and | ||
| 34942 | @code{calc-embedded-close-new-formula} are strings which are | ||
| 34943 | inserted before and after a new formula when you type @kbd{M-# f}. | ||
| 34944 | |||
| 34945 | The default value of @code{calc-embedded-open-new-formula} is | ||
| 34946 | @code{"\n\n"}. If this string begins with a newline character and the | ||
| 34947 | @kbd{M-# f} is typed at the beginning of a line, @kbd{M-# f} will skip | ||
| 34948 | this first newline to avoid introducing unnecessary blank lines in the | ||
| 34949 | file. The default value of @code{calc-embedded-close-new-formula} is | ||
| 34950 | also @code{"\n\n"}. The final newline is omitted by @w{@kbd{M-# f}} | ||
| 34951 | if typed at the end of a line. (It follows that if @kbd{M-# f} is | ||
| 34952 | typed on a blank line, both a leading opening newline and a trailing | ||
| 34953 | closing newline are omitted.) | ||
| 34954 | |||
| 34955 | @item calc-embedded-open-mode | ||
| 34956 | @itemx calc-embedded-close-mode | ||
| 34957 | |||
| 34958 | See @ref{Customizing Embedded Mode}.@* | ||
| 34959 | The variables @code{calc-embedded-open-mode} and | ||
| 34960 | @code{calc-embedded-close-mode} are strings which Calc will place before | ||
| 34961 | and after any mode annotations that it inserts. Calc never scans for | ||
| 34962 | these strings; Calc always looks for the annotation itself, so it is not | ||
| 34963 | necessary to add them to user-written annotations. | ||
| 34964 | |||
| 34965 | The default value of @code{calc-embedded-open-mode} is @code{"% "} | ||
| 34966 | and the default value of @code{calc-embedded-close-mode} is | ||
| 34967 | @code{"\n"}. | ||
| 34968 | If you change the value of @code{calc-embedded-close-mode}, it is a good | ||
| 34969 | idea still to end with a newline so that mode annotations will appear on | ||
| 34970 | lines by themselves. | ||
| 34971 | |||
| 34972 | @end table | ||
| 34973 | |||
| 34974 | @node Reporting Bugs, Summary, Customizable Variables, Top | ||
| 34677 | @appendix Reporting Bugs | 34975 | @appendix Reporting Bugs |
| 34678 | 34976 | ||
| 34679 | @noindent | 34977 | @noindent |
diff --git a/man/calendar.texi b/man/calendar.texi index 747a6b822df..cf02377f1d9 100644 --- a/man/calendar.texi +++ b/man/calendar.texi | |||
| @@ -433,7 +433,7 @@ click on that date with @kbd{Mouse-2} and then choose @kbd{Holidays} | |||
| 433 | from the menu that appears. Either way, this displays the holidays for | 433 | from the menu that appears. Either way, this displays the holidays for |
| 434 | that date, in the echo area if they fit there, otherwise in a separate | 434 | that date, in the echo area if they fit there, otherwise in a separate |
| 435 | window. If the variable @code{view-calendar-holidays-initially} is | 435 | window. If the variable @code{view-calendar-holidays-initially} is |
| 436 | non-@code{nil}, holidays are displayed when the calendar is created. | 436 | non-@code{nil}, creating the calendar displays holidays in this way. |
| 437 | 437 | ||
| 438 | @kindex x @r{(Calendar mode)} | 438 | @kindex x @r{(Calendar mode)} |
| 439 | @findex mark-calendar-holidays | 439 | @findex mark-calendar-holidays |
| @@ -449,9 +449,8 @@ both to the currently visible months and to other months that | |||
| 449 | subsequently become visible by scrolling. To turn marking off and erase | 449 | subsequently become visible by scrolling. To turn marking off and erase |
| 450 | the current marks, type @kbd{u}, which also erases any diary marks | 450 | the current marks, type @kbd{u}, which also erases any diary marks |
| 451 | (@pxref{Diary}). If the variable @code{mark-holidays-in-calendar} is | 451 | (@pxref{Diary}). If the variable @code{mark-holidays-in-calendar} is |
| 452 | non-@code{nil}, holidays are marked in the calendar when it is created | 452 | non-@code{nil}, creating or updating the calendar marks holidays |
| 453 | (or recomputed). | 453 | automatically. |
| 454 | |||
| 455 | 454 | ||
| 456 | @kindex a @r{(Calendar mode)} | 455 | @kindex a @r{(Calendar mode)} |
| 457 | @findex list-calendar-holidays | 456 | @findex list-calendar-holidays |
| @@ -692,6 +691,12 @@ Their calendar consists of twelve months of which the first six have 31 | |||
| 692 | days, the next five have 30 days, and the last has 29 in ordinary years | 691 | days, the next five have 30 days, and the last has 29 in ordinary years |
| 693 | and 30 in leap years. Leap years occur in a complicated pattern every | 692 | and 30 in leap years. Leap years occur in a complicated pattern every |
| 694 | four or five years. | 693 | four or five years. |
| 694 | The calendar implemented here is the arithmetical Persian calendar | ||
| 695 | championed by Birashk, based on a 2,820-year cycle. It differs from | ||
| 696 | the astronomical Persian calendar, which is based on astronomical | ||
| 697 | events. As of this writing the first future discrepancy is projected | ||
| 698 | to occur on March 20, 2025. It is currently not clear what the | ||
| 699 | official calendar of Iran will be that far into the future. | ||
| 695 | 700 | ||
| 696 | @cindex Chinese calendar | 701 | @cindex Chinese calendar |
| 697 | The Chinese calendar is a complicated system of lunar months arranged | 702 | The Chinese calendar is a complicated system of lunar months arranged |
| @@ -937,7 +942,8 @@ date. | |||
| 937 | 942 | ||
| 938 | The name of the diary file is specified by the variable | 943 | The name of the diary file is specified by the variable |
| 939 | @code{diary-file}; @file{~/diary} is the default. A sample diary file | 944 | @code{diary-file}; @file{~/diary} is the default. A sample diary file |
| 940 | is: | 945 | is (note that the file format is essentially the same as that used by |
| 946 | the external shell utility @samp{calendar}): | ||
| 941 | 947 | ||
| 942 | @example | 948 | @example |
| 943 | 12/22/1988 Twentieth wedding anniversary!! | 949 | 12/22/1988 Twentieth wedding anniversary!! |
| @@ -1005,13 +1011,14 @@ of the new window shows the date of the diary entries and any holidays | |||
| 1005 | that fall on that date. If you specify a numeric argument with @kbd{d}, | 1011 | that fall on that date. If you specify a numeric argument with @kbd{d}, |
| 1006 | it shows all the diary entries for that many successive days. Thus, | 1012 | it shows all the diary entries for that many successive days. Thus, |
| 1007 | @kbd{2 d} displays all the entries for the selected date and for the | 1013 | @kbd{2 d} displays all the entries for the selected date and for the |
| 1008 | following day. If the variable @code{view-diary-entries-initially} is | 1014 | following day. |
| 1009 | non-@code{nil}, the diary entries for the current date are displayed | ||
| 1010 | when the calendar is created (provided the current date is visible). | ||
| 1011 | 1015 | ||
| 1012 | Another way to display the diary entries for a date is to click | 1016 | Another way to display the diary entries for a date is to click |
| 1013 | @kbd{Mouse-2} on the date, and then choose @kbd{Diary entries} from | 1017 | @kbd{Mouse-2} on the date, and then choose @kbd{Diary entries} from |
| 1014 | the menu that appears. | 1018 | the menu that appears. If the variable |
| 1019 | @code{view-diary-entries-initially} is non-@code{nil}, creating the | ||
| 1020 | calendar also lists diary entries for the current date (provided the | ||
| 1021 | current date is visible). | ||
| 1015 | 1022 | ||
| 1016 | @kindex m @r{(Calendar mode)} | 1023 | @kindex m @r{(Calendar mode)} |
| 1017 | @findex mark-diary-entries | 1024 | @findex mark-diary-entries |
| @@ -1023,10 +1030,10 @@ with multiple faces is not available). @inforef{Calendar Customizing, | |||
| 1023 | diary-entry-marker, emacs-xtra}. The command applies both to the | 1030 | diary-entry-marker, emacs-xtra}. The command applies both to the |
| 1024 | currently visible months and to other months that subsequently become | 1031 | currently visible months and to other months that subsequently become |
| 1025 | visible by scrolling. To turn marking off and erase the current marks, | 1032 | visible by scrolling. To turn marking off and erase the current marks, |
| 1026 | type @kbd{u}, which also turns off holiday marks (@pxref{Holidays}). If | 1033 | type @kbd{u}, which also turns off holiday marks (@pxref{Holidays}). |
| 1027 | the variable @code{mark-diary-entries-in-calendar} is non-@code{nil}, | 1034 | If the variable @code{mark-diary-entries-in-calendar} is |
| 1028 | diary dates are marked in the calendar when it is created (or | 1035 | non-@code{nil}, creating or updating the calendar marks diary dates |
| 1029 | recomputed). | 1036 | automatically. |
| 1030 | 1037 | ||
| 1031 | @kindex s @r{(Calendar mode)} | 1038 | @kindex s @r{(Calendar mode)} |
| 1032 | @findex show-all-diary-entries | 1039 | @findex show-all-diary-entries |
| @@ -1034,14 +1041,12 @@ recomputed). | |||
| 1034 | the @kbd{s} command. | 1041 | the @kbd{s} command. |
| 1035 | 1042 | ||
| 1036 | Display of selected diary entries uses the selective display feature | 1043 | Display of selected diary entries uses the selective display feature |
| 1037 | to hide entries that don't apply. | 1044 | to hide entries that don't apply. The diary buffer as you see it is |
| 1038 | 1045 | an illusion, so simply printing the buffer does not print what you see | |
| 1039 | The diary buffer as you see it is an illusion, so simply printing the | 1046 | on your screen. There is a special command to print hard copy of the |
| 1040 | buffer does not print what you see on your screen. There is a special | 1047 | diary buffer @emph{as it appears}; this command is @kbd{M-x |
| 1041 | command to print hard copy of the diary buffer @emph{as it appears}; | 1048 | print-diary-entries}. It sends the data directly to the printer. You |
| 1042 | this command is @kbd{M-x print-diary-entries}. It sends the data | 1049 | can customize it like @code{lpr-region} (@pxref{Hardcopy}). |
| 1043 | directly to the printer. You can customize it like @code{lpr-region} | ||
| 1044 | (@pxref{Hardcopy}). | ||
| 1045 | 1050 | ||
| 1046 | @findex diary | 1051 | @findex diary |
| 1047 | The command @kbd{M-x diary} displays the diary entries for the current | 1052 | The command @kbd{M-x diary} displays the diary entries for the current |
diff --git a/man/cmdargs.texi b/man/cmdargs.texi index 38ac3301781..d49ffba6103 100644 --- a/man/cmdargs.texi +++ b/man/cmdargs.texi | |||
| @@ -1196,8 +1196,9 @@ appear until you deiconify it. | |||
| 1196 | @opindex -hb | 1196 | @opindex -hb |
| 1197 | @itemx --horizontal-scroll-bars | 1197 | @itemx --horizontal-scroll-bars |
| 1198 | @opindex --horizontal-scroll-bars | 1198 | @opindex --horizontal-scroll-bars |
| 1199 | @cindex horizontal scroll bars, command-line argument | 1199 | @c @cindex horizontal scroll bars, command-line argument |
| 1200 | Enable horizontal scroll bars. | 1200 | Enable horizontal scroll bars. Since horizontal scroll bars |
| 1201 | are not yet implemented, this actually does nothing. | ||
| 1201 | 1202 | ||
| 1202 | @item -vb | 1203 | @item -vb |
| 1203 | @opindex -vb | 1204 | @opindex -vb |
diff --git a/man/commands.texi b/man/commands.texi index fe70983286f..e0208473419 100644 --- a/man/commands.texi +++ b/man/commands.texi | |||
| @@ -169,8 +169,8 @@ key sequences, not one.@refill | |||
| 169 | 169 | ||
| 170 | All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h}, | 170 | All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h}, |
| 171 | @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x | 171 | @kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x |
| 172 | n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x | 172 | n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, |
| 173 | 6}, @key{ESC}, and @kbd{M-g}. (@key{F1} and @key{F2} are aliases for | 173 | @key{ESC}, @kbd{M-o} and @kbd{M-g}. (@key{F1} and @key{F2} are aliases for |
| 174 | @kbd{C-h} and @kbd{C-x 6}.) But this list is not cast in concrete; it | 174 | @kbd{C-h} and @kbd{C-x 6}.) But this list is not cast in concrete; it |
| 175 | is just a matter of Emacs's standard key bindings. If you customize | 175 | is just a matter of Emacs's standard key bindings. If you customize |
| 176 | Emacs, you can make new prefix keys, or eliminate these. @xref{Key | 176 | Emacs, you can make new prefix keys, or eliminate these. @xref{Key |
diff --git a/man/custom.texi b/man/custom.texi index 6c5c26b3451..30bac3bccf2 100644 --- a/man/custom.texi +++ b/man/custom.texi | |||
| @@ -1636,6 +1636,27 @@ word: | |||
| 1636 | (global-set-key [H-M-right] 'forward-word) | 1636 | (global-set-key [H-M-right] 'forward-word) |
| 1637 | @end example | 1637 | @end example |
| 1638 | 1638 | ||
| 1639 | @cindex keypad | ||
| 1640 | Many keyboards have a ``numeric keypad'' on the right hand side. | ||
| 1641 | The numeric keys in the keypad double up as cursor motion keys, | ||
| 1642 | toggled by a key labelled @samp{Num Lock}. By default, Emacs | ||
| 1643 | translates these keys to the corresponding keys in the main keyboard | ||
| 1644 | (@pxref{Keyboard Translations}). For example, when @samp{Num Lock} is | ||
| 1645 | on, the key labelled @samp{8} on the numeric keypad produces | ||
| 1646 | @code{kp-8}, which is translated to @kbd{8}; when @samp{Num Lock} is | ||
| 1647 | off, the same key produces @code{kp-up}, which is translated to | ||
| 1648 | @key{UP}. If you rebind a key such as @kbd{8} or @key{UP}, it affects | ||
| 1649 | the equivalent keypad key too. However, if you rebind a @samp{kp-} | ||
| 1650 | key directly, that won't affect its non-keypad equivalent. | ||
| 1651 | |||
| 1652 | Emacs provides a convenient method for binding the numeric keypad | ||
| 1653 | keys, using the variables @code{keypad-setup}, | ||
| 1654 | @code{keypad-numlock-setup}, @code{keypad-shifted-setup}, and | ||
| 1655 | @code{keypad-numlock-shifted-setup}. These can be found in the | ||
| 1656 | @samp{keyboard} customization group (@pxref{Easy Customization}). You | ||
| 1657 | can rebind the keys to perform other tasks, such as issuing numeric | ||
| 1658 | prefix arguments. | ||
| 1659 | |||
| 1639 | @node Named ASCII Chars | 1660 | @node Named ASCII Chars |
| 1640 | @subsection Named @acronym{ASCII} Control Characters | 1661 | @subsection Named @acronym{ASCII} Control Characters |
| 1641 | 1662 | ||
diff --git a/man/dired.texi b/man/dired.texi index 6973a4e4000..b50ac82ab0b 100644 --- a/man/dired.texi +++ b/man/dired.texi | |||
| @@ -39,6 +39,7 @@ files. | |||
| 39 | * Hiding Subdirectories:: Making subdirectories visible or invisible. | 39 | * Hiding Subdirectories:: Making subdirectories visible or invisible. |
| 40 | * Updating: Dired Updating. Discarding lines for files of no interest. | 40 | * Updating: Dired Updating. Discarding lines for files of no interest. |
| 41 | * Find: Dired and Find. Using `find' to choose the files for Dired. | 41 | * Find: Dired and Find. Using `find' to choose the files for Dired. |
| 42 | * Wdired:: Operating on files by editing the Dired buffer. | ||
| 42 | * Misc: Misc Dired Features. Various other features. | 43 | * Misc: Misc Dired Features. Various other features. |
| 43 | @end menu | 44 | @end menu |
| 44 | 45 | ||
| @@ -1103,6 +1104,39 @@ operations work, but do not always automatically update the buffer. | |||
| 1103 | Reverting the buffer with @kbd{g} deletes all inserted subdirectories, | 1104 | Reverting the buffer with @kbd{g} deletes all inserted subdirectories, |
| 1104 | and erases all flags and marks. | 1105 | and erases all flags and marks. |
| 1105 | 1106 | ||
| 1107 | @node Wdired | ||
| 1108 | @section Editing the Dired Buffer | ||
| 1109 | |||
| 1110 | @cindex wdired mode | ||
| 1111 | @findex wdired-change-to-wdired-mode | ||
| 1112 | Wdired is a special mode that allows you to perform file operations | ||
| 1113 | by editing the Dired buffer directly (the ``W'' in ``Wdired'' stands | ||
| 1114 | for ``writable''.) To enter Wdired mode, type @kbd{M-x | ||
| 1115 | wdired-change-to-wdired-mode} while in a Dired buffer. Alternatively, | ||
| 1116 | use @samp{Edit File Names} in the @samp{Immediate} menu bar menu. | ||
| 1117 | |||
| 1118 | @findex wdired-finish-edit | ||
| 1119 | While in Wdired mode, you can rename files by editing the file names | ||
| 1120 | displayed in the Dired buffer. All the ordinary Emacs editing | ||
| 1121 | commands, including rectangle operations and @code{query-replace}, are | ||
| 1122 | available for this. Once you are done editing, type @kbd{C-c C-c} | ||
| 1123 | (@code{wdired-finish-edit}). This applies your changes and switches | ||
| 1124 | back to ordinary Dired mode. | ||
| 1125 | |||
| 1126 | Apart from simply renaming files, you can move a file to another | ||
| 1127 | directory by typing in the new file name (either absolute or | ||
| 1128 | relative). To mark a file for deletion, delete the entire filename. | ||
| 1129 | To change the target of a symbolic link, just edit the target name | ||
| 1130 | displayed next to the link name. | ||
| 1131 | |||
| 1132 | The rest of the text in the buffer, such as the file sizes and | ||
| 1133 | modification dates, is marked read-only, so you can't edit it. | ||
| 1134 | However, if you set @code{wdired-allow-to-change-permissions} to | ||
| 1135 | @code{t}, the file permission bits can also be edited. For example, | ||
| 1136 | you can change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file | ||
| 1137 | world-writable. These changes also take effect when you type @kbd{C-c | ||
| 1138 | C-c}. | ||
| 1139 | |||
| 1106 | @node Misc Dired Features | 1140 | @node Misc Dired Features |
| 1107 | @section Other Dired Features | 1141 | @section Other Dired Features |
| 1108 | 1142 | ||
diff --git a/man/emacs-mime.texi b/man/emacs-mime.texi index c128ed096c3..11a07df5361 100644 --- a/man/emacs-mime.texi +++ b/man/emacs-mime.texi | |||
| @@ -387,15 +387,15 @@ The program used to start an external terminal. | |||
| 387 | 387 | ||
| 388 | @item mm-enable-external | 388 | @item mm-enable-external |
| 389 | @vindex mm-enable-external | 389 | @vindex mm-enable-external |
| 390 | Indicate whether external MIME handlers should be used. | 390 | Indicate whether external @acronym{MIME} handlers should be used. |
| 391 | 391 | ||
| 392 | If @code{t}, all defined external MIME handlers are used. If | 392 | If @code{t}, all defined external @acronym{MIME} handlers are used. If |
| 393 | @code{nil}, files are saved to disk (@code{mailcap-save-binary-file}). | 393 | @code{nil}, files are saved to disk (@code{mailcap-save-binary-file}). |
| 394 | If it is the symbol @code{ask}, you are prompted before the external | 394 | If it is the symbol @code{ask}, you are prompted before the external |
| 395 | @acronym{MIME} handler is invoked. | 395 | @acronym{MIME} handler is invoked. |
| 396 | 396 | ||
| 397 | When you launch an attachment through mailcap (@pxref{mailcap}) an | 397 | When you launch an attachment through mailcap (@pxref{mailcap}) an |
| 398 | attempt is made to use a safe viewer with the safest options--this isn't | 398 | attempt is made to use a safe viewer with the safest options---this isn't |
| 399 | the case if you save it to disk and launch it in a different way | 399 | the case if you save it to disk and launch it in a different way |
| 400 | (command line or double-clicking). Anyhow, if you want to be sure not | 400 | (command line or double-clicking). Anyhow, if you want to be sure not |
| 401 | to launch any external programs, set this variable to @code{nil} or | 401 | to launch any external programs, set this variable to @code{nil} or |
| @@ -1327,8 +1327,8 @@ RFC2047 specifies two forms of encoding---@code{Q} (a | |||
| 1327 | Quoted-Printable-like encoding) and @code{B} (base64). This alist | 1327 | Quoted-Printable-like encoding) and @code{B} (base64). This alist |
| 1328 | specifies which charset should use which encoding. | 1328 | specifies which charset should use which encoding. |
| 1329 | 1329 | ||
| 1330 | @item rfc2047-encoding-function-alist | 1330 | @item rfc2047-encode-function-alist |
| 1331 | @vindex rfc2047-encoding-function-alist | 1331 | @vindex rfc2047-encode-function-alist |
| 1332 | This is an alist of encoding / function pairs. The encodings are | 1332 | This is an alist of encoding / function pairs. The encodings are |
| 1333 | @code{Q}, @code{B} and @code{nil}. | 1333 | @code{Q}, @code{B} and @code{nil}. |
| 1334 | 1334 | ||
| @@ -1336,6 +1336,11 @@ This is an alist of encoding / function pairs. The encodings are | |||
| 1336 | @vindex rfc2047-encoded-word-regexp | 1336 | @vindex rfc2047-encoded-word-regexp |
| 1337 | When decoding words, this library looks for matches to this regexp. | 1337 | When decoding words, this library looks for matches to this regexp. |
| 1338 | 1338 | ||
| 1339 | @item rfc2047-encode-encoded-words | ||
| 1340 | @vindex rfc2047-encode-encoded-words | ||
| 1341 | The boolean variable specifies whether encoded words | ||
| 1342 | (e.g. @samp{=?hello?=}) should be encoded again. | ||
| 1343 | |||
| 1339 | @end table | 1344 | @end table |
| 1340 | 1345 | ||
| 1341 | Those were the variables, and these are this functions: | 1346 | Those were the variables, and these are this functions: |
| @@ -1366,6 +1371,24 @@ Decode the encoded words in the region. | |||
| 1366 | @findex rfc2047-decode-string | 1371 | @findex rfc2047-decode-string |
| 1367 | Decode a string and return the results. | 1372 | Decode a string and return the results. |
| 1368 | 1373 | ||
| 1374 | @item rfc2047-encode-parameter | ||
| 1375 | @findex rfc2047-encode-parameter | ||
| 1376 | Encode a parameter in the RFC2047-like style. This is a replacement for | ||
| 1377 | the @code{rfc2231-encode-string} function. @xref{rfc2231}. | ||
| 1378 | |||
| 1379 | When attaching files as @acronym{MIME} parts, we should use the RFC2231 | ||
| 1380 | encoding to specify the file names containing non-@acronym{ASCII} | ||
| 1381 | characters. However, many mail softwares don't support it in practice | ||
| 1382 | and recipients won't be able to extract files with correct names. | ||
| 1383 | Instead, the RFC2047-like encoding is acceptable generally. This | ||
| 1384 | function provides the very RFC2047-like encoding, resigning to such a | ||
| 1385 | regrettable trend. To use it, put the following line in your | ||
| 1386 | @file{~/.gnus.el} file: | ||
| 1387 | |||
| 1388 | @lisp | ||
| 1389 | (defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter) | ||
| 1390 | @end lisp | ||
| 1391 | |||
| 1369 | @end table | 1392 | @end table |
| 1370 | 1393 | ||
| 1371 | 1394 | ||
diff --git a/man/emacs.texi b/man/emacs.texi index 86b42baefc6..0ad3a5148c9 100644 --- a/man/emacs.texi +++ b/man/emacs.texi | |||
| @@ -224,11 +224,13 @@ Recovery from Problems | |||
| 224 | * Contributing:: How to contribute improvements to Emacs. | 224 | * Contributing:: How to contribute improvements to Emacs. |
| 225 | * Service:: How to get help for your own Emacs needs. | 225 | * Service:: How to get help for your own Emacs needs. |
| 226 | 226 | ||
| 227 | |||
| 228 | Detailed Node Listing | ||
| 229 | --------------------- | ||
| 230 | |||
| 227 | Here are some other nodes which are really inferiors of the ones | 231 | Here are some other nodes which are really inferiors of the ones |
| 228 | already listed, mentioned here so you can get to them in one step: | 232 | already listed, mentioned here so you can get to them in one step: |
| 229 | 233 | ||
| 230 | --- The Detailed Node Listing --- | ||
| 231 | |||
| 232 | The Organization of the Screen | 234 | The Organization of the Screen |
| 233 | 235 | ||
| 234 | * Point:: The place in the text where editing commands operate. | 236 | * Point:: The place in the text where editing commands operate. |
| @@ -563,6 +565,8 @@ Compiling and Testing Programs | |||
| 563 | * Compilation Mode:: The mode for visiting compiler errors. | 565 | * Compilation Mode:: The mode for visiting compiler errors. |
| 564 | * Compilation Shell:: Customizing your shell properly | 566 | * Compilation Shell:: Customizing your shell properly |
| 565 | for use in the compilation buffer. | 567 | for use in the compilation buffer. |
| 568 | * Grep Searching:: Searching with grep. | ||
| 569 | * Flymake:: Finding syntax errors on the fly. | ||
| 566 | * Debuggers:: Running symbolic debuggers for non-Lisp programs. | 570 | * Debuggers:: Running symbolic debuggers for non-Lisp programs. |
| 567 | * Executing Lisp:: Various modes for editing Lisp programs, | 571 | * Executing Lisp:: Various modes for editing Lisp programs, |
| 568 | with different facilities for running | 572 | with different facilities for running |
| @@ -676,6 +680,9 @@ Dired, the Directory Editor | |||
| 676 | * Hiding Subdirectories:: Making subdirectories visible or invisible. | 680 | * Hiding Subdirectories:: Making subdirectories visible or invisible. |
| 677 | * Dired Updating:: Discarding lines for files of no interest. | 681 | * Dired Updating:: Discarding lines for files of no interest. |
| 678 | * Dired and Find:: Using `find' to choose the files for Dired. | 682 | * Dired and Find:: Using `find' to choose the files for Dired. |
| 683 | * Dired and Find:: Using `find' to choose the files for Dired. | ||
| 684 | * Wdired:: Operating on files by editing the Dired buffer. | ||
| 685 | * Misc Dired Features:: Various other features. | ||
| 679 | 686 | ||
| 680 | The Calendar and the Diary | 687 | The Calendar and the Diary |
| 681 | 688 | ||
diff --git a/man/files.texi b/man/files.texi index 1e40651a4ce..a03bb2a64ea 100644 --- a/man/files.texi +++ b/man/files.texi | |||
| @@ -238,7 +238,7 @@ or tool bar) use the toolkit's standard File Selection dialog instead | |||
| 238 | of prompting for the file name in the minibuffer. On Unix and | 238 | of prompting for the file name in the minibuffer. On Unix and |
| 239 | GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and | 239 | GNU/Linux platforms, Emacs does that when built with GTK, LessTif, and |
| 240 | Motif toolkits; on MS-Windows, the GUI version does that by default. | 240 | Motif toolkits; on MS-Windows, the GUI version does that by default. |
| 241 | For information on how to customize this, see @xref{Dialog Boxes}. | 241 | For information on how to customize this, see @ref{Dialog Boxes}. |
| 242 | 242 | ||
| 243 | Secondly, Emacs supports the ``drag and drop'' protocol on the X | 243 | Secondly, Emacs supports the ``drag and drop'' protocol on the X |
| 244 | window system. Dropping a file into an ordinary Emacs window visits | 244 | window system. Dropping a file into an ordinary Emacs window visits |
| @@ -940,14 +940,8 @@ Auto-Revert Tail mode, @kbd{M-x auto-revert-tail-mode}. | |||
| 940 | for a changed file. Since checking a remote file is too slow, these | 940 | for a changed file. Since checking a remote file is too slow, these |
| 941 | modes do not check or revert remote files. | 941 | modes do not check or revert remote files. |
| 942 | 942 | ||
| 943 | @vindex auto-revert-check-vc-info | 943 | @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that |
| 944 | Whenever Auto Revert mode reverts the buffer, it updates the version | 944 | visit files under version control. |
| 945 | control information, such as the version control number displayed in | ||
| 946 | the mode line. However, this information may not be properly updated | ||
| 947 | if the version control state changes outside of Emacs---for example, | ||
| 948 | if a new version is checked in from outside the current Emacs session. | ||
| 949 | If you set @code{auto-revert-check-vc-info} to @code{t}, Auto Revert | ||
| 950 | mode will update the version control status information periodically. | ||
| 951 | 945 | ||
| 952 | @node Auto Save | 946 | @node Auto Save |
| 953 | @section Auto-Saving: Protection Against Disasters | 947 | @section Auto-Saving: Protection Against Disasters |
| @@ -1272,6 +1266,10 @@ as multiple branches, are not available with SCCS. You should use | |||
| 1272 | SCCS only if for some reason you cannot use RCS, or one of the | 1266 | SCCS only if for some reason you cannot use RCS, or one of the |
| 1273 | higher-level systems such as CVS or GNU Arch. | 1267 | higher-level systems such as CVS or GNU Arch. |
| 1274 | 1268 | ||
| 1269 | In the following, we discuss mainly RCS, SCCS and CVS. Nearly | ||
| 1270 | everything said about CVS applies to Gnu Arch, Subversion and Meta-CVS | ||
| 1271 | as well. | ||
| 1272 | |||
| 1275 | @node VC Concepts | 1273 | @node VC Concepts |
| 1276 | @subsubsection Concepts of Version Control | 1274 | @subsubsection Concepts of Version Control |
| 1277 | 1275 | ||
| @@ -1371,6 +1369,18 @@ locking is not in use). @samp{:} indicates that the file is locked, or | |||
| 1371 | that it is modified. If the file is locked by some other user (for | 1369 | that it is modified. If the file is locked by some other user (for |
| 1372 | instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}. | 1370 | instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}. |
| 1373 | 1371 | ||
| 1372 | @vindex auto-revert-check-vc-info | ||
| 1373 | When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is | ||
| 1374 | under version control, it updates the version control information in | ||
| 1375 | the mode line. However, Auto Revert mode may not properly update this | ||
| 1376 | information if the version control status changes without changes to | ||
| 1377 | the work file, from outside the current Emacs session. If you set | ||
| 1378 | @code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates | ||
| 1379 | the version control status information every | ||
| 1380 | @code{auto-revert-interval} seconds, even if the work file itself is | ||
| 1381 | unchanged. The resulting CPU usage depends on the version control | ||
| 1382 | system, but is usually not excessive. | ||
| 1383 | |||
| 1374 | @node Basic VC Editing | 1384 | @node Basic VC Editing |
| 1375 | @subsection Basic Editing under Version Control | 1385 | @subsection Basic Editing under Version Control |
| 1376 | 1386 | ||
| @@ -1472,9 +1482,9 @@ informs you if another user has checked in changes in the same file | |||
| 1472 | since you began editing it, and when this happens, his changes will be | 1482 | since you began editing it, and when this happens, his changes will be |
| 1473 | effectively removed when you check in your version (though they will | 1483 | effectively removed when you check in your version (though they will |
| 1474 | remain in the master file, so they will not be entirely lost). You must | 1484 | remain in the master file, so they will not be entirely lost). You must |
| 1475 | therefore verify the current version is unchanged, before you check in your | 1485 | therefore verify that the current version is unchanged, before you |
| 1476 | changes. We hope to eliminate this risk and provide automatic merging | 1486 | check in your changes. We hope to eliminate this risk and provide |
| 1477 | with RCS in a future Emacs version. | 1487 | automatic merging with RCS in a future Emacs version. |
| 1478 | 1488 | ||
| 1479 | In addition, locking is possible with RCS even in this mode, although | 1489 | In addition, locking is possible with RCS even in this mode, although |
| 1480 | it is not required; @kbd{C-x v v} with an unmodified file locks the | 1490 | it is not required; @kbd{C-x v v} with an unmodified file locks the |
| @@ -1698,13 +1708,10 @@ there is more than one system in use for a directory, Emacs uses the one | |||
| 1698 | that appears first in @code{vc-handled-backends} (@pxref{Customizing VC}). | 1708 | that appears first in @code{vc-handled-backends} (@pxref{Customizing VC}). |
| 1699 | On the other hand, if there are no files already registered, | 1709 | On the other hand, if there are no files already registered, |
| 1700 | Emacs uses the first system from @code{vc-handled-backends} that could | 1710 | Emacs uses the first system from @code{vc-handled-backends} that could |
| 1701 | register the file---for example, you cannot register a file under CVS if | 1711 | register the file (for example, you cannot register a file under CVS if |
| 1702 | its directory is not already part of a CVS tree. | 1712 | its directory is not already part of a CVS tree); with the default |
| 1703 | 1713 | value of @code{vc-handled-backends}, this means that Emacs uses RCS in | |
| 1704 | With the default value of @code{vc-handled-backends}, this means | 1714 | this situation. |
| 1705 | that Emacs uses RCS if there are any files under RCS control, CVS if | ||
| 1706 | there are any files under CVS, SCCS if any files are under SCCS, or | ||
| 1707 | RCS as the ultimate default. | ||
| 1708 | 1715 | ||
| 1709 | If locking is in use, @kbd{C-x v i} leaves the file unlocked and | 1716 | If locking is in use, @kbd{C-x v i} leaves the file unlocked and |
| 1710 | read-only. Type @kbd{C-x v v} if you wish to start editing it. After | 1717 | read-only. Type @kbd{C-x v v} if you wish to start editing it. After |
| @@ -1892,7 +1899,8 @@ marked files, so that you can lock or check in several files at once. | |||
| 1892 | If it operates on more than one file, it handles each file according to | 1899 | If it operates on more than one file, it handles each file according to |
| 1893 | its current state; thus, it might lock one file, but check in another | 1900 | its current state; thus, it might lock one file, but check in another |
| 1894 | file. This could be confusing; it is up to you to avoid confusing | 1901 | file. This could be confusing; it is up to you to avoid confusing |
| 1895 | behavior by marking a set of files that are in a similar state. | 1902 | behavior by marking a set of files that are in a similar state. If no |
| 1903 | files are marked, @kbd{v v} operates on the file in the current line. | ||
| 1896 | 1904 | ||
| 1897 | If any files call for check-in, @kbd{v v} reads a single log entry, | 1905 | If any files call for check-in, @kbd{v v} reads a single log entry, |
| 1898 | then uses it for all the files being checked in. This is convenient for | 1906 | then uses it for all the files being checked in. This is convenient for |
| @@ -1920,8 +1928,7 @@ program in which you are gradually adding various unfinished new | |||
| 1920 | features. Each such independent line of development is called a | 1928 | features. Each such independent line of development is called a |
| 1921 | @dfn{branch}. VC allows you to create branches, switch between | 1929 | @dfn{branch}. VC allows you to create branches, switch between |
| 1922 | different branches, and merge changes from one branch to another. | 1930 | different branches, and merge changes from one branch to another. |
| 1923 | Please note, however, that branches are only supported for RCS at the | 1931 | Please note, however, that branches are not supported for SCCS. |
| 1924 | moment. | ||
| 1925 | 1932 | ||
| 1926 | A file's main line of development is usually called the @dfn{trunk}. | 1933 | A file's main line of development is usually called the @dfn{trunk}. |
| 1927 | The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc. At | 1934 | The versions on the trunk are normally numbered 1.1, 1.2, 1.3, etc. At |
| @@ -2264,7 +2271,8 @@ But if you do this, the revision numbers in the RCS master no longer | |||
| 2264 | correspond to those of CVS. Technically, this is not a problem, but | 2271 | correspond to those of CVS. Technically, this is not a problem, but |
| 2265 | it can become difficult to keep track of what is in the CVS repository | 2272 | it can become difficult to keep track of what is in the CVS repository |
| 2266 | and what is not. So we suggest that you return from time to time to | 2273 | and what is not. So we suggest that you return from time to time to |
| 2267 | CVS-only operation, using @kbd{C-u C-x v v cvs @key{RET}}. | 2274 | CVS-only operation, by committing your local changes back to the |
| 2275 | repository using @kbd{C-u C-x v v cvs @key{RET}}. | ||
| 2268 | 2276 | ||
| 2269 | @node Snapshots | 2277 | @node Snapshots |
| 2270 | @subsection Snapshots | 2278 | @subsection Snapshots |
| @@ -2552,13 +2560,11 @@ insert a suitable header string. | |||
| 2552 | Insert headers in a file for use with your version-control system. | 2560 | Insert headers in a file for use with your version-control system. |
| 2553 | @end table | 2561 | @end table |
| 2554 | 2562 | ||
| 2555 | @vindex vc-header-alist | 2563 | @vindex vc-@var{backend}-header |
| 2556 | The default header string is @samp{@w{$}Id$} for RCS and | 2564 | The default header string is @samp{@w{$}Id$} for RCS and |
| 2557 | @samp{@w{%}W%} for SCCS. You can specify other headers to insert by | 2565 | @samp{@w{%}W%} for SCCS. You can specify other headers to insert by |
| 2558 | setting the variable @code{vc-header-alist}. Its value is a list of | 2566 | setting the variables @code{vc-@var{backend}-header} where |
| 2559 | elements of the form @code{(@var{program} . @var{string})} where | 2567 | @var{backend} is @code{rcs} or @code{sccs}. |
| 2560 | @var{program} is @code{RCS} or @code{SCCS} and @var{string} is the | ||
| 2561 | string to use. | ||
| 2562 | 2568 | ||
| 2563 | Instead of a single string, you can specify a list of strings; then | 2569 | Instead of a single string, you can specify a list of strings; then |
| 2564 | each string in the list is inserted as a separate header on a line of | 2570 | each string in the list is inserted as a separate header on a line of |
| @@ -2586,8 +2592,8 @@ elements of the form @code{(@var{regexp} . @var{format})}. Whenever | |||
| 2586 | @var{regexp} matches the buffer name, @var{format} is inserted as part | 2592 | @var{regexp} matches the buffer name, @var{format} is inserted as part |
| 2587 | of the header. A header line is inserted for each element that matches | 2593 | of the header. A header line is inserted for each element that matches |
| 2588 | the buffer name, and for each string specified by | 2594 | the buffer name, and for each string specified by |
| 2589 | @code{vc-header-alist}. The header line is made by processing the | 2595 | @code{vc-@var{backend}-header}. The header line is made by processing the |
| 2590 | string from @code{vc-header-alist} with the format taken from the | 2596 | string from @code{vc-@var{backend}-header} with the format taken from the |
| 2591 | element. The default value for @code{vc-static-header-alist} is as follows: | 2597 | element. The default value for @code{vc-static-header-alist} is as follows: |
| 2592 | 2598 | ||
| 2593 | @example | 2599 | @example |
| @@ -2624,10 +2630,10 @@ headers. | |||
| 2624 | @vindex vc-handled-backends | 2630 | @vindex vc-handled-backends |
| 2625 | The variable @code{vc-handled-backends} determines which version | 2631 | The variable @code{vc-handled-backends} determines which version |
| 2626 | control systems VC should handle. The default value is @code{(RCS CVS | 2632 | control systems VC should handle. The default value is @code{(RCS CVS |
| 2627 | SCCS)}, so it contains all three version systems that are currently | 2633 | SVN SCCS Arch MCVS)}, so it contains all six version systems that are |
| 2628 | supported. If you want VC to ignore one or more of these systems, | 2634 | currently supported. If you want VC to ignore one or more of these |
| 2629 | exclude its name from the list. To disable VC entirely, set this | 2635 | systems, exclude its name from the list. To disable VC entirely, set |
| 2630 | variable to @code{nil}. | 2636 | this variable to @code{nil}. |
| 2631 | 2637 | ||
| 2632 | The order of systems in the list is significant: when you visit a file | 2638 | The order of systems in the list is significant: when you visit a file |
| 2633 | registered in more than one system (@pxref{Local Version Control}), | 2639 | registered in more than one system (@pxref{Local Version Control}), |
| @@ -2780,8 +2786,9 @@ pick up any recent changes from the repository first, using @kbd{C-x v m | |||
| 2780 | @key{RET}}, @pxref{Merging}). | 2786 | @key{RET}}, @pxref{Merging}). |
| 2781 | 2787 | ||
| 2782 | @vindex vc-cvs-global-switches | 2788 | @vindex vc-cvs-global-switches |
| 2783 | The variable @code{vc-cvs-global-switches} should be a string | 2789 | The variable @code{vc-cvs-global-switches}, if non-@code{nil}, |
| 2784 | specifying switches to pass to CVS for all CVS operations. | 2790 | should be a string specifying switches to pass to CVS for all CVS |
| 2791 | operations. | ||
| 2785 | 2792 | ||
| 2786 | When @code{vc-cvs-stay-local} is @code{t}, VC also makes local | 2793 | When @code{vc-cvs-stay-local} is @code{t}, VC also makes local |
| 2787 | version backups, so that simple diff and revert operations are | 2794 | version backups, so that simple diff and revert operations are |
| @@ -2900,7 +2907,7 @@ the command is finished. For more information about windows in Emacs, | |||
| 2900 | With a numeric argument, @code{compare-windows} ignores changes in | 2907 | With a numeric argument, @code{compare-windows} ignores changes in |
| 2901 | whitespace. If the variable @code{compare-ignore-case} is | 2908 | whitespace. If the variable @code{compare-ignore-case} is |
| 2902 | non-@code{nil}, the comparison ignores differences in case as well. | 2909 | non-@code{nil}, the comparison ignores differences in case as well. |
| 2903 | If the variable @code{compare-ignore-whitespace} is non-nil, | 2910 | If the variable @code{compare-ignore-whitespace} is non-@code{nil}, |
| 2904 | @code{compare-windows} normally ignores changes in whitespace, and a | 2911 | @code{compare-windows} normally ignores changes in whitespace, and a |
| 2905 | prefix argument turns that off. | 2912 | prefix argument turns that off. |
| 2906 | 2913 | ||
| @@ -3298,6 +3305,10 @@ Clear the cache; that is, remove all file names from it. | |||
| 3298 | @node File Conveniences | 3305 | @node File Conveniences |
| 3299 | @section Convenience Features for Finding Files | 3306 | @section Convenience Features for Finding Files |
| 3300 | 3307 | ||
| 3308 | In this section, we introduce some convenient facilities for finding | ||
| 3309 | recently-opened files, reading file names from a buffer, and viewing | ||
| 3310 | image files. | ||
| 3311 | |||
| 3301 | @findex recentf-mode | 3312 | @findex recentf-mode |
| 3302 | @vindex recentf-mode | 3313 | @vindex recentf-mode |
| 3303 | @findex recentf-save-list | 3314 | @findex recentf-save-list |
| @@ -3308,25 +3319,22 @@ opened files. @kbd{M-x recentf-save-list} saves the current | |||
| 3308 | @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list} | 3319 | @code{recent-file-list} to a file, and @kbd{M-x recentf-edit-list} |
| 3309 | edits it. | 3320 | edits it. |
| 3310 | 3321 | ||
| 3311 | @findex auto-image-file-mode | ||
| 3312 | @findex mode, auto-image-file | ||
| 3313 | @cindex images, visiting | ||
| 3314 | @cindex visiting image files | ||
| 3315 | @vindex image-file-name-regexps | ||
| 3316 | @vindex image-file-name-extensions | ||
| 3317 | When Auto-image-file minor mode is enabled, visiting an image file | ||
| 3318 | displays it as an image, not as text. Likewise, inserting an image | ||
| 3319 | file into a buffer inserts it as an image. This works only when Emacs | ||
| 3320 | can display the relevant image type. The variables | ||
| 3321 | @code{image-file-name-extensions} or @code{image-file-name-regexps} | ||
| 3322 | control which file names are recognized as containing images. | ||
| 3323 | |||
| 3324 | The @kbd{M-x ffap} command generalizes @code{find-file} with more | 3322 | The @kbd{M-x ffap} command generalizes @code{find-file} with more |
| 3325 | powerful heuristic defaults (@pxref{FFAP}), often based on the text at | 3323 | powerful heuristic defaults (@pxref{FFAP}), often based on the text at |
| 3326 | point. Partial Completion mode offers other features extending | 3324 | point. Partial Completion mode offers other features extending |
| 3327 | @code{find-file}, which can be used with @code{ffap}. | 3325 | @code{find-file}, which can be used with @code{ffap}. |
| 3328 | @xref{Completion Options}. | 3326 | @xref{Completion Options}. |
| 3329 | 3327 | ||
| 3328 | @findex thumbs-mode | ||
| 3329 | @findex mode, thumbs | ||
| 3330 | Thumbs mode is a major mode for viewing directories containing many | ||
| 3331 | image files. To use it, type @kbd{M-x thumbs} and specify the | ||
| 3332 | directory to view. The images in that directory will be displayed in | ||
| 3333 | a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a | ||
| 3334 | thumbnail to view the full-size image. Thumbs mode requires the | ||
| 3335 | @file{convert} program, which is part of the ImageMagick software | ||
| 3336 | package. | ||
| 3337 | |||
| 3330 | @ignore | 3338 | @ignore |
| 3331 | arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250 | 3339 | arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250 |
| 3332 | @end ignore | 3340 | @end ignore |
diff --git a/man/gnus-faq.texi b/man/gnus-faq.texi index 42266aa4646..742227b64fc 100644 --- a/man/gnus-faq.texi +++ b/man/gnus-faq.texi | |||
| @@ -1,210 +1,203 @@ | |||
| 1 | @c Insert "\input texinfo" at 1st line before texing this file alone. | 1 | @c \input texinfo @c -*-texinfo-*- |
| 2 | @c -*-texinfo-*- | 2 | @c Uncomment 1st line before texing this file alone. |
| 3 | @c Copyright (C) 1995, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. | 3 | @c %**start of header |
| 4 | @c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. | ||
| 5 | @c | ||
| 6 | @c Do not modify this file, it was generated from gnus-faq.xml, available from | ||
| 7 | @c <URL:http://my.gnus.org/FAQ/>. | ||
| 8 | @c | ||
| 4 | @setfilename gnus-faq.info | 9 | @setfilename gnus-faq.info |
| 5 | 10 | @settitle Frequently Asked Questions | |
| 6 | @c Frequently Asked Questions, FAQ - Introduction, Emacs for Heathens, Top | 11 | @c %**end of header |
| 12 | @c | ||
| 7 | 13 | ||
| 8 | @node Frequently Asked Questions | 14 | @node Frequently Asked Questions |
| 9 | @comment node-name, next, previous, up | ||
| 10 | |||
| 11 | @c @chapter Frequently Asked Questions | ||
| 12 | @section Frequently Asked Questions | 15 | @section Frequently Asked Questions |
| 13 | @cindex FAQ | ||
| 14 | @cindex Frequently Asked Questions | ||
| 15 | |||
| 16 | @c - Uncomment @chapter, comment @section | ||
| 17 | @c - run (texinfo-every-node-update) | ||
| 18 | @c - revert it. | ||
| 19 | 16 | ||
| 20 | @menu | 17 | @menu |
| 21 | * FAQ - Introduction:: About Gnus and this FAQ. | 18 | * FAQ - Changes:: |
| 22 | * FAQ 1 - Installation:: Installation of Gnus. | 19 | * FAQ - Introduction:: About Gnus and this FAQ. |
| 23 | * FAQ 2 - Startup / Group buffer:: Start up questions and the first | 20 | * FAQ 1 - Installation FAQ:: Installation of Gnus. |
| 24 | buffer Gnus shows you. | 21 | * FAQ 2 - Startup / Group buffer:: Start up questions and the |
| 25 | * FAQ 3 - Getting messages:: Making Gnus read your mail and news. | 22 | first buffer Gnus shows you. |
| 26 | * FAQ 4 - Reading messages:: How to efficiently read messages. | 23 | * FAQ 3 - Getting Messages:: Making Gnus read your mail |
| 27 | * FAQ 5 - Composing messages:: Composing mails or Usenet postings. | 24 | and news. |
| 28 | * FAQ 6 - Old messages:: Importing, archiving, searching | 25 | * FAQ 4 - Reading messages:: How to efficiently read |
| 29 | and deleting messages. | 26 | messages. |
| 30 | * FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline. | 27 | * FAQ 5 - Composing messages:: Composing mails or Usenet |
| 31 | * FAQ 8 - Getting help:: When this FAQ isn't enough. | 28 | postings. |
| 32 | * FAQ 9 - Tuning Gnus:: How to make Gnus faster. | 29 | * FAQ 6 - Old messages:: Importing, archiving, |
| 33 | * FAQ - Glossary:: Terms used in the FAQ explained. | 30 | searching and deleting messages. |
| 31 | * FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while | ||
| 32 | offline. | ||
| 33 | * FAQ 8 - Getting help:: When this FAQ isn't enough. | ||
| 34 | * FAQ 9 - Tuning Gnus:: How to make Gnus faster. | ||
| 35 | * FAQ - Glossary:: Terms used in the FAQ | ||
| 36 | explained. | ||
| 34 | @end menu | 37 | @end menu |
| 35 | 38 | ||
| 36 | |||
| 37 | @subheading Abstract | 39 | @subheading Abstract |
| 38 | 40 | ||
| 39 | This is the new Gnus Frequently Asked Questions list. If you have a | 41 | This is the new Gnus Frequently Asked Questions list. |
| 40 | Web browser, the official hypertext version is at | 42 | If you have a Web browser, the official hypertext version is at |
| 41 | @uref{http://my.gnus.org/FAQ/}, the Docbook source is available from | 43 | @uref{http://my.gnus.org/FAQ/}, |
| 42 | @uref{http://sourceforge.net/projects/gnus/}. | 44 | the Docbook source is available from |
| 43 | 45 | @uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}. | |
| 44 | 46 | ||
| 45 | Please submit features and suggestions to the | 47 | Please submit features and suggestions to the |
| 46 | @email{faq-discuss@@my.gnus.org,FAQ discussion list}. | 48 | @email{faq-discuss@@my.gnus.org, FAQ discussion list}. |
| 47 | The list is protected against junk mail with | 49 | The list is protected against junk mail with |
| 48 | @uref{http://smarden.org/qconfirm/index.html,qconfirm, qconfirm}. As | 50 | @uref{http://smarden.org/qconfirm/index.html, qconfirm}. As |
| 49 | a subscriber, your submissions will automatically pass. You can | 51 | a subscriber, your submissions will automatically pass. You can |
| 50 | also subscribe to the list by sending a blank email to | 52 | also subscribe to the list by sending a blank email to |
| 51 | @email{faq-discuss-subscribe@@my.gnus.org} | 53 | @email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org} |
| 52 | and | 54 | and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse |
| 53 | @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse | 55 | the archive}. |
| 54 | the archive, browse the archive}. | ||
| 55 | |||
| 56 | @node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions | ||
| 57 | @comment node-name, next, previous, up | ||
| 58 | @heading Introduction | ||
| 59 | 56 | ||
| 60 | This is the Gnus Frequently Asked Questions list. | 57 | @node FAQ - Changes |
| 58 | @subheading Changes | ||
| 61 | 59 | ||
| 62 | Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented | ||
| 63 | as a part of Emacs. It's been around in some form for almost a decade | ||
| 64 | now, and has been distributed as a standard part of Emacs for much of | ||
| 65 | that time. Gnus 5 is the latest (and greatest) incarnation. The | ||
| 66 | original version was called GNUS, and was written by Masanobu UMEDA. | ||
| 67 | When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and | ||
| 68 | decided to rewrite Gnus. | ||
| 69 | |||
| 70 | Its biggest strength is the fact that it is extremely | ||
| 71 | customizable. It is somewhat intimidating at first glance, but | ||
| 72 | most of the complexity can be ignored until you're ready to take | ||
| 73 | advantage of it. If you receive a reasonable volume of e-mail | ||
| 74 | (you're on various mailing lists), or you would like to read | ||
| 75 | high-volume mailing lists but cannot keep up with them, or read | ||
| 76 | high volume newsgroups or are just bored, then Gnus is what you | ||
| 77 | want. | ||
| 78 | |||
| 79 | This FAQ was maintained by Justin Sheehy until March 2002. He | ||
| 80 | would like to thank Steve Baur and Per Abrahamsen for doing a wonderful | ||
| 81 | job with this FAQ before him. We would like to do the same - thanks, | ||
| 82 | Justin! | ||
| 83 | |||
| 84 | 60 | ||
| 85 | If you have a Web browser, the official hypertext version is at:@* | ||
| 86 | @uref{http://my.gnus.org/FAQ/}. | ||
| 87 | This version is much nicer than the unofficial hypertext | ||
| 88 | versions that are archived at Utrecht, Oxford, Smart Pages, Ohio | ||
| 89 | State, and other FAQ archives. See the resources question below | ||
| 90 | if you want information on obtaining it in another format. | ||
| 91 | |||
| 92 | 61 | ||
| 93 | The information contained here was compiled with the assistance | 62 | @itemize @bullet |
| 94 | of the Gnus development mailing list, and any errors or | 63 | |
| 95 | misprints are the my.gnus.org team's fault, sorry. | 64 | @item |
| 65 | Updated FAQ to reflect release of Gnus 5.10 and start of | ||
| 66 | No Gnus development. | ||
| 67 | @end itemize | ||
| 96 | 68 | ||
| 69 | @node FAQ - Introduction | ||
| 70 | @subheading Introduction | ||
| 71 | |||
| 72 | This is the Gnus Frequently Asked Questions list. | ||
| 97 | 73 | ||
| 98 | @ifnottex | 74 | Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented |
| 99 | @node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions | 75 | as a part of Emacs. It's been around in some form for almost a decade |
| 100 | @end ifnottex | 76 | now, and has been distributed as a standard part of Emacs for much of |
| 101 | @subsection Installation | 77 | that time. Gnus 5 is the latest (and greatest) incarnation. The |
| 78 | original version was called GNUS, and was written by Masanobu UMEDA. | ||
| 79 | When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and | ||
| 80 | decided to rewrite Gnus. | ||
| 81 | |||
| 82 | Its biggest strength is the fact that it is extremely | ||
| 83 | customizable. It is somewhat intimidating at first glance, but | ||
| 84 | most of the complexity can be ignored until you're ready to take | ||
| 85 | advantage of it. If you receive a reasonable volume of e-mail | ||
| 86 | (you're on various mailing lists), or you would like to read | ||
| 87 | high-volume mailing lists but cannot keep up with them, or read | ||
| 88 | high volume newsgroups or are just bored, then Gnus is what you | ||
| 89 | want. | ||
| 90 | |||
| 91 | This FAQ was maintained by Justin Sheehy until March 2002. He | ||
| 92 | would like to thank Steve Baur and Per Abrahamsen for doing a wonderful | ||
| 93 | job with this FAQ before him. We would like to do the same - thanks, | ||
| 94 | Justin! | ||
| 95 | |||
| 96 | If you have a Web browser, the official hypertext version is at: | ||
| 97 | @uref{http://my.gnus.org/FAQ/}. | ||
| 98 | This version is much nicer than the unofficial hypertext | ||
| 99 | versions that are archived at Utrecht, Oxford, Smart Pages, Ohio | ||
| 100 | State, and other FAQ archives. See the resources question below | ||
| 101 | if you want information on obtaining it in another format. | ||
| 102 | |||
| 103 | The information contained here was compiled with the assistance | ||
| 104 | of the Gnus development mailing list, and any errors or | ||
| 105 | misprints are the my.gnus.org team's fault, sorry. | ||
| 106 | |||
| 107 | @node FAQ 1 - Installation FAQ | ||
| 108 | @subsection Installation FAQ | ||
| 102 | 109 | ||
| 103 | @menu | 110 | @menu |
| 104 | * [1.1]:: What is the latest version of Gnus? | 111 | * [1.1]:: What is the latest version of Gnus? |
| 105 | * [1.2]:: What's new in 5.10? | 112 | * [1.2]:: What's new in 5.10? |
| 106 | * [1.3]:: Where and how to get Gnus? | 113 | * [1.3]:: Where and how to get Gnus? |
| 107 | * [1.4]:: What to do with the tarball now? | 114 | * [1.4]:: What to do with the tarball now? |
| 108 | * [1.5]:: Which version of Emacs do I need? | 115 | * [1.5]:: I sometimes read references to No Gnus and Oort Gnus, what |
| 109 | * [1.6]:: How do I run Gnus on both Emacs and XEmacs? | 116 | are those? |
| 117 | * [1.6]:: Which version of Emacs do I need? | ||
| 118 | * [1.7]:: How do I run Gnus on both Emacs and XEmacs? | ||
| 110 | @end menu | 119 | @end menu |
| 111 | 120 | ||
| 112 | 121 | @node [1.1] | |
| 113 | @ifnottex | 122 | @subsubheading Question 1.1 |
| 114 | @node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation | ||
| 115 | @end ifnottex | ||
| 116 | @subsubheading Question 1.1: | ||
| 117 | 123 | ||
| 118 | What is the latest version of Gnus? | 124 | What is the latest version of Gnus? |
| 119 | 125 | ||
| 120 | Answer: | 126 | @subsubheading Answer |
| 121 | 127 | ||
| 122 | Jingle please: Gnus 5.10 is released, get it while it's | 128 | Jingle please: Gnus 5.10 is released, get it while it's |
| 123 | hot! As well as the step in version number is rather | 129 | hot! As well as the step in version number is rather |
| 124 | small, Gnus 5.10 has tons of new features which you | 130 | small, Gnus 5.10 has tons of new features which you |
| 125 | shouldn't miss, however if you are cautious, you might | 131 | shouldn't miss. The current release (5.10.6) should be at |
| 126 | prefer to stay with 5.8.8 respectively 5.9 (they are | 132 | least as stable as the latest release of the 5.8 series. |
| 127 | basically the same) until some bugfix releases are out. | ||
| 128 | |||
| 129 | @ifnottex | ||
| 130 | @node [1.2], [1.3], [1.1], FAQ 1 - Installation | ||
| 131 | @end ifnottex | ||
| 132 | @subsubheading Question 1.2: | ||
| 133 | 133 | ||
| 134 | What's new in 5.10? | 134 | @node [1.2] |
| 135 | @subsubheading Question 1.2 | ||
| 135 | 136 | ||
| 136 | Answer: | 137 | What's new in 5.10? |
| 137 | 138 | ||
| 138 | First of all, you should have a look into the file | 139 | @subsubheading Answer |
| 139 | GNUS-NEWS in the toplevel directory of the Gnus tarball, | ||
| 140 | there the most important changes are listed. Here's a | ||
| 141 | short list of the changes I find especially | ||
| 142 | important/interesting: | ||
| 143 | |||
| 144 | 140 | ||
| 145 | 141 | First of all, you should have a look into the file | |
| 142 | GNUS-NEWS in the toplevel directory of the Gnus tarball, | ||
| 143 | there the most important changes are listed. Here's a | ||
| 144 | short list of the changes I find especially | ||
| 145 | important/interesting: | ||
| 146 | 146 | ||
| 147 | @itemize @bullet{} | 147 | @itemize @bullet |
| 148 | 148 | ||
| 149 | @item | 149 | @item |
| 150 | Major rewrite of the Gnus agent, Gnus agent is now | 150 | Major rewrite of the Gnus agent, Gnus agent is now |
| 151 | active by default. | 151 | active by default. |
| 152 | 152 | ||
| 153 | @item | 153 | @item |
| 154 | Many new article washing functions for dealing with | 154 | Many new article washing functions for dealing with |
| 155 | ugly formatted articles. | 155 | ugly formatted articles. |
| 156 | 156 | ||
| 157 | @item | 157 | @item |
| 158 | Anti Spam features. | 158 | Anti Spam features. |
| 159 | 159 | ||
| 160 | @item | 160 | @item |
| 161 | message-utils now included in Gnus. | 161 | Message-utils now included in Gnus. |
| 162 | 162 | ||
| 163 | @item | 163 | @item |
| 164 | New format specifiers for summary lines, e.g. %B for | 164 | New format specifiers for summary lines, e.g. %B for |
| 165 | a complex trn-style thread tree. | 165 | a complex trn-style thread tree. |
| 166 | |||
| 167 | @end itemize | 166 | @end itemize |
| 168 | 167 | ||
| 169 | @ifnottex | 168 | @node [1.3] |
| 170 | @node [1.3], [1.4], [1.2], FAQ 1 - Installation | 169 | @subsubheading Question 1.3 |
| 171 | @end ifnottex | ||
| 172 | @subsubheading Question 1.3: | ||
| 173 | 170 | ||
| 174 | Where and how to get Gnus? | 171 | Where and how to get Gnus? |
| 175 | 172 | ||
| 176 | Answer: | 173 | @subsubheading Answer |
| 177 | 174 | ||
| 178 | The latest released version of Gnus isn't included in | 175 | The latest released version of Gnus isn't included in |
| 179 | Emacs 21 and until now it also isn't available through the | 176 | Emacs 21, therefor you should get the Gnus tarball from |
| 180 | package system of XEmacs 21.4, therefor you should get the | 177 | @uref{http://www.gnus.org/dist/gnus.tar.gz} |
| 181 | Gnus tarball from | 178 | or via anonymous FTP from |
| 182 | @uref{http://www.gnus.org/dist/gnus.tar.gz} | 179 | @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}. |
| 183 | or via anonymous FTP from | 180 | If you use XEmacs instead of Emacs you can use XEmacs' |
| 184 | @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}. | 181 | package system instead. |
| 185 | |||
| 186 | @ifnottex | ||
| 187 | @node [1.4], [1.5], [1.3], FAQ 1 - Installation | ||
| 188 | @end ifnottex | ||
| 189 | @subsubheading Question 1.4: | ||
| 190 | 182 | ||
| 191 | What to do with the tarball now? | 183 | @node [1.4] |
| 192 | 184 | @subsubheading Question 1.4 | |
| 193 | 185 | ||
| 194 | Answer: | 186 | What to do with the tarball now? |
| 195 | 187 | ||
| 196 | Untar it via @samp{tar xvzf gnus.tar.gz} and do the common | 188 | @subsubheading Answer |
| 197 | @samp{./configure; make; make install} circle. | 189 | |
| 198 | (under MS-Windows either get the Cygwin environment from | 190 | Untar it via @samp{tar xvzf gnus.tar.gz} and do the common |
| 199 | @uref{http://www.cygwin.com} | 191 | @samp{./configure; make; make install} circle. |
| 200 | which allows you to do what's described above or unpack the | 192 | (under MS-Windows either get the Cygwin environment from |
| 201 | tarball with some packer (e.g. Winace from | 193 | @uref{http://www.cygwin.com} |
| 202 | @uref{http://www.winace.com}) | 194 | which allows you to do what's described above or unpack the |
| 203 | and use the batch-file make.bat included in the tarball to install | 195 | tarball with some packer (e.g. Winace from |
| 204 | Gnus. If you don't want to (or aren't allowed to) install Gnus | 196 | @uref{http://www.winace.com}) |
| 205 | system-wide, you can install it in your home directory and add the | 197 | and use the batch-file make.bat included in the tarball to install |
| 206 | following lines to your ~/.xemacs/init.el or ~/.emacs: | 198 | Gnus.) If you don't want to (or aren't allowed to) install Gnus |
| 207 | 199 | system-wide, you can install it in your home directory and add the | |
| 200 | following lines to your ~/.xemacs/init.el or ~/.emacs: | ||
| 208 | 201 | ||
| 209 | @example | 202 | @example |
| 210 | (add-to-list 'load-path "/path/to/gnus/lisp") | 203 | (add-to-list 'load-path "/path/to/gnus/lisp") |
| @@ -212,436 +205,395 @@ Answer: | |||
| 212 | (add-to-list 'Info-directory-list "/path/to/gnus/texi/") | 205 | (add-to-list 'Info-directory-list "/path/to/gnus/texi/") |
| 213 | (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) | 206 | (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) |
| 214 | @end example | 207 | @end example |
| 215 | |||
| 216 | @noindent | 208 | @noindent |
| 217 | Make sure that you don't have any Gnus related stuff | 209 | |
| 218 | before this line, on MS Windows use something like | 210 | Make sure that you don't have any Gnus related stuff |
| 219 | "C:/path/to/lisp" (yes, "/"). | 211 | before this line, on MS Windows use something like |
| 220 | 212 | "C:/path/to/lisp" (yes, "/"). | |
| 221 | @ifnottex | 213 | |
| 222 | @node [1.5], [1.6], [1.4], FAQ 1 - Installation | 214 | @node [1.5] |
| 223 | @end ifnottex | 215 | @subsubheading Question 1.5 |
| 224 | @subsubheading Question 1.5: | 216 | |
| 217 | I sometimes read references to No Gnus and Oort Gnus, | ||
| 218 | what are those? | ||
| 219 | |||
| 220 | @subsubheading Answer | ||
| 221 | |||
| 222 | Oort Gnus was the name of the development version of | ||
| 223 | Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is | ||
| 224 | the name of the current development version which will | ||
| 225 | once become Gnus 5.12 or Gnus 6. (If you're wondering why | ||
| 226 | not 5.11, the odd version numbers are normally used for | ||
| 227 | the Gnus versions bundled with Emacs) | ||
| 228 | |||
| 229 | @node [1.6] | ||
| 230 | @subsubheading Question 1.6 | ||
| 225 | 231 | ||
| 226 | Which version of Emacs do I need? | 232 | Which version of Emacs do I need? |
| 227 | 233 | ||
| 228 | Answer: | 234 | @subsubheading Answer |
| 229 | 235 | ||
| 230 | Gnus 5.10 requires an Emacs version that is greater | 236 | Gnus 5.10 requires an Emacs version that is greater |
| 231 | than or equal to Emacs 20.7 or XEmacs 21.1. | 237 | than or equal to Emacs 20.7 or XEmacs 21.1. The |
| 232 | 238 | development versions of Gnus (aka No Gnus) require Emacs | |
| 233 | @ifnottex | 239 | 21 or XEmacs 21.4. |
| 234 | @node [1.6], , [1.5], FAQ 1 - Installation | 240 | |
| 235 | @end ifnottex | 241 | @node [1.7] |
| 236 | @subsubheading Question 1.6: | 242 | @subsubheading Question 1.7 |
| 237 | 243 | ||
| 238 | How do I run Gnus on both Emacs and XEmacs? | 244 | How do I run Gnus on both Emacs and XEmacs? |
| 239 | 245 | ||
| 240 | Answer: | 246 | @subsubheading Answer |
| 241 | 247 | ||
| 242 | You can't use the same copy of Gnus in both as the Lisp | 248 | You can't use the same copy of Gnus in both as the Lisp |
| 243 | files are byte-compiled to a format which is different | 249 | files are byte-compiled to a format which is different |
| 244 | depending on which Emacs did the compilation. Get one copy | 250 | depending on which Emacs did the compilation. Get one copy |
| 245 | of Gnus for Emacs and one for XEmacs. | 251 | of Gnus for Emacs and one for XEmacs. |
| 246 | 252 | ||
| 247 | @ifnottex | 253 | @node FAQ 2 - Startup / Group buffer |
| 248 | @node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions | ||
| 249 | @end ifnottex | ||
| 250 | @subsection Startup / Group buffer | 254 | @subsection Startup / Group buffer |
| 251 | 255 | ||
| 252 | @menu | 256 | @menu |
| 253 | * [2.1]:: Every time I start Gnus I get a message | 257 | * [2.1]:: Every time I start Gnus I get a message "Gnus auto-save |
| 254 | "Gnus auto-save file exists. Do you want to read it?", | 258 | file exists. Do you want to read it?", what does this mean and |
| 255 | what does this mean and how to prevent it? | 259 | how to prevent it? |
| 256 | * [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this? | 260 | * [2.2]:: Gnus doesn't remember which groups I'm subscribed to, |
| 257 | * [2.3]:: How to change the format of the lines in Group buffer? | 261 | what's this? |
| 258 | * [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my | 262 | * [2.3]:: How to change the format of the lines in Group buffer? |
| 259 | groups into categories so I can easier browse through them? | 263 | * [2.4]:: My group buffer becomes a bit crowded, is there a way to |
| 260 | * [2.5]:: How to manually sort the groups in Group buffer? How to sort the | 264 | sort my groups into categories so I can easier browse through |
| 261 | groups in a topic? | 265 | them? |
| 266 | * [2.5]:: How to manually sort the groups in Group buffer? How to | ||
| 267 | sort the groups in a topic? | ||
| 262 | @end menu | 268 | @end menu |
| 263 | 269 | ||
| 264 | @ifnottex | 270 | @node [2.1] |
| 265 | @node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer | 271 | @subsubheading Question 2.1 |
| 266 | @end ifnottex | ||
| 267 | @subsubheading Question 2.1: | ||
| 268 | 272 | ||
| 269 | Every time I start Gnus I get a message "Gnus auto-save | 273 | Every time I start Gnus I get a message "Gnus auto-save |
| 270 | file exists. Do you want to read it?", what does this mean | 274 | file exists. Do you want to read it?", what does this mean |
| 271 | and how to prevent it? | 275 | and how to prevent it? |
| 272 | |||
| 273 | 276 | ||
| 274 | Answer: | 277 | @subsubheading Answer |
| 275 | 278 | ||
| 276 | This message means that the last time you used Gnus, it | 279 | This message means that the last time you used Gnus, it |
| 277 | wasn't properly exited and therefor couldn't write its | 280 | wasn't properly exited and therefor couldn't write its |
| 278 | informations to disk (e.g. which messages you read), you | 281 | informations to disk (e.g. which messages you read), you |
| 279 | are now asked if you want to restore those informations | 282 | are now asked if you want to restore those informations |
| 280 | from the auto-save file. | 283 | from the auto-save file. |
| 281 | |||
| 282 | 284 | ||
| 283 | To prevent this message make sure you exit Gnus | 285 | To prevent this message make sure you exit Gnus |
| 284 | via @samp{q} in group buffer instead of | 286 | via @samp{q} in group buffer instead of |
| 285 | just killing Emacs. | 287 | just killing Emacs. |
| 286 | |||
| 287 | @ifnottex | ||
| 288 | @node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer | ||
| 289 | @end ifnottex | ||
| 290 | @subsubheading Question: 2.2 | ||
| 291 | 288 | ||
| 292 | Gnus doesn't remember which groups I'm subscribed to, | 289 | @node [2.2] |
| 293 | what's this? | 290 | @subsubheading Question 2.2 |
| 294 | |||
| 295 | 291 | ||
| 296 | Answer: | 292 | Gnus doesn't remember which groups I'm subscribed to, |
| 293 | what's this? | ||
| 297 | 294 | ||
| 298 | You get the message described in the q/a pair above while | 295 | @subsubheading Answer |
| 299 | starting Gnus, right? It's an other symptom for the same | ||
| 300 | problem, so read the answer above. | ||
| 301 | |||
| 302 | @ifnottex | ||
| 303 | @node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer | ||
| 304 | @end ifnottex | ||
| 305 | @subsubheading Question 2.3: | ||
| 306 | 296 | ||
| 307 | How to change the format of the lines in Group buffer? | 297 | You get the message described in the q/a pair above while |
| 308 | 298 | starting Gnus, right? It's an other symptom for the same | |
| 299 | problem, so read the answer above. | ||
| 309 | 300 | ||
| 310 | Answer: | 301 | @node [2.3] |
| 302 | @subsubheading Question 2.3 | ||
| 311 | 303 | ||
| 312 | You've got to tweak the value of the variable | 304 | How to change the format of the lines in Group buffer? |
| 313 | gnus-group-line-format. See the manual node "Group Line | ||
| 314 | Specification" for information on how to do this. An | ||
| 315 | example for this (guess from whose .gnus :-)): | ||
| 316 | |||
| 317 | 305 | ||
| 318 | @example | 306 | @subsubheading Answer |
| 319 | 307 | ||
| 308 | You've got to tweak the value of the variable | ||
| 309 | gnus-group-line-format. See the manual node "Group Line | ||
| 310 | Specification" for information on how to do this. An | ||
| 311 | example for this (guess from whose .gnus :-)): | ||
| 312 | |||
| 313 | @example | ||
| 320 | (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") | 314 | (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") |
| 321 | |||
| 322 | @end example | 315 | @end example |
| 323 | 316 | @noindent | |
| 324 | @ifnottex | ||
| 325 | @node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer | ||
| 326 | @end ifnottex | ||
| 327 | @subsubheading Question 2.4: | ||
| 328 | |||
| 329 | My group buffer becomes a bit crowded, is there a way to | ||
| 330 | sort my groups into categories so I can easier browse | ||
| 331 | through them? | ||
| 332 | |||
| 333 | 317 | ||
| 334 | Answer: | 318 | @node [2.4] |
| 319 | @subsubheading Question 2.4 | ||
| 335 | 320 | ||
| 336 | Gnus offers the topic mode, it allows you to sort your | 321 | My group buffer becomes a bit crowded, is there a way to |
| 337 | groups in, well, topics, e.g. all groups dealing with | 322 | sort my groups into categories so I can easier browse |
| 338 | Linux under the topic linux, all dealing with music under | 323 | through them? |
| 339 | the topic music and all dealing with scottish music under | ||
| 340 | the topic scottish which is a subtopic of music. | ||
| 341 | |||
| 342 | 324 | ||
| 343 | To enter topic mode, just hit t while in Group buffer. Now | 325 | @subsubheading Answer |
| 344 | you can use @samp{T n} to create a topic | ||
| 345 | at point and @samp{T m} to move a group to | ||
| 346 | a specific topic. For more commands see the manual or the | ||
| 347 | menu. You might want to include the %P specifier at the | ||
| 348 | beginning of your gnus-group-line-format variable to have | ||
| 349 | the groups nicely indented. | ||
| 350 | |||
| 351 | @ifnottex | ||
| 352 | @node [2.5], , [2.4], FAQ 2 - Startup / Group buffer | ||
| 353 | @end ifnottex | ||
| 354 | @subsubheading Question 2.5: | ||
| 355 | 326 | ||
| 356 | How to manually sort the groups in Group buffer? How to | 327 | Gnus offers the topic mode, it allows you to sort your |
| 357 | sort the groups in a topic? | 328 | groups in, well, topics, e.g. all groups dealing with |
| 358 | 329 | Linux under the topic linux, all dealing with music under | |
| 330 | the topic music and all dealing with scottish music under | ||
| 331 | the topic scottish which is a subtopic of music. | ||
| 359 | 332 | ||
| 360 | Answer: | 333 | To enter topic mode, just hit t while in Group buffer. Now |
| 334 | you can use @samp{T n} to create a topic | ||
| 335 | at point and @samp{T m} to move a group to | ||
| 336 | a specific topic. For more commands see the manual or the | ||
| 337 | menu. You might want to include the %P specifier at the | ||
| 338 | beginning of your gnus-group-line-format variable to have | ||
| 339 | the groups nicely indented. | ||
| 361 | 340 | ||
| 362 | Move point over the group you want to move and | 341 | @node [2.5] |
| 363 | hit @samp{C-k}, now move point to the | 342 | @subsubheading Question 2.5 |
| 364 | place where you want the group to be and | 343 | |
| 365 | hit @samp{C-y}. | 344 | How to manually sort the groups in Group buffer? How to |
| 366 | 345 | sort the groups in a topic? | |
| 367 | @ifnottex | 346 | |
| 368 | @node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions | 347 | @subsubheading Answer |
| 369 | @end ifnottex | 348 | |
| 370 | @subsection Getting messages | 349 | Move point over the group you want to move and |
| 350 | hit @samp{C-k}, now move point to the | ||
| 351 | place where you want the group to be and | ||
| 352 | hit @samp{C-y}. | ||
| 353 | |||
| 354 | @node FAQ 3 - Getting Messages | ||
| 355 | @subsection Getting Messages | ||
| 371 | 356 | ||
| 372 | @menu | 357 | @menu |
| 373 | * [3.1]:: I just installed Gnus, started it via M-x gnus but it only says | 358 | * [3.1]:: I just installed Gnus, started it via @samp{M-x gnus} |
| 374 | "nntp (news) open error", what to do? | 359 | but it only says "nntp (news) open error", what to do? |
| 375 | * [3.2]:: I'm working under Windows and have no idea what ~/.gnus means. | 360 | * [3.2]:: I'm working under Windows and have no idea what ~/.gnus.el |
| 376 | * [3.3]:: My news server requires authentication, how to store user name | 361 | means. |
| 377 | and password on disk? | 362 | * [3.3]:: My news server requires authentication, how to store user |
| 378 | * [3.4]:: Gnus seems to start up OK, but I can't find out how to | 363 | name and password on disk? |
| 379 | subscribe to a group. | 364 | * [3.4]:: Gnus seems to start up OK, but I can't find out how to |
| 380 | * [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to | 365 | subscribe to a group. |
| 381 | post on this server as well as I am, what's that? | 366 | * [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed |
| 382 | * [3.6]:: I want Gnus to fetch news from several servers, is this possible? | 367 | to post on this server as well as I am, what's that? |
| 383 | * [3.7]:: And how about local spool files? | 368 | * [3.6]:: I want Gnus to fetch news from several servers, is this |
| 384 | * [3.8]:: OK, reading news works now, but I want to be able to read my mail | 369 | possible? |
| 385 | with Gnus, too. How to do it? | 370 | * [3.7]:: And how about local spool files? |
| 386 | * [3.9]:: And what about IMAP? | 371 | * [3.8]:: OK, reading news works now, but I want to be able to read |
| 387 | * [3.10]:: At the office we use one of those MS Exchange servers, | 372 | my mail with Gnus, too. How to do it? |
| 388 | can I use Gnus to read my mail from it? | 373 | * [3.9]:: And what about IMAP? |
| 389 | * [3.11]:: Can I tell Gnus not to delete the mails on the server | 374 | * [3.10]:: At the office we use one of those MS Exchange servers, can |
| 390 | it retrieves via POP3? | 375 | I use Gnus to read my mail from it? |
| 376 | * [3.11]:: Can I tell Gnus not to delete the mails on the server it | ||
| 377 | retrieves via POP3? | ||
| 391 | @end menu | 378 | @end menu |
| 392 | 379 | ||
| 393 | @ifnottex | 380 | @node [3.1] |
| 394 | @node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages | 381 | @subsubheading Question 3.1 |
| 395 | @end ifnottex | ||
| 396 | @subsubheading Question 3.1: | ||
| 397 | 382 | ||
| 398 | I just installed Gnus, started it via | 383 | I just installed Gnus, started it via |
| 399 | @samp{M-x gnus} | 384 | @samp{M-x gnus} |
| 400 | but it only says "nntp (news) open error", what to do? | 385 | but it only says "nntp (news) open error", what to do? |
| 401 | |||
| 402 | 386 | ||
| 403 | Answer: | 387 | @subsubheading Answer |
| 404 | 388 | ||
| 405 | You've got to tell Gnus where to fetch the news from. Read | 389 | You've got to tell Gnus where to fetch the news from. Read |
| 406 | the documentation for information on how to do this. As a | 390 | the documentation for information on how to do this. As a |
| 407 | first start, put those lines in ~/.gnus: | 391 | first start, put those lines in ~/.gnus.el: |
| 408 | |||
| 409 | 392 | ||
| 410 | @example | 393 | @example |
| 411 | (setq gnus-select-method '(nntp "news.yourprovider.net")) | 394 | (setq gnus-select-method '(nntp "news.yourprovider.net")) |
| 412 | (setq user-mail-address "you@@yourprovider.net") | 395 | (setq user-mail-address "you@@yourprovider.net") |
| 413 | (setq user-full-name "Your Name") | 396 | (setq user-full-name "Your Name") |
| 414 | @end example | 397 | @end example |
| 415 | 398 | @noindent | |
| 416 | @ifnottex | ||
| 417 | @node [3.2], [3.3], [3.1], FAQ 3 - Getting messages | ||
| 418 | @end ifnottex | ||
| 419 | @subsubheading Question 3.2: | ||
| 420 | |||
| 421 | I'm working under Windows and have no idea what ~/.gnus means. | ||
| 422 | |||
| 423 | 399 | ||
| 424 | Answer: | 400 | @node [3.2] |
| 425 | 401 | @subsubheading Question 3.2 | |
| 426 | The ~/ means the home directory where Gnus and Emacs look for the | 402 | |
| 427 | configuration files. However, you don't really need to know what this | 403 | I'm working under Windows and have no idea what ~/.gnus.el means. |
| 428 | means, it suffices that Emacs knows what it means :-) You can type | 404 | |
| 429 | @samp{C-x C-f ~/.gnus RET } (yes, with the forward slash, even on | 405 | @subsubheading Answer |
| 430 | Windows), and Emacs will open the right file for you. (It will most | 406 | |
| 431 | likely be new, and thus empty.) However, I'd discourage you from | 407 | The ~/ means the home directory where Gnus and Emacs look |
| 432 | doing so, since the directory Emacs chooses will most certainly not be | 408 | for the configuration files. However, you don't really |
| 433 | what you want, so let's do it the correct way. The first thing you've | 409 | need to know what this means, it suffices that Emacs knows |
| 434 | got to do is to create a suitable directory (no blanks in directory | 410 | what it means :-) You can type |
| 435 | name please) e.g. @file{c:\myhome}. Then you must set the environment | 411 | @samp{C-x C-f ~/.gnus.el RET } |
| 436 | variable HOME to this directory. To do this under Win9x or Me include | 412 | (yes, with the forward slash, even on Windows), and |
| 437 | the line | 413 | Emacs will open the right file for you. (It will most |
| 438 | 414 | likely be new, and thus empty.) | |
| 415 | However, I'd discourage you from doing so, since the | ||
| 416 | directory Emacs chooses will most certainly not be what | ||
| 417 | you want, so let's do it the correct way. | ||
| 418 | The first thing you've got to do is to | ||
| 419 | create a suitable directory (no blanks in directory name | ||
| 420 | please) e.g. c:\myhome. Then you must set the environment | ||
| 421 | variable HOME to this directory. To do this under Win9x | ||
| 422 | or Me include the line | ||
| 439 | 423 | ||
| 440 | @example | 424 | @example |
| 441 | |||
| 442 | SET HOME=C:\myhome | 425 | SET HOME=C:\myhome |
| 443 | |||
| 444 | @end example | 426 | @end example |
| 445 | |||
| 446 | @noindent | 427 | @noindent |
| 447 | in your autoexec.bat and reboot. Under NT, 2000 and XP, | ||
| 448 | hit Winkey+Pause/Break to enter system options (if it | ||
| 449 | doesn't work, go to Control Panel -> System). There you'll | ||
| 450 | find the possibility to set environment variables, create | ||
| 451 | a new one with name HOME and value @file{c:\myhome}, a reboot is | ||
| 452 | not necessary. | ||
| 453 | |||
| 454 | 428 | ||
| 455 | Now to create ~/.gnus, say | 429 | in your autoexec.bat and reboot. Under NT, 2000 and XP, |
| 456 | @samp{C-x C-f ~/.gnus RET C-x C-s}. | 430 | hit Winkey+Pause/Break to enter system options (if it |
| 457 | in Emacs. | 431 | doesn't work, go to Control Panel -> System). There you'll |
| 458 | 432 | find the possibility to set environment variables, create | |
| 459 | @ifnottex | 433 | a new one with name HOME and value C:\myhome, a reboot is |
| 460 | @node [3.3], [3.4], [3.2], FAQ 3 - Getting messages | 434 | not necessary. |
| 461 | @end ifnottex | ||
| 462 | @subsubheading Question 3.3: | ||
| 463 | 435 | ||
| 464 | My news server requires authentication, how to store | 436 | Now to create ~/.gnus.el, say |
| 465 | user name and password on disk? | 437 | @samp{C-x C-f ~/.gnus.el RET C-x C-s}. |
| 466 | 438 | in Emacs. | |
| 467 | 439 | ||
| 468 | Answer: | 440 | @node [3.3] |
| 441 | @subsubheading Question 3.3 | ||
| 469 | 442 | ||
| 470 | Create a file ~/.authinfo which includes for each server a line like this | 443 | My news server requires authentication, how to store |
| 471 | 444 | user name and password on disk? | |
| 445 | |||
| 446 | @subsubheading Answer | ||
| 447 | |||
| 448 | Create a file ~/.authinfo which includes for each server a line like this | ||
| 472 | 449 | ||
| 473 | @example | 450 | @example |
| 474 | machine news.yourprovider.net login YourUserName password YourPassword | 451 | machine news.yourprovider.net login YourUserName password YourPassword |
| 475 | @end example | 452 | @end example |
| 476 | |||
| 477 | @noindent | 453 | @noindent |
| 478 | . | 454 | . |
| 479 | Make sure that the file isn't readable to others if you | 455 | Make sure that the file isn't readable to others if you |
| 480 | work on a OS which is capable of doing so. (Under Unix | 456 | work on a OS which is capable of doing so. (Under Unix |
| 481 | say | 457 | say |
| 482 | |||
| 483 | @example | 458 | @example |
| 484 | chmod 600 ~/.authinfo | 459 | chmod 600 ~/.authinfo |
| 485 | @end example | 460 | @end example |
| 486 | |||
| 487 | @noindent | 461 | @noindent |
| 488 | in a shell.) | ||
| 489 | |||
| 490 | @ifnottex | ||
| 491 | @node [3.4], [3.5], [3.3], FAQ 3 - Getting messages | ||
| 492 | @end ifnottex | ||
| 493 | @subsubheading Question 3.4: | ||
| 494 | 462 | ||
| 495 | Gnus seems to start up OK, but I can't find out how to | 463 | in a shell.) |
| 496 | subscribe to a group. | ||
| 497 | |||
| 498 | 464 | ||
| 499 | Answer: | 465 | @node [3.4] |
| 466 | @subsubheading Question 3.4 | ||
| 500 | 467 | ||
| 501 | If you know the name of the group say @samp{U | 468 | Gnus seems to start up OK, but I can't find out how to |
| 502 | name.of.group RET} in group buffer (use the | 469 | subscribe to a group. |
| 503 | tab-completion Luke). Otherwise hit ^ in group buffer, | ||
| 504 | this brings you to the server buffer. Now place point (the | ||
| 505 | cursor) over the server which carries the group you want, | ||
| 506 | hit @samp{RET}, move point to the group | ||
| 507 | you want to subscribe to and say @samp{u} | ||
| 508 | to subscribe to it. | ||
| 509 | |||
| 510 | @ifnottex | ||
| 511 | @node [3.5], [3.6], [3.4], FAQ 3 - Getting messages | ||
| 512 | @end ifnottex | ||
| 513 | @subsubheading Question 3.5: | ||
| 514 | 470 | ||
| 515 | Gnus doesn't show all groups / Gnus says I'm not allowed to | 471 | @subsubheading Answer |
| 516 | post on this server as well as I am, what's that? | ||
| 517 | |||
| 518 | 472 | ||
| 519 | Answer: | 473 | If you know the name of the group say @samp{U |
| 474 | name.of.group RET} in group buffer (use the | ||
| 475 | tab-completion Luke). Otherwise hit ^ in group buffer, | ||
| 476 | this brings you to the server buffer. Now place point (the | ||
| 477 | cursor) over the server which carries the group you want, | ||
| 478 | hit @samp{RET}, move point to the group | ||
| 479 | you want to subscribe to and say @samp{u} | ||
| 480 | to subscribe to it. | ||
| 520 | 481 | ||
| 521 | Some providers allow restricted anonymous access and full | 482 | @node [3.5] |
| 522 | access only after authorization. To make Gnus send authinfo | 483 | @subsubheading Question 3.5 |
| 523 | to those servers append | 484 | |
| 524 | 485 | Gnus doesn't show all groups / Gnus says I'm not allowed to | |
| 486 | post on this server as well as I am, what's that? | ||
| 487 | |||
| 488 | @subsubheading Answer | ||
| 489 | |||
| 490 | Some providers allow restricted anonymous access and full | ||
| 491 | access only after authorization. To make Gnus send authinfo | ||
| 492 | to those servers append | ||
| 525 | 493 | ||
| 526 | @example | 494 | @example |
| 527 | force yes | 495 | force yes |
| 528 | @end example | 496 | @end example |
| 529 | |||
| 530 | |||
| 531 | @noindent | 497 | @noindent |
| 532 | to the line for those servers in ~/.authinfo. | ||
| 533 | 498 | ||
| 534 | @ifnottex | 499 | to the line for those servers in ~/.authinfo. |
| 535 | @node [3.6], [3.7], [3.5], FAQ 3 - Getting messages | ||
| 536 | @end ifnottex | ||
| 537 | @subsubheading Question 3.6: | ||
| 538 | 500 | ||
| 539 | I want Gnus to fetch news from several servers, is this possible? | 501 | @node [3.6] |
| 540 | 502 | @subsubheading Question 3.6 | |
| 541 | 503 | ||
| 542 | Answer: | 504 | I want Gnus to fetch news from several servers, is this possible? |
| 543 | 505 | ||
| 544 | Of course. You can specify more sources for articles in the | 506 | @subsubheading Answer |
| 545 | variable gnus-secondary-select-methods. Add something like | 507 | |
| 546 | this in ~/.gnus: | 508 | Of course. You can specify more sources for articles in the |
| 547 | 509 | variable gnus-secondary-select-methods. Add something like | |
| 510 | this in ~/.gnus.el: | ||
| 548 | 511 | ||
| 549 | @example | 512 | @example |
| 550 | (add-to-list 'gnus-secondary-select-methods | 513 | (add-to-list 'gnus-secondary-select-methods |
| 551 | '(nntp "news.yourSecondProvider.net")) | 514 | '(nntp "news.yourSecondProvider.net")) |
| 552 | (add-to-list 'gnus-secondary-select-methods | 515 | (add-to-list 'gnus-secondary-select-methods |
| 553 | '(nntp "news.yourThirdProvider.net")) | 516 | '(nntp "news.yourThirdProvider.net")) |
| 554 | @end example | 517 | @end example |
| 555 | 518 | @noindent | |
| 556 | @ifnottex | ||
| 557 | @node [3.7], [3.8], [3.6], FAQ 3 - Getting messages | ||
| 558 | @end ifnottex | ||
| 559 | @subsubheading Question 3.7: | ||
| 560 | 519 | ||
| 561 | And how about local spool files? | 520 | @node [3.7] |
| 562 | 521 | @subsubheading Question 3.7 | |
| 563 | 522 | ||
| 564 | Answer: | 523 | And how about local spool files? |
| 565 | 524 | ||
| 566 | No problem, this is just one more select method called | 525 | @subsubheading Answer |
| 567 | nnspool, so you want this: | 526 | |
| 568 | 527 | No problem, this is just one more select method called | |
| 528 | nnspool, so you want this: | ||
| 569 | 529 | ||
| 570 | @example | 530 | @example |
| 571 | (add-to-list 'gnus-secondary-select-methods '(nnspool "")) | 531 | (add-to-list 'gnus-secondary-select-methods '(nnspool "")) |
| 572 | @end example | 532 | @end example |
| 573 | |||
| 574 | @noindent | 533 | @noindent |
| 575 | Or this if you don't want an NNTP Server as primary news source: | 534 | |
| 576 | 535 | Or this if you don't want an NNTP Server as primary news source: | |
| 577 | 536 | ||
| 578 | @example | 537 | @example |
| 579 | (setq gnus-select-method '(nnspool "")) | 538 | (setq gnus-select-method '(nnspool "")) |
| 580 | @end example | 539 | @end example |
| 581 | |||
| 582 | @noindent | 540 | @noindent |
| 583 | Gnus will look for the spool file in /usr/spool/news, if you | 541 | |
| 584 | want something different, change the line above to something like this: | 542 | Gnus will look for the spool file in /usr/spool/news, if you |
| 585 | 543 | want something different, change the line above to something like this: | |
| 586 | 544 | ||
| 587 | @example | 545 | @example |
| 588 | (add-to-list 'gnus-secondary-select-methods | 546 | (add-to-list 'gnus-secondary-select-methods |
| 589 | '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) | 547 | '(nnspool "" |
| 548 | (nnspool-directory "/usr/local/myspoolddir"))) | ||
| 590 | @end example | 549 | @end example |
| 591 | |||
| 592 | @noindent | 550 | @noindent |
| 593 | This sets the spool directory for this server only. | ||
| 594 | You might have to specify more stuff like the program used | ||
| 595 | to post articles, see the Gnus manual on how to do this. | ||
| 596 | |||
| 597 | @ifnottex | ||
| 598 | @node [3.8], [3.9], [3.7], FAQ 3 - Getting messages | ||
| 599 | @end ifnottex | ||
| 600 | @subsubheading Question 3.8: | ||
| 601 | 551 | ||
| 602 | OK, reading news works now, but I want to be able to read my mail | 552 | This sets the spool directory for this server only. |
| 603 | with Gnus, too. How to do it? | 553 | You might have to specify more stuff like the program used |
| 604 | 554 | to post articles, see the Gnus manual on how to do this. | |
| 605 | 555 | ||
| 606 | Answer: | 556 | @node [3.8] |
| 607 | 557 | @subsubheading Question 3.8 | |
| 608 | That's a bit harder since there are many possible sources | 558 | |
| 609 | for mail, many possible ways for storing mail and many | 559 | OK, reading news works now, but I want to be able to read my mail |
| 610 | different ways for sending mail. The most common cases are | 560 | with Gnus, too. How to do it? |
| 611 | these: 1: You want to read your mail from a pop3 server and | 561 | |
| 612 | send them directly to a SMTP Server 2: Some program like | 562 | @subsubheading Answer |
| 613 | fetchmail retrieves your mail and stores it on disk from | 563 | |
| 614 | where Gnus shall read it. Outgoing mail is sent by | 564 | That's a bit harder since there are many possible sources |
| 615 | Sendmail, Postfix or some other MTA. Sometimes, you even | 565 | for mail, many possible ways for storing mail and many |
| 616 | need a combination of the above cases. | 566 | different ways for sending mail. The most common cases are |
| 617 | 567 | these: 1: You want to read your mail from a pop3 server and | |
| 618 | 568 | send them directly to a SMTP Server 2: Some program like | |
| 619 | However, the first thing to do is to tell Gnus in which way | 569 | fetchmail retrieves your mail and stores it on disk from |
| 620 | it should store the mail, in Gnus terminology which back end | 570 | where Gnus shall read it. Outgoing mail is sent by |
| 621 | to use. Gnus supports many different back ends, the most | 571 | Sendmail, Postfix or some other MTA. Sometimes, you even |
| 622 | commonly used one is nnml. It stores every mail in one file | 572 | need a combination of the above cases. |
| 623 | and is therefor quite fast. However you might prefer a one | 573 | |
| 624 | file per group approach if your file system has problems with | 574 | However, the first thing to do is to tell Gnus in which way |
| 625 | many small files, the nnfolder back end is then probably the | 575 | it should store the mail, in Gnus terminology which back end |
| 626 | choice for you. To use nnml add the following to ~/.gnus: | 576 | to use. Gnus supports many different back ends, the most |
| 627 | 577 | commonly used one is nnml. It stores every mail in one file | |
| 578 | and is therefor quite fast. However you might prefer a one | ||
| 579 | file per group approach if your file system has problems with | ||
| 580 | many small files, the nnfolder back end is then probably the | ||
| 581 | choice for you. To use nnml add the following to ~/.gnus.el: | ||
| 628 | 582 | ||
| 629 | @example | 583 | @example |
| 630 | (add-to-list 'gnus-secondary-select-methods '(nnml "")) | 584 | (add-to-list 'gnus-secondary-select-methods '(nnml "")) |
| 631 | @end example | 585 | @end example |
| 632 | |||
| 633 | @noindent | 586 | @noindent |
| 634 | As you might have guessed, if you want nnfolder, it's | 587 | |
| 635 | 588 | As you might have guessed, if you want nnfolder, it's | |
| 636 | 589 | ||
| 637 | @example | 590 | @example |
| 638 | (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) | 591 | (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) |
| 639 | @end example | 592 | @end example |
| 640 | 593 | @noindent | |
| 641 | 594 | ||
| 642 | Now we need to tell Gnus, where to get it's mail from. If | 595 | Now we need to tell Gnus, where to get it's mail from. If |
| 643 | it's a POP3 server, then you need something like this: | 596 | it's a POP3 server, then you need something like this: |
| 644 | |||
| 645 | 597 | ||
| 646 | @example | 598 | @example |
| 647 | (eval-after-load "mail-source" | 599 | (eval-after-load "mail-source" |
| @@ -649,75 +601,68 @@ Answer: | |||
| 649 | :user "yourUserName" | 601 | :user "yourUserName" |
| 650 | :password "yourPassword"))) | 602 | :password "yourPassword"))) |
| 651 | @end example | 603 | @end example |
| 652 | |||
| 653 | @noindent | 604 | @noindent |
| 654 | Make sure ~/.gnus isn't readable to others if you store | 605 | |
| 655 | your password there. If you want to read your mail from a | 606 | Make sure ~/.gnus.el isn't readable to others if you store |
| 656 | traditional spool file on your local machine, it's | 607 | your password there. If you want to read your mail from a |
| 657 | 608 | traditional spool file on your local machine, it's | |
| 658 | 609 | ||
| 659 | @example | 610 | @example |
| 660 | (eval-after-load "mail-source" | 611 | (eval-after-load "mail-source" |
| 661 | '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))) | 612 | '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")) |
| 662 | @end example | 613 | @end example |
| 663 | |||
| 664 | @noindent | 614 | @noindent |
| 665 | If it's a Maildir, with one file per message as used by | 615 | |
| 666 | postfix, Qmail and (optionally) fetchmail it's | 616 | If it's a Maildir, with one file per message as used by |
| 667 | 617 | postfix, Qmail and (optionally) fetchmail it's | |
| 668 | 618 | ||
| 669 | @example | 619 | @example |
| 670 | (eval-after-load "mail-source" | 620 | (eval-after-load "mail-source" |
| 671 | '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" | 621 | '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" |
| 672 | :subdirs ("cur" "new"))) | 622 | :subdirs ("cur" "new"))) |
| 673 | @end example | 623 | @end example |
| 674 | |||
| 675 | @noindent | 624 | @noindent |
| 676 | And finally if you want to read your mail from several files | 625 | |
| 677 | in one directory, for example because procmail already split your | 626 | And finally if you want to read your mail from several files |
| 678 | mail, it's | 627 | in one directory, for example because procmail already split your |
| 679 | 628 | mail, it's | |
| 680 | 629 | ||
| 681 | @example | 630 | @example |
| 682 | (eval-after-load "mail-source" | 631 | (eval-after-load "mail-source" |
| 683 | '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" | 632 | '(add-to-list 'mail-sources |
| 684 | :suffix ".prcml")) | 633 | '(directory :path "/path/to/procmail-dir/" |
| 634 | :suffix ".prcml"))) | ||
| 685 | @end example | 635 | @end example |
| 686 | |||
| 687 | @noindent | 636 | @noindent |
| 688 | Where :suffix ".prcml" tells Gnus only to use files with the | ||
| 689 | suffix .prcml. | ||
| 690 | |||
| 691 | 637 | ||
| 692 | OK, now you only need to tell Gnus how to send mail. If you | 638 | Where :suffix ".prcml" tells Gnus only to use files with the |
| 693 | want to send mail via sendmail (or whichever MTA is playing | 639 | suffix .prcml. |
| 694 | the role of sendmail on your system), you don't need to do | 640 | |
| 695 | anything. However, if you want to send your mail to an | 641 | OK, now you only need to tell Gnus how to send mail. If you |
| 696 | SMTP Server you need the following in your ~/.gnus | 642 | want to send mail via sendmail (or whichever MTA is playing |
| 697 | 643 | the role of sendmail on your system), you don't need to do | |
| 644 | anything. However, if you want to send your mail to an | ||
| 645 | SMTP Server you need the following in your ~/.gnus.el | ||
| 698 | 646 | ||
| 699 | @example | 647 | @example |
| 700 | (setq send-mail-function 'smtpmail-send-it) | 648 | (setq send-mail-function 'smtpmail-send-it) |
| 701 | (setq message-send-mail-function 'smtpmail-send-it) | 649 | (setq message-send-mail-function 'smtpmail-send-it) |
| 702 | (setq smtpmail-default-smtp-server "smtp.yourProvider.net") | 650 | (setq smtpmail-default-smtp-server "smtp.yourProvider.net") |
| 703 | @end example | 651 | @end example |
| 704 | 652 | @noindent | |
| 705 | @ifnottex | ||
| 706 | @node [3.9], [3.10], [3.8], FAQ 3 - Getting messages | ||
| 707 | @end ifnottex | ||
| 708 | @subsubheading Question 3.9: | ||
| 709 | 653 | ||
| 710 | And what about IMAP? | 654 | @node [3.9] |
| 711 | 655 | @subsubheading Question 3.9 | |
| 712 | 656 | ||
| 713 | Answer: | 657 | And what about IMAP? |
| 714 | 658 | ||
| 715 | There are two ways of using IMAP with Gnus. The first one is | 659 | @subsubheading Answer |
| 716 | to use IMAP like POP3, that means Gnus fetches the mail from | 660 | |
| 717 | the IMAP server and stores it on disk. If you want to do | 661 | There are two ways of using IMAP with Gnus. The first one is |
| 718 | this (you don't really want to do this) add the following to | 662 | to use IMAP like POP3, that means Gnus fetches the mail from |
| 719 | ~/.gnus | 663 | the IMAP server and stores it on disk. If you want to do |
| 720 | 664 | this (you don't really want to do this) add the following to | |
| 665 | ~/.gnus.el | ||
| 721 | 666 | ||
| 722 | @example | 667 | @example |
| 723 | (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" | 668 | (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" |
| @@ -728,249 +673,215 @@ Answer: | |||
| 728 | :mailbox "INBOX" | 673 | :mailbox "INBOX" |
| 729 | :fetchflag "\\Seen")) | 674 | :fetchflag "\\Seen")) |
| 730 | @end example | 675 | @end example |
| 731 | |||
| 732 | @noindent | 676 | @noindent |
| 733 | You might have to tweak the values for stream and/or | ||
| 734 | authentification, see the Gnus manual node "Mail Source | ||
| 735 | Specifiers" for possible values. | ||
| 736 | |||
| 737 | 677 | ||
| 738 | If you want to use IMAP the way it's intended, you've got to | 678 | You might have to tweak the values for stream and/or |
| 739 | follow a different approach. You've got to add the nnimap | 679 | authentification, see the Gnus manual node "Mail Source |
| 740 | back end to your select method and give the information | 680 | Specifiers" for possible values. |
| 741 | about the server there. | 681 | |
| 742 | 682 | If you want to use IMAP the way it's intended, you've got to | |
| 683 | follow a different approach. You've got to add the nnimap | ||
| 684 | back end to your select method and give the information | ||
| 685 | about the server there. | ||
| 743 | 686 | ||
| 744 | @example | 687 | @example |
| 745 | (add-to-list | 688 | (add-to-list 'gnus-secondary-select-methods |
| 746 | 'gnus-secondary-select-methods | 689 | '(nnimap "Give the baby a name" |
| 747 | '(nnimap "Give the baby a name" | 690 | (nnimap-address "imap.yourProvider.net") |
| 748 | (nnimap-address "imap.yourProvider.net") | 691 | (nnimap-port 143) |
| 749 | (nnimap-port 143) | 692 | (nnimap-list-pattern "archive.*"))) |
| 750 | (nnimap-list-pattern "archive.*"))) | ||
| 751 | @end example | 693 | @end example |
| 752 | |||
| 753 | @noindent | 694 | @noindent |
| 754 | Again, you might have to specify how to authenticate to the | ||
| 755 | server if Gnus can't guess the correct way, see the Manual | ||
| 756 | Node "IMAP" for detailed information. | ||
| 757 | |||
| 758 | @ifnottex | ||
| 759 | @node [3.10], [3.11], [3.9], FAQ 3 - Getting messages | ||
| 760 | @end ifnottex | ||
| 761 | @subsubheading Question 3.10: | ||
| 762 | |||
| 763 | At the office we use one of those MS Exchange servers, can I use | ||
| 764 | Gnus to read my mail from it? | ||
| 765 | |||
| 766 | |||
| 767 | Answer: | ||
| 768 | 695 | ||
| 769 | Offer your administrator a pair of new running shoes for | 696 | Again, you might have to specify how to authenticate to the |
| 770 | activating IMAP on the server and follow the instructions | 697 | server if Gnus can't guess the correct way, see the Manual |
| 771 | above. | 698 | Node "IMAP" for detailed information. |
| 772 | 699 | ||
| 773 | @ifnottex | 700 | @node [3.10] |
| 774 | @node [3.11], , [3.10], FAQ 3 - Getting messages | 701 | @subsubheading Question 3.10 |
| 775 | @end ifnottex | 702 | |
| 776 | @subsubheading Question 3.11: | 703 | At the office we use one of those MS Exchange servers, can I use |
| 777 | 704 | Gnus to read my mail from it? | |
| 778 | Can I tell Gnus not to delete the mails on the server it | 705 | |
| 779 | retrieves via POP3? | 706 | @subsubheading Answer |
| 780 | 707 | ||
| 781 | 708 | Offer your administrator a pair of new running shoes for | |
| 782 | Answer: | 709 | activating IMAP on the server and follow the instructions |
| 783 | 710 | above. | |
| 784 | First of all, that's not the way POP3 is intended to work, | 711 | |
| 785 | if you have the possibility, you should use the IMAP | 712 | @node [3.11] |
| 786 | Protocol if you want your messages to stay on the | 713 | @subsubheading Question 3.11 |
| 787 | server. Nevertheless there might be situations where you | 714 | |
| 788 | need the feature, but sadly Gnus itself has no predefined | 715 | Can I tell Gnus not to delete the mails on the server it |
| 789 | functionality to do so. | 716 | retrieves via POP3? |
| 790 | 717 | ||
| 791 | 718 | @subsubheading Answer | |
| 792 | However this is Gnus county so there are possibilities to | 719 | |
| 793 | achieve what you want. The easiest way is to get an external | 720 | First of all, that's not the way POP3 is intended to work, |
| 794 | program which retrieves copies of the mail and stores them | 721 | if you have the possibility, you should use the IMAP |
| 795 | on disk, so Gnus can read it from there. On Unix systems you | 722 | Protocol if you want your messages to stay on the |
| 796 | could use e.g. fetchmail for this, on MS Windows you can use | 723 | server. Nevertheless there might be situations where you |
| 797 | Hamster, an excellent local news and mail server. | 724 | need the feature, but sadly Gnus itself has no predefined |
| 798 | 725 | functionality to do so. | |
| 799 | 726 | ||
| 800 | The other solution would be, to replace the method Gnus | 727 | However this is Gnus county so there are possibilities to |
| 801 | uses to get mail from POP3 servers by one which is capable | 728 | achieve what you want. The easiest way is to get an external |
| 802 | of leaving the mail on the server. If you use XEmacs, get | 729 | program which retrieves copies of the mail and stores them |
| 803 | the package mail-lib, it includes an enhanced pop3.el, | 730 | on disk, so Gnus can read it from there. On Unix systems you |
| 804 | look in the file, there's documentation on how to tell | 731 | could use e.g. fetchmail for this, on MS Windows you can use |
| 805 | Gnus to use it and not to delete the retrieved mail. For | 732 | Hamster, an excellent local news and mail server. |
| 806 | GNU Emacs look for the file epop3.el which can do the same | 733 | |
| 807 | (If you know the home of this file, please send me an | 734 | The other solution would be, to replace the method Gnus |
| 808 | e-mail). You can also tell Gnus to use an external program | 735 | uses to get mail from POP3 servers by one which is capable |
| 809 | (e.g. fetchmail) to fetch your mail, see the info node | 736 | of leaving the mail on the server. If you use XEmacs, get |
| 810 | "Mail Source Specifiers" in the Gnus manual on how to do | 737 | the package mail-lib, it includes an enhanced pop3.el, |
| 811 | it. | 738 | look in the file, there's documentation on how to tell |
| 812 | 739 | Gnus to use it and not to delete the retrieved mail. For | |
| 813 | 740 | GNU Emacs look for the file epop3.el which can do the same | |
| 814 | @ifnottex | 741 | (If you know the home of this file, please send me an |
| 815 | @node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions | 742 | e-mail). You can also tell Gnus to use an external program |
| 816 | @end ifnottex | 743 | (e.g. fetchmail) to fetch your mail, see the info node |
| 744 | "Mail Source Specifiers" in the Gnus manual on how to do | ||
| 745 | it. | ||
| 746 | |||
| 747 | @node FAQ 4 - Reading messages | ||
| 817 | @subsection Reading messages | 748 | @subsection Reading messages |
| 818 | 749 | ||
| 819 | @menu | 750 | @menu |
| 820 | * [4.1]:: When I enter a group, all read messages are gone. | 751 | * [4.1]:: When I enter a group, all read messages are gone. How to |
| 821 | How to view them again? | 752 | view them again? |
| 822 | * [4.2]:: How to tell Gnus to show an important message every time | 753 | * [4.2]:: How to tell Gnus to show an important message every time I |
| 823 | I enter a group, even when it's read? | 754 | enter a group, even when it's read? |
| 824 | * [4.3]:: How to view the headers of a message? | 755 | * [4.3]:: How to view the headers of a message? |
| 825 | * [4.4]:: How to view the raw unformatted message? | 756 | * [4.4]:: How to view the raw unformatted message? |
| 826 | * [4.5]:: How can I change the headers Gnus displays by default at the | 757 | * [4.5]:: How can I change the headers Gnus displays by default at |
| 827 | top of the article buffer? | 758 | the top of the article buffer? |
| 828 | * [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the | 759 | * [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the |
| 829 | text part if it's available. How to do it? | 760 | text part if it's available. How to do it? |
| 830 | * [4.7]:: Can I use some other browser than w3 to render my HTML-mails? | 761 | * [4.7]:: Can I use some other browser than w3 to render my |
| 831 | * [4.8]:: Is there anything I can do to make poorly formatted mails | 762 | HTML-mails? |
| 832 | more readable? | 763 | * [4.8]:: Is there anything I can do to make poorly formatted mails |
| 833 | * [4.9]:: Is there a way to automatically ignore posts by specific authors | 764 | more readable? |
| 834 | or with specific words in the subject? And can I highlight more | 765 | * [4.9]:: Is there a way to automatically ignore posts by specific |
| 835 | interesting ones in some way? | 766 | authors or with specific words in the subject? And can I highlight |
| 836 | * [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set | 767 | more interesting ones in some way? |
| 837 | other variables specific for some groups? | 768 | * [4.10]:: How can I disable threading in some (e.g. mail-) groups, |
| 838 | * [4.11]:: Can I highlight messages written by me and follow-ups to those? | 769 | or set other variables specific for some groups? |
| 839 | * [4.12]:: The number of total messages in a group which Gnus displays in | 770 | * [4.11]:: Can I highlight messages written by me and follow-ups to |
| 840 | group buffer is by far to high, especially in mail groups. | 771 | those? |
| 841 | Is this a bug? | 772 | * [4.12]:: The number of total messages in a group which Gnus |
| 842 | * [4.13]:: I don't like the layout of summary and article buffer, | 773 | displays in group buffer is by far to high, especially in mail |
| 843 | how to change it? Perhaps even a three pane display? | 774 | groups. Is this a bug? |
| 844 | * [4.14]:: I don't like the way the Summary buffer looks, how to tweak it? | 775 | * [4.13]:: I don't like the layout of summary and article buffer, how |
| 845 | * [4.15]:: How to split incoming mails in several groups? | 776 | to change it? Perhaps even a three pane display? |
| 777 | * [4.14]:: I don't like the way the Summary buffer looks, how to | ||
| 778 | tweak it? | ||
| 779 | * [4.15]:: How to split incoming mails in several groups? | ||
| 846 | @end menu | 780 | @end menu |
| 847 | 781 | ||
| 848 | @ifnottex | 782 | @node [4.1] |
| 849 | @node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages | 783 | @subsubheading Question 4.1 |
| 850 | @end ifnottex | ||
| 851 | @subsubheading Question 4.1: | ||
| 852 | 784 | ||
| 853 | When I enter a group, all read messages are gone. How to view them again? | 785 | When I enter a group, all read messages are gone. How to view them again? |
| 854 | |||
| 855 | 786 | ||
| 856 | Answer: | 787 | @subsubheading Answer |
| 857 | 788 | ||
| 858 | If you enter the group by saying | 789 | If you enter the group by saying |
| 859 | @samp{RET} | 790 | @samp{RET} |
| 860 | in group buffer with point over the group, only unread and ticked messages are loaded. Say | 791 | in group buffer with point over the group, only unread and ticked messages are loaded. Say |
| 861 | @samp{C-u RET} | 792 | @samp{C-u RET} |
| 862 | instead to load all available messages. If you want only the e.g. 300 newest say | 793 | instead to load all available messages. If you want only the e.g. 300 newest say |
| 863 | @samp{C-u 300 RET} | 794 | @samp{C-u 300 RET} |
| 864 | |||
| 865 | 795 | ||
| 866 | Loading only unread messages can be annoying if you have threaded view enabled, say | 796 | Loading only unread messages can be annoying if you have threaded view enabled, say |
| 867 | |||
| 868 | 797 | ||
| 869 | @example | 798 | @example |
| 870 | (setq gnus-fetch-old-headers 'some) | 799 | (setq gnus-fetch-old-headers 'some) |
| 871 | @end example | 800 | @end example |
| 872 | |||
| 873 | |||
| 874 | @noindent | 801 | @noindent |
| 875 | in ~/.gnus to load enough old articles to prevent teared threads, replace 'some with t to load | ||
| 876 | all articles (Warning: Both settings enlarge the amount of data which is | ||
| 877 | fetched when you enter a group and slow down the process of entering a group). | ||
| 878 | 802 | ||
| 803 | in ~/.gnus.el to load enough old articles to prevent teared threads, replace 'some with t to load | ||
| 804 | all articles (Warning: Both settings enlarge the amount of data which is | ||
| 805 | fetched when you enter a group and slow down the process of entering a group). | ||
| 879 | 806 | ||
| 880 | If you already use Gnus 5.10, you can say | 807 | If you already use Gnus 5.10, you can say |
| 881 | @samp{/o N} | 808 | @samp{/o N} |
| 882 | In summary buffer to load the last N messages, this feature is not available in 5.8.8 | 809 | In summary buffer to load the last N messages, this feature is not available in 5.8.8 |
| 883 | |||
| 884 | 810 | ||
| 885 | If you don't want all old messages, but the parent of the message you're just reading, | 811 | If you don't want all old messages, but the parent of the message you're just reading, |
| 886 | you can say @samp{^}, if you want to retrieve the whole thread | 812 | you can say @samp{^}, if you want to retrieve the whole thread |
| 887 | the message you're just reading belongs to, @samp{A T} is your friend. | 813 | the message you're just reading belongs to, @samp{A T} is your friend. |
| 888 | |||
| 889 | @ifnottex | ||
| 890 | @node [4.2], [4.3], [4.1], FAQ 4 - Reading messages | ||
| 891 | @end ifnottex | ||
| 892 | @subsubheading Question 4.2: | ||
| 893 | 814 | ||
| 894 | How to tell Gnus to show an important message every time I | 815 | @node [4.2] |
| 895 | enter a group, even when it's read? | 816 | @subsubheading Question 4.2 |
| 896 | |||
| 897 | 817 | ||
| 898 | Answer: | 818 | How to tell Gnus to show an important message every time I |
| 819 | enter a group, even when it's read? | ||
| 899 | 820 | ||
| 900 | You can tick important messages. To do this hit | 821 | @subsubheading Answer |
| 901 | @samp{u} while point is in summary buffer | ||
| 902 | over the message. When you want to remove the mark, hit | ||
| 903 | either @samp{d} (this deletes the tick | ||
| 904 | mark and set's unread mark) or @samp{M c} | ||
| 905 | (which deletes all marks for the message). | ||
| 906 | |||
| 907 | @ifnottex | ||
| 908 | @node [4.3], [4.4], [4.2], FAQ 4 - Reading messages | ||
| 909 | @end ifnottex | ||
| 910 | @subsubheading Question 4.3: | ||
| 911 | 822 | ||
| 912 | How to view the headers of a message? | 823 | You can tick important messages. To do this hit |
| 913 | 824 | @samp{u} while point is in summary buffer | |
| 825 | over the message. When you want to remove the mark, hit | ||
| 826 | either @samp{d} (this deletes the tick | ||
| 827 | mark and set's unread mark) or @samp{M c} | ||
| 828 | (which deletes all marks for the message). | ||
| 914 | 829 | ||
| 915 | Answer: | 830 | @node [4.3] |
| 831 | @subsubheading Question 4.3 | ||
| 916 | 832 | ||
| 917 | Say @samp{t} | 833 | How to view the headers of a message? |
| 918 | to show all headers, one more | ||
| 919 | @samp{t} | ||
| 920 | hides them again. | ||
| 921 | |||
| 922 | @ifnottex | ||
| 923 | @node [4.4], [4.5], [4.3], FAQ 4 - Reading messages | ||
| 924 | @end ifnottex | ||
| 925 | @subsubheading Question 4.4: | ||
| 926 | 834 | ||
| 927 | How to view the raw unformatted message? | 835 | @subsubheading Answer |
| 928 | |||
| 929 | 836 | ||
| 930 | Answer: | 837 | Say @samp{t} |
| 838 | to show all headers, one more | ||
| 839 | @samp{t} | ||
| 840 | hides them again. | ||
| 931 | 841 | ||
| 932 | Say | 842 | @node [4.4] |
| 933 | @samp{C-u g} | 843 | @subsubheading Question 4.4 |
| 934 | to show the raw message | ||
| 935 | @samp{g} | ||
| 936 | returns to normal view. | ||
| 937 | |||
| 938 | @ifnottex | ||
| 939 | @node [4.5], [4.6], [4.4], FAQ 4 - Reading messages | ||
| 940 | @end ifnottex | ||
| 941 | @subsubheading Question 4.5: | ||
| 942 | 844 | ||
| 943 | How can I change the headers Gnus displays by default at | 845 | How to view the raw unformatted message? |
| 944 | the top of the article buffer? | ||
| 945 | |||
| 946 | 846 | ||
| 947 | Answer: | 847 | @subsubheading Answer |
| 848 | |||
| 849 | Say | ||
| 850 | @samp{C-u g} | ||
| 851 | to show the raw message | ||
| 852 | @samp{g} | ||
| 853 | returns to normal view. | ||
| 854 | |||
| 855 | @node [4.5] | ||
| 856 | @subsubheading Question 4.5 | ||
| 857 | |||
| 858 | How can I change the headers Gnus displays by default at | ||
| 859 | the top of the article buffer? | ||
| 860 | |||
| 861 | @subsubheading Answer | ||
| 862 | |||
| 863 | The variable gnus-visible-headers controls which headers | ||
| 864 | are shown, its value is a regular expression, header lines | ||
| 865 | which match it are shown. So if you want author, subject, | ||
| 866 | date, and if the header exists, Followup-To and MUA / NUA | ||
| 867 | say this in ~/.gnus.el: | ||
| 948 | 868 | ||
| 949 | The variable gnus-visible-headers controls which headers | ||
| 950 | are shown, its value is a regular expression, header lines | ||
| 951 | which match it are shown. So if you want author, subject, | ||
| 952 | date, and if the header exists, Followup-To and MUA / NUA | ||
| 953 | say this in ~/.gnus: | ||
| 954 | |||
| 955 | @example | 869 | @example |
| 956 | (setq gnus-visible-headers | 870 | (setq gnus-visible-headers |
| 957 | "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\ | 871 | '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To" |
| 958 | \\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)") | 872 | "^User-Agent" "^X-Newsreader" "^X-Mailer")) |
| 959 | @end example | 873 | @end example |
| 960 | 874 | @noindent | |
| 961 | @ifnottex | ||
| 962 | @node [4.6], [4.7], [4.5], FAQ 4 - Reading messages | ||
| 963 | @end ifnottex | ||
| 964 | @subsubheading Question 4.6: | ||
| 965 | 875 | ||
| 966 | I'd like Gnus NOT to render HTML-mails but show me the | 876 | @node [4.6] |
| 967 | text part if it's available. How to do it? | 877 | @subsubheading Question 4.6 |
| 968 | |||
| 969 | 878 | ||
| 970 | Answer: | 879 | I'd like Gnus NOT to render HTML-mails but show me the |
| 880 | text part if it's available. How to do it? | ||
| 971 | 881 | ||
| 972 | Say | 882 | @subsubheading Answer |
| 973 | 883 | ||
| 884 | Say | ||
| 974 | 885 | ||
| 975 | @example | 886 | @example |
| 976 | (eval-after-load "mm-decode" | 887 | (eval-after-load "mm-decode" |
| @@ -978,240 +889,206 @@ Answer: | |||
| 978 | (add-to-list 'mm-discouraged-alternatives "text/html") | 889 | (add-to-list 'mm-discouraged-alternatives "text/html") |
| 979 | (add-to-list 'mm-discouraged-alternatives "text/richtext"))) | 890 | (add-to-list 'mm-discouraged-alternatives "text/richtext"))) |
| 980 | @end example | 891 | @end example |
| 981 | |||
| 982 | @noindent | 892 | @noindent |
| 983 | in ~/.gnus. If you don't want HTML rendered, even if there's no text alternative add | 893 | |
| 984 | 894 | in ~/.gnus.el. If you don't want HTML rendered, even if there's no text alternative add | |
| 985 | 895 | ||
| 986 | @example | 896 | @example |
| 987 | (setq mm-automatic-display (remove "text/html" mm-automatic-display)) | 897 | (setq mm-automatic-display (remove "text/html" mm-automatic-display)) |
| 988 | @end example | 898 | @end example |
| 989 | |||
| 990 | @noindent | 899 | @noindent |
| 991 | too. | ||
| 992 | |||
| 993 | @ifnottex | ||
| 994 | @node [4.7], [4.8], [4.6], FAQ 4 - Reading messages | ||
| 995 | @end ifnottex | ||
| 996 | @subsubheading Question 4.7: | ||
| 997 | 900 | ||
| 998 | Can I use some other browser than w3 to render my HTML-mails? | 901 | too. |
| 999 | |||
| 1000 | 902 | ||
| 1001 | Answer: | 903 | @node [4.7] |
| 904 | @subsubheading Question 4.7 | ||
| 1002 | 905 | ||
| 1003 | Only if you use Gnus 5.10 or younger. In this case you've got the | 906 | Can I use some other browser than w3 to render my HTML-mails? |
| 1004 | choice between w3, w3m, links, lynx and html2text, which | 907 | |
| 1005 | one is used can be specified in the variable | 908 | @subsubheading Answer |
| 1006 | mm-text-html-renderer, so if you want links to render your | 909 | |
| 1007 | mail say | 910 | Only if you use Gnus 5.10 or younger. In this case you've got the |
| 1008 | 911 | choice between w3, w3m, links, lynx and html2text, which | |
| 912 | one is used can be specified in the variable | ||
| 913 | mm-text-html-renderer, so if you want links to render your | ||
| 914 | mail say | ||
| 1009 | 915 | ||
| 1010 | @example | 916 | @example |
| 1011 | (setq mm-text-html-renderer 'links) | 917 | (setq mm-text-html-renderer 'links) |
| 1012 | @end example | 918 | @end example |
| 1013 | 919 | @noindent | |
| 1014 | @ifnottex | ||
| 1015 | @node [4.8], [4.9], [4.7], FAQ 4 - Reading messages | ||
| 1016 | @end ifnottex | ||
| 1017 | @subsubheading Question 4.8: | ||
| 1018 | |||
| 1019 | Is there anything I can do to make poorly formatted mails | ||
| 1020 | more readable? | ||
| 1021 | |||
| 1022 | |||
| 1023 | Answer: | ||
| 1024 | |||
| 1025 | Gnus offers you several functions to "wash" incoming mail, | ||
| 1026 | you can find them if you browse through the menu, item Article->Washing. The most | ||
| 1027 | interesting ones are probably "Wrap long lines" ( | ||
| 1028 | @samp{W w} | ||
| 1029 | ), "Decode ROT13" ( | ||
| 1030 | @samp{W r} | ||
| 1031 | ) and "Outlook Deuglify" which repairs the dumb quoting used | ||
| 1032 | by many users of Microsoft products ( | ||
| 1033 | @samp{W Y f} gives you full deuglify. | ||
| 1034 | See @samp{W Y C-h} or | ||
| 1035 | have a look at the menus for other deuglifications). | ||
| 1036 | Outlook deuglify is only available since Gnus 5.10. | ||
| 1037 | |||
| 1038 | @ifnottex | ||
| 1039 | @node [4.9], [4.10], [4.8], FAQ 4 - Reading messages | ||
| 1040 | @end ifnottex | ||
| 1041 | @subsubheading Question 4.9: | ||
| 1042 | |||
| 1043 | Is there a way to automatically ignore posts by specific | ||
| 1044 | authors or with specific words in the subject? And can I | ||
| 1045 | highlight more interesting ones in some way? | ||
| 1046 | |||
| 1047 | |||
| 1048 | Answer: | ||
| 1049 | |||
| 1050 | You want Scoring. Scoring means, that you define rules | ||
| 1051 | which assign each message an integer value. Depending on | ||
| 1052 | the value the message is highlighted in summary buffer (if | ||
| 1053 | it's high, say +2000) or automatically marked read (if the | ||
| 1054 | value is low, say -800) or some other action happens. | ||
| 1055 | |||
| 1056 | |||
| 1057 | There are basically three ways of setting up rules which assign | ||
| 1058 | the scoring-value to messages. The first and easiest way is to set | ||
| 1059 | up rules based on the article you are just reading. Say you're | ||
| 1060 | reading a message by a guy who always writes nonsense and you want | ||
| 1061 | to ignore his messages in the future. Hit | ||
| 1062 | @samp{L}, to set up a rule which lowers the score. | ||
| 1063 | Now Gnus asks you which the criteria for lowering the Score shall | ||
| 1064 | be. Hit @samp{?} twice to see all possibilities, | ||
| 1065 | we want @samp{a} which means the author (the from | ||
| 1066 | header). Now Gnus wants to know which kind of matching we want. | ||
| 1067 | Hit either @samp{e} for an exact match or | ||
| 1068 | @samp{s} for substring-match and delete afterwards | ||
| 1069 | everything but the name to score down all authors with the given | ||
| 1070 | name no matter which email address is used. Now you need to tell | ||
| 1071 | Gnus when to apply the rule and how long it should last, hit e.g. | ||
| 1072 | @samp{p} to apply the rule now and let it last | ||
| 1073 | forever. If you want to raise the score instead of lowering it say | ||
| 1074 | @samp{I} instead of @samp{L}. | ||
| 1075 | |||
| 1076 | 920 | ||
| 1077 | You can also set up rules by hand. To do this say @samp{V | 921 | @node [4.8] |
| 1078 | f} in summary buffer. Then you are asked for the name | 922 | @subsubheading Question 4.8 |
| 1079 | of the score file, it's name.of.group.SCORE for rules valid in | 923 | |
| 1080 | only one group or all.Score for rules valid in all groups. See the | 924 | Is there anything I can do to make poorly formatted mails |
| 1081 | Gnus manual for the exact syntax, basically it's one big list | 925 | more readable? |
| 1082 | whose elements are lists again. the first element of those lists | 926 | |
| 1083 | is the header to score on, then one more list with what to match, | 927 | @subsubheading Answer |
| 1084 | which score to assign, when to expire the rule and how to do the | 928 | |
| 1085 | matching. If you find me very interesting, you could e.g. add the | 929 | Gnus offers you several functions to "wash" incoming mail, you can |
| 1086 | following to your all.Score: | 930 | find them if you browse through the menu, item |
| 1087 | 931 | Article->Washing. The most interesting ones are probably "Wrap | |
| 932 | long lines" (@samp{W w}), "Decode ROT13" | ||
| 933 | (@samp{W r}) and "Outlook Deuglify" which repairs | ||
| 934 | the dumb quoting used by many users of Microsoft products | ||
| 935 | (@samp{W Y f} gives you full deuglify. | ||
| 936 | See @samp{W Y C-h} or have a look at the menus for | ||
| 937 | other deuglifications). Outlook deuglify is only available since | ||
| 938 | Gnus 5.10. | ||
| 939 | |||
| 940 | @node [4.9] | ||
| 941 | @subsubheading Question 4.9 | ||
| 942 | |||
| 943 | Is there a way to automatically ignore posts by specific | ||
| 944 | authors or with specific words in the subject? And can I | ||
| 945 | highlight more interesting ones in some way? | ||
| 946 | |||
| 947 | @subsubheading Answer | ||
| 948 | |||
| 949 | You want Scoring. Scoring means, that you define rules | ||
| 950 | which assign each message an integer value. Depending on | ||
| 951 | the value the message is highlighted in summary buffer (if | ||
| 952 | it's high, say +2000) or automatically marked read (if the | ||
| 953 | value is low, say -800) or some other action happens. | ||
| 954 | |||
| 955 | There are basically three ways of setting up rules which assign | ||
| 956 | the scoring-value to messages. The first and easiest way is to set | ||
| 957 | up rules based on the article you are just reading. Say you're | ||
| 958 | reading a message by a guy who always writes nonsense and you want | ||
| 959 | to ignore his messages in the future. Hit | ||
| 960 | @samp{L}, to set up a rule which lowers the score. | ||
| 961 | Now Gnus asks you which the criteria for lowering the Score shall | ||
| 962 | be. Hit @samp{?} twice to see all possibilities, | ||
| 963 | we want @samp{a} which means the author (the from | ||
| 964 | header). Now Gnus wants to know which kind of matching we want. | ||
| 965 | Hit either @samp{e} for an exact match or | ||
| 966 | @samp{s} for substring-match and delete afterwards | ||
| 967 | everything but the name to score down all authors with the given | ||
| 968 | name no matter which email address is used. Now you need to tell | ||
| 969 | Gnus when to apply the rule and how long it should last, hit e.g. | ||
| 970 | @samp{p} to apply the rule now and let it last | ||
| 971 | forever. If you want to raise the score instead of lowering it say | ||
| 972 | @samp{I} instead of @samp{L}. | ||
| 973 | |||
| 974 | You can also set up rules by hand. To do this say @samp{V | ||
| 975 | f} in summary buffer. Then you are asked for the name | ||
| 976 | of the score file, it's name.of.group.SCORE for rules valid in | ||
| 977 | only one group or all.Score for rules valid in all groups. See the | ||
| 978 | Gnus manual for the exact syntax, basically it's one big list | ||
| 979 | whose elements are lists again. the first element of those lists | ||
| 980 | is the header to score on, then one more list with what to match, | ||
| 981 | which score to assign, when to expire the rule and how to do the | ||
| 982 | matching. If you find me very interesting, you could e.g. add the | ||
| 983 | following to your all.Score: | ||
| 1088 | 984 | ||
| 1089 | @example | 985 | @example |
| 1090 | (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) | 986 | (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) |
| 1091 | ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) | 987 | ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) |
| 1092 | @end example | 988 | @end example |
| 1093 | |||
| 1094 | @noindent | 989 | @noindent |
| 1095 | This would add 999 to the score of messages written by me | ||
| 1096 | and 500 to the score of messages which are a (possibly | ||
| 1097 | indirect) answer to a message written by me. Of course | ||
| 1098 | nobody with a sane mind would do this :-) | ||
| 1099 | |||
| 1100 | 990 | ||
| 1101 | The third alternative is adaptive scoring. This means Gnus | 991 | This would add 999 to the score of messages written by me |
| 1102 | watches you and tries to find out what you find | 992 | and 500 to the score of messages which are a (possibly |
| 1103 | interesting and what annoying and sets up rules | 993 | indirect) answer to a message written by me. Of course |
| 1104 | which reflect this. Adaptive scoring can be a huge help | 994 | nobody with a sane mind would do this :-) |
| 1105 | when reading high traffic groups. If you want to activate | 995 | |
| 1106 | adaptive scoring say | 996 | The third alternative is adaptive scoring. This means Gnus |
| 1107 | 997 | watches you and tries to find out what you find | |
| 998 | interesting and what annoying and sets up rules | ||
| 999 | which reflect this. Adaptive scoring can be a huge help | ||
| 1000 | when reading high traffic groups. If you want to activate | ||
| 1001 | adaptive scoring say | ||
| 1108 | 1002 | ||
| 1109 | @example | 1003 | @example |
| 1110 | (setq gnus-use-adaptive-scoring t) | 1004 | (setq gnus-use-adaptive-scoring t) |
| 1111 | @end example | 1005 | @end example |
| 1112 | |||
| 1113 | @noindent | 1006 | @noindent |
| 1114 | in ~/.gnus. | ||
| 1115 | |||
| 1116 | @ifnottex | ||
| 1117 | @node [4.10], [4.11], [4.9], FAQ 4 - Reading messages | ||
| 1118 | @end ifnottex | ||
| 1119 | @subsubheading Question 4.10: | ||
| 1120 | 1007 | ||
| 1121 | How can I disable threading in some (e.g. mail-) groups, or | 1008 | in ~/.gnus.el. |
| 1122 | set other variables specific for some groups? | ||
| 1123 | |||
| 1124 | 1009 | ||
| 1125 | Answer: | 1010 | @node [4.10] |
| 1011 | @subsubheading Question 4.10 | ||
| 1126 | 1012 | ||
| 1127 | While in group buffer move point over the group and hit | 1013 | How can I disable threading in some (e.g. mail-) groups, or |
| 1128 | @samp{G c}, this opens a buffer where you | 1014 | set other variables specific for some groups? |
| 1129 | can set options for the group. At the bottom of the buffer | ||
| 1130 | you'll find an item that allows you to set variables | ||
| 1131 | locally for the group. To disable threading enter | ||
| 1132 | gnus-show-threads as name of variable and nil as | ||
| 1133 | value. Hit button done at the top of the buffer when | ||
| 1134 | you're ready. | ||
| 1135 | |||
| 1136 | @ifnottex | ||
| 1137 | @node [4.11], [4.12], [4.10], FAQ 4 - Reading messages | ||
| 1138 | @end ifnottex | ||
| 1139 | @subsubheading Question 4.11: | ||
| 1140 | 1015 | ||
| 1141 | Can I highlight messages written by me and follow-ups to | 1016 | @subsubheading Answer |
| 1142 | those? | ||
| 1143 | |||
| 1144 | 1017 | ||
| 1145 | Answer: | 1018 | While in group buffer move point over the group and hit |
| 1019 | @samp{G c}, this opens a buffer where you | ||
| 1020 | can set options for the group. At the bottom of the buffer | ||
| 1021 | you'll find an item that allows you to set variables | ||
| 1022 | locally for the group. To disable threading enter | ||
| 1023 | gnus-show-threads as name of variable and nil as | ||
| 1024 | value. Hit button done at the top of the buffer when | ||
| 1025 | you're ready. | ||
| 1146 | 1026 | ||
| 1147 | Stop those "Can I ..." questions, the answer is always yes | 1027 | @node [4.11] |
| 1148 | in Gnus Country :-). It's a three step process: First we | 1028 | @subsubheading Question 4.11 |
| 1149 | make faces (specifications of how summary-line shall look | ||
| 1150 | like) for those postings, then we'll give them some | ||
| 1151 | special score and finally we'll tell Gnus to use the new | ||
| 1152 | faces. You can find detailed instructions on how to do it on | ||
| 1153 | @uref{http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view,my.gnus.org} | ||
| 1154 | |||
| 1155 | @ifnottex | ||
| 1156 | @node [4.12], [4.13], [4.11], FAQ 4 - Reading messages | ||
| 1157 | @end ifnottex | ||
| 1158 | @subsubheading Question 4.12: | ||
| 1159 | |||
| 1160 | The number of total messages in a group which Gnus | ||
| 1161 | displays in group buffer is by far to high, especially in | ||
| 1162 | mail groups. Is this a bug? | ||
| 1163 | |||
| 1164 | 1029 | ||
| 1165 | Answer: | 1030 | Can I highlight messages written by me and follow-ups to |
| 1166 | 1031 | those? | |
| 1167 | No, that's a matter of design of Gnus, fixing this would | ||
| 1168 | mean reimplementation of major parts of Gnus' | ||
| 1169 | back ends. Gnus thinks "highest-article-number - | ||
| 1170 | lowest-article-number = total-number-of-articles". This | ||
| 1171 | works OK for Usenet groups, but if you delete and move | ||
| 1172 | many messages in mail groups, this fails. To cure the | ||
| 1173 | symptom, enter the group via @samp{C-u RET} | ||
| 1174 | (this makes Gnus get all messages), then | ||
| 1175 | hit @samp{M P b} to mark all messages and | ||
| 1176 | then say @samp{B m name.of.group} to move | ||
| 1177 | all messages to the group they have been in before, they | ||
| 1178 | get new message numbers in this process and the count is | ||
| 1179 | right again (until you delete and move your mail to other | ||
| 1180 | groups again). | ||
| 1181 | |||
| 1182 | @ifnottex | ||
| 1183 | @node [4.13], [4.14], [4.12], FAQ 4 - Reading messages | ||
| 1184 | @end ifnottex | ||
| 1185 | @subsubheading Question 4.13: | ||
| 1186 | 1032 | ||
| 1187 | I don't like the layout of summary and article buffer, how | 1033 | @subsubheading Answer |
| 1188 | to change it? Perhaps even a three pane display? | ||
| 1189 | |||
| 1190 | 1034 | ||
| 1191 | Answer: | 1035 | Stop those "Can I ..." questions, the answer is always yes |
| 1036 | in Gnus Country :-). It's a three step process: First we | ||
| 1037 | make faces (specifications of how summary-line shall look | ||
| 1038 | like) for those postings, then we'll give them some | ||
| 1039 | special score and finally we'll tell Gnus to use the new | ||
| 1040 | faces. You can find detailed instructions on how to do it on | ||
| 1041 | @uref{http://my.gnus.org/node/view/224, my.gnus.org} | ||
| 1192 | 1042 | ||
| 1193 | You can control the windows configuration by calling the | 1043 | @node [4.12] |
| 1194 | function gnus-add-configuration. The syntax is a bit | 1044 | @subsubheading Question 4.12 |
| 1195 | complicated but explained very well in the manual node | ||
| 1196 | "Window Layout". Some popular examples: | ||
| 1197 | |||
| 1198 | 1045 | ||
| 1199 | Instead 25% summary 75% article buffer 35% summary and 65% | 1046 | The number of total messages in a group which Gnus |
| 1200 | article (the 1.0 for article means "take the remaining | 1047 | displays in group buffer is by far to high, especially in |
| 1201 | space"): | 1048 | mail groups. Is this a bug? |
| 1202 | 1049 | ||
| 1050 | @subsubheading Answer | ||
| 1051 | |||
| 1052 | No, that's a matter of design of Gnus, fixing this would | ||
| 1053 | mean reimplementation of major parts of Gnus' | ||
| 1054 | back ends. Gnus thinks "highest-article-number - | ||
| 1055 | lowest-article-number = total-number-of-articles". This | ||
| 1056 | works OK for Usenet groups, but if you delete and move | ||
| 1057 | many messages in mail groups, this fails. To cure the | ||
| 1058 | symptom, enter the group via @samp{C-u RET} | ||
| 1059 | (this makes Gnus get all messages), then | ||
| 1060 | hit @samp{M P b} to mark all messages and | ||
| 1061 | then say @samp{B m name.of.group} to move | ||
| 1062 | all messages to the group they have been in before, they | ||
| 1063 | get new message numbers in this process and the count is | ||
| 1064 | right again (until you delete and move your mail to other | ||
| 1065 | groups again). | ||
| 1066 | |||
| 1067 | @node [4.13] | ||
| 1068 | @subsubheading Question 4.13 | ||
| 1069 | |||
| 1070 | I don't like the layout of summary and article buffer, how | ||
| 1071 | to change it? Perhaps even a three pane display? | ||
| 1072 | |||
| 1073 | @subsubheading Answer | ||
| 1074 | |||
| 1075 | You can control the windows configuration by calling the | ||
| 1076 | function gnus-add-configuration. The syntax is a bit | ||
| 1077 | complicated but explained very well in the manual node | ||
| 1078 | "Window Layout". Some popular examples: | ||
| 1079 | |||
| 1080 | Instead 25% summary 75% article buffer 35% summary and 65% | ||
| 1081 | article (the 1.0 for article means "take the remaining | ||
| 1082 | space"): | ||
| 1203 | 1083 | ||
| 1204 | @example | 1084 | @example |
| 1205 | (gnus-add-configuration | 1085 | (gnus-add-configuration |
| 1206 | '(article (vertical 1.0 | 1086 | '(article (vertical 1.0 (summary .35 point) (article 1.0)))) |
| 1207 | (summary .35 point) | ||
| 1208 | (article 1.0)))) | ||
| 1209 | @end example | 1087 | @end example |
| 1210 | 1088 | @noindent | |
| 1211 | 1089 | ||
| 1212 | A three pane layout, Group buffer on the left, summary | 1090 | A three pane layout, Group buffer on the left, summary |
| 1213 | buffer top-right, article buffer bottom-right: | 1091 | buffer top-right, article buffer bottom-right: |
| 1214 | |||
| 1215 | 1092 | ||
| 1216 | @example | 1093 | @example |
| 1217 | (gnus-add-configuration | 1094 | (gnus-add-configuration |
| @@ -1228,46 +1105,40 @@ Answer: | |||
| 1228 | (vertical 25 | 1105 | (vertical 25 |
| 1229 | (group 1.0)) | 1106 | (group 1.0)) |
| 1230 | (vertical 1.0 | 1107 | (vertical 1.0 |
| 1231 | (summary 1.0 point))))) | 1108 | (summary 1.0 point))))) |
| 1232 | @end example | 1109 | @end example |
| 1233 | 1110 | @noindent | |
| 1234 | @ifnottex | ||
| 1235 | @node [4.14], [4.15], [4.13], FAQ 4 - Reading messages | ||
| 1236 | @end ifnottex | ||
| 1237 | @subsubheading Question 4.14: | ||
| 1238 | 1111 | ||
| 1239 | I don't like the way the Summary buffer looks, how to tweak it? | 1112 | @node [4.14] |
| 1240 | 1113 | @subsubheading Question 4.14 | |
| 1241 | 1114 | ||
| 1242 | Answer: | 1115 | I don't like the way the Summary buffer looks, how to tweak it? |
| 1243 | |||
| 1244 | You've got to play around with the variable | ||
| 1245 | gnus-summary-line-format. It's value is a string of | ||
| 1246 | symbols which stand for things like author, date, subject | ||
| 1247 | etc. A list of the available specifiers can be found in the | ||
| 1248 | manual node "Summary Buffer Lines" and the often forgotten | ||
| 1249 | node "Formatting Variables" and it's sub-nodes. There | ||
| 1250 | you'll find useful things like positioning the cursor and | ||
| 1251 | tabulators which allow you a summary in table form, but | ||
| 1252 | sadly hard tabulators are broken in 5.8.8. | ||
| 1253 | |||
| 1254 | 1116 | ||
| 1255 | Since 5.10, Gnus offers you some very nice new specifiers, | 1117 | @subsubheading Answer |
| 1256 | e.g. %B which draws a thread-tree and %&user-date which | 1118 | |
| 1257 | gives you a date where the details are dependent of the | 1119 | You've got to play around with the variable |
| 1258 | articles age. Here's an example which uses both: | 1120 | gnus-summary-line-format. It's value is a string of |
| 1259 | 1121 | symbols which stand for things like author, date, subject | |
| 1122 | etc. A list of the available specifiers can be found in the | ||
| 1123 | manual node "Summary Buffer Lines" and the often forgotten | ||
| 1124 | node "Formatting Variables" and it's sub-nodes. There | ||
| 1125 | you'll find useful things like positioning the cursor and | ||
| 1126 | tabulators which allow you a summary in table form, but | ||
| 1127 | sadly hard tabulators are broken in 5.8.8. | ||
| 1128 | |||
| 1129 | Since 5.10, Gnus offers you some very nice new specifiers, | ||
| 1130 | e.g. %B which draws a thread-tree and %&user-date which | ||
| 1131 | gives you a date where the details are dependent of the | ||
| 1132 | articles age. Here's an example which uses both: | ||
| 1260 | 1133 | ||
| 1261 | @example | 1134 | @example |
| 1262 | (setq gnus-summary-line-format | 1135 | (setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") |
| 1263 | ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") | ||
| 1264 | @end example | 1136 | @end example |
| 1265 | |||
| 1266 | @noindent | 1137 | @noindent |
| 1267 | resulting in: | ||
| 1268 | |||
| 1269 | 1138 | ||
| 1270 | @smallexample | 1139 | resulting in: |
| 1140 | |||
| 1141 | @example | ||
| 1271 | :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 | 1142 | :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 |
| 1272 | :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 | 1143 | :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 |
| 1273 | :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 | 1144 | :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 |
| @@ -1280,54 +1151,48 @@ Answer: | |||
| 1280 | :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 | 1151 | :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 |
| 1281 | :O \-> ... | 18 |Kai Grossjohann | 0:35 | 1152 | :O \-> ... | 18 |Kai Grossjohann | 0:35 |
| 1282 | :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 | 1153 | :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 |
| 1283 | @end smallexample | 1154 | @end example |
| 1284 | 1155 | @noindent | |
| 1285 | @ifnottex | ||
| 1286 | @node [4.15], , [4.14], FAQ 4 - Reading messages | ||
| 1287 | @end ifnottex | ||
| 1288 | @subsubheading Question 4.15: | ||
| 1289 | 1156 | ||
| 1290 | How to split incoming mails in several groups? | 1157 | @node [4.15] |
| 1291 | 1158 | @subsubheading Question 4.15 | |
| 1292 | 1159 | ||
| 1293 | Answer: | 1160 | How to split incoming mails in several groups? |
| 1294 | 1161 | ||
| 1295 | Gnus offers two possibilities for splitting mail, the easy | 1162 | @subsubheading Answer |
| 1296 | nnmail-split-methods and the more powerful Fancy Mail | ||
| 1297 | Splitting. I'll only talk about the first one, refer to | ||
| 1298 | the manual, node "Fancy Mail Splitting" for the latter. | ||
| 1299 | |||
| 1300 | 1163 | ||
| 1301 | The value of nnmail-split-methods is a list, each element | 1164 | Gnus offers two possibilities for splitting mail, the easy |
| 1302 | is a list which stands for a splitting rule. Each rule has | 1165 | nnmail-split-methods and the more powerful Fancy Mail |
| 1303 | the form "group where matching articles should go to", | 1166 | Splitting. I'll only talk about the first one, refer to |
| 1304 | "regular expression which has to be matched", the first | 1167 | the manual, node "Fancy Mail Splitting" for the latter. |
| 1305 | rule which matches wins. The last rule must always be a | 1168 | |
| 1306 | general rule (regular expression .*) which denotes where | 1169 | The value of nnmail-split-methods is a list, each element |
| 1307 | articles should go which don't match any other rule. If | 1170 | is a list which stands for a splitting rule. Each rule has |
| 1308 | the folder doesn't exist yet, it will be created as soon | 1171 | the form "group where matching articles should go to", |
| 1309 | as an article lands there. By default the mail will be | 1172 | "regular expression which has to be matched", the first |
| 1310 | send to all groups whose rules match. If you | 1173 | rule which matches wins. The last rule must always be a |
| 1311 | don't want that (you probably don't want), say | 1174 | general rule (regular expression .*) which denotes where |
| 1312 | 1175 | articles should go which don't match any other rule. If | |
| 1176 | the folder doesn't exist yet, it will be created as soon | ||
| 1177 | as an article lands there. By default the mail will be | ||
| 1178 | send to all groups whose rules match. If you | ||
| 1179 | don't want that (you probably don't want), say | ||
| 1313 | 1180 | ||
| 1314 | @example | 1181 | @example |
| 1315 | (setq nnmail-crosspost nil) | 1182 | (setq nnmail-crosspost nil) |
| 1316 | @end example | 1183 | @end example |
| 1317 | |||
| 1318 | @noindent | 1184 | @noindent |
| 1319 | in ~/.gnus. | ||
| 1320 | |||
| 1321 | 1185 | ||
| 1322 | An example might be better than thousand words, so here's | 1186 | in ~/.gnus.el. |
| 1323 | my nnmail-split-methods. Note that I send duplicates in a | 1187 | |
| 1324 | special group and that the default group is spam, since I | 1188 | An example might be better than thousand words, so here's |
| 1325 | filter all mails out which are from some list I'm | 1189 | my nnmail-split-methods. Note that I send duplicates in a |
| 1326 | subscribed to or which are addressed directly to me | 1190 | special group and that the default group is spam, since I |
| 1327 | before. Those rules kill about 80% of the Spam which | 1191 | filter all mails out which are from some list I'm |
| 1328 | reaches me (Email addresses are changed to prevent spammers | 1192 | subscribed to or which are addressed directly to me |
| 1329 | from using them): | 1193 | before. Those rules kill about 80% of the Spam which |
| 1330 | 1194 | reaches me (Email addresses are changed to prevent spammers | |
| 1195 | from using them): | ||
| 1331 | 1196 | ||
| 1332 | @example | 1197 | @example |
| 1333 | (setq nnmail-split-methods | 1198 | (setq nnmail-split-methods |
| @@ -1336,133 +1201,114 @@ Answer: | |||
| 1336 | ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*") | 1201 | ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*") |
| 1337 | ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*") | 1202 | ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*") |
| 1338 | ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*") | 1203 | ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*") |
| 1339 | ("Hamster-src" | 1204 | ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*") |
| 1340 | "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*") | ||
| 1341 | ("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$") | 1205 | ("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$") |
| 1342 | ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*") | 1206 | ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*") |
| 1343 | ("EK" | 1207 | ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*") |
| 1344 | "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*") | 1208 | ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") |
| 1345 | ("Spam" | 1209 | ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") |
| 1346 | "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") | 1210 | ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") |
| 1347 | ("Spam" | ||
| 1348 | "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") | ||
| 1349 | ("Spam" | ||
| 1350 | "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") | ||
| 1351 | ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") | 1211 | ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") |
| 1352 | ("Spam" | 1212 | ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") |
| 1353 | "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") | 1213 | ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") |
| 1354 | ("Spam" | ||
| 1355 | "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") | ||
| 1356 | ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$") | 1214 | ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$") |
| 1357 | ("Spam" "^Received: from link2buy.com") | 1215 | ("Spam" "^Received: from link2buy.com") |
| 1358 | ("Spam" "^CC: .*azzrael@@t-online.bla") | 1216 | ("Spam" "^CC: .*azzrael@@t-online.bla") |
| 1359 | ("Spam" "^X-Mailer-Version: 1.50 BETA") | 1217 | ("Spam" "^X-Mailer-Version: 1.50 BETA") |
| 1360 | ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*") | 1218 | ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*") |
| 1361 | ("Inbox" | 1219 | ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)") |
| 1362 | "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)") | ||
| 1363 | ("Spam" ""))) | 1220 | ("Spam" ""))) |
| 1364 | @end example | 1221 | @end example |
| 1365 | 1222 | @noindent | |
| 1366 | 1223 | ||
| 1367 | @ifnottex | 1224 | @node FAQ 5 - Composing messages |
| 1368 | @node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions | ||
| 1369 | @end ifnottex | ||
| 1370 | @subsection Composing messages | 1225 | @subsection Composing messages |
| 1371 | 1226 | ||
| 1372 | @menu | 1227 | @menu |
| 1373 | * [5.1]:: What are the basic commands I need to know for sending mail and | 1228 | * [5.1]:: What are the basic commands I need to know for sending |
| 1374 | postings? | 1229 | mail and postings? |
| 1375 | * [5.2]:: How to enable automatic word-wrap when composing messages? | 1230 | * [5.2]:: How to enable automatic word-wrap when composing messages? |
| 1376 | * [5.3]:: How to set stuff like From, Organization, Reply-To, signature...? | 1231 | * [5.3]:: How to set stuff like From, Organization, Reply-To, |
| 1377 | * [5.4]:: Can I set things like From, Signature etc group based on the | 1232 | signature...? |
| 1378 | group I post too? | 1233 | * [5.4]:: Can I set things like From, Signature etc group based on |
| 1379 | * [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking? | 1234 | the group I post too? |
| 1380 | * [5.6]:: Can I set the dictionary based on the group I'm posting to? | 1235 | * [5.5]:: Is there a spell-checker? Perhaps even on-the-fly |
| 1381 | * [5.7]:: Is there some kind of address-book, so I needn't remember all | 1236 | spell-checking? |
| 1382 | those email addresses? | 1237 | * [5.6]:: Can I set the dictionary based on the group I'm posting |
| 1383 | * [5.8]:: Sometimes I see little images at the top of article buffer. | 1238 | to? |
| 1384 | What's that and how can I send one with my postings, too? | 1239 | * [5.7]:: Is there some kind of address-book, so I needn't remember |
| 1385 | * [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups. | 1240 | all those email addresses? |
| 1386 | Can Gnus warn me, when I'm replying by mail in newsgroups? | 1241 | * [5.8]:: Sometimes I see little images at the top of article |
| 1387 | * [5.10]:: How to tell Gnus not to generate a sender header? | 1242 | buffer. What's that and how can I send one with my postings, too? |
| 1388 | * [5.11]:: I want Gnus to locally store copies of my send mail and news, | 1243 | * [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups. |
| 1389 | how to do it? | 1244 | Can Gnus warn me, when I'm replying by mail in newsgroups? |
| 1390 | * [5.12]:: People tell me my Message-IDs are not correct, | 1245 | * [5.10]:: How to tell Gnus not to generate a sender header? |
| 1391 | why aren't they and how to fix it? | 1246 | * [5.11]:: I want Gnus to locally store copies of my send mail and |
| 1247 | news, how to do it? | ||
| 1248 | * [5.12]:: People tell me my Message-IDs are not correct, why aren't | ||
| 1249 | they and how to fix it? | ||
| 1392 | @end menu | 1250 | @end menu |
| 1393 | 1251 | ||
| 1394 | @ifnottex | 1252 | @node [5.1] |
| 1395 | @node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages | 1253 | @subsubheading Question 5.1 |
| 1396 | @end ifnottex | ||
| 1397 | @subsubheading Question 5.1: | ||
| 1398 | 1254 | ||
| 1399 | What are the basic commands I need to know for sending mail and postings? | 1255 | What are the basic commands I need to know for sending mail and postings? |
| 1400 | |||
| 1401 | 1256 | ||
| 1402 | Answer: | 1257 | @subsubheading Answer |
| 1403 | |||
| 1404 | To start composing a new mail hit @samp{m} | ||
| 1405 | either in Group or Summary buffer, for a posting, it's | ||
| 1406 | either @samp{a} in Group buffer and | ||
| 1407 | filling the Newsgroups header manually | ||
| 1408 | or @samp{a} in the Summary buffer of the | ||
| 1409 | group where the posting shall be send to. Replying by mail | ||
| 1410 | is | ||
| 1411 | @samp{r} if you don't want to cite the | ||
| 1412 | author, or import the cited text manually and | ||
| 1413 | @samp{R} to cite the text of the original | ||
| 1414 | message. For a follow up to a newsgroup, it's | ||
| 1415 | @samp{f} and @samp{F} | ||
| 1416 | (analog to @samp{r} and | ||
| 1417 | @samp{R}). | ||
| 1418 | |||
| 1419 | 1258 | ||
| 1420 | Enter new headers above the line saying "--text follows | 1259 | To start composing a new mail hit @samp{m} |
| 1421 | this line--", enter the text below the line. When ready | 1260 | either in Group or Summary buffer, for a posting, it's |
| 1422 | hit @samp{C-c C-c}, to send the message, | 1261 | either @samp{a} in Group buffer and |
| 1423 | if you want to finish it later hit @samp{C-c | 1262 | filling the Newsgroups header manually |
| 1424 | C-d} to save it in the drafts group, where you | 1263 | or @samp{a} in the Summary buffer of the |
| 1425 | can start editing it again by saying @samp{D | 1264 | group where the posting shall be send to. Replying by mail |
| 1426 | e}. | 1265 | is |
| 1427 | 1266 | @samp{r} if you don't want to cite the | |
| 1428 | @ifnottex | 1267 | author, or import the cited text manually and |
| 1429 | @node [5.2], [5.3], [5.1], FAQ 5 - Composing messages | 1268 | @samp{R} to cite the text of the original |
| 1430 | @end ifnottex | 1269 | message. For a follow up to a newsgroup, it's |
| 1431 | @subsubheading Question 5.2: | 1270 | @samp{f} and @samp{F} |
| 1271 | (analogously to @samp{r} and | ||
| 1272 | @samp{R}). | ||
| 1432 | 1273 | ||
| 1433 | How to enable automatic word-wrap when composing messages? | 1274 | Enter new headers above the line saying "--text follows |
| 1434 | 1275 | this line--", enter the text below the line. When ready | |
| 1276 | hit @samp{C-c C-c}, to send the message, | ||
| 1277 | if you want to finish it later hit @samp{C-c | ||
| 1278 | C-d} to save it in the drafts group, where you | ||
| 1279 | can start editing it again by saying @samp{D | ||
| 1280 | e}. | ||
| 1435 | 1281 | ||
| 1436 | Answer: | 1282 | @node [5.2] |
| 1283 | @subsubheading Question 5.2 | ||
| 1437 | 1284 | ||
| 1438 | Say | 1285 | How to enable automatic word-wrap when composing messages? |
| 1439 | 1286 | ||
| 1287 | @subsubheading Answer | ||
| 1288 | |||
| 1289 | Say | ||
| 1440 | 1290 | ||
| 1441 | @example | 1291 | @example |
| 1442 | (add-hook 'message-mode-hook | 1292 | (add-hook 'message-mode-hook |
| 1443 | (lambda () | 1293 | (lambda () |
| 1444 | (setq fill-column 72) | 1294 | (setq fill-column 72) |
| 1445 | (turn-on-auto-fill))) | 1295 | (turn-on-auto-fill))) |
| 1446 | @end example | 1296 | @end example |
| 1447 | |||
| 1448 | @noindent | 1297 | @noindent |
| 1449 | in ~/.gnus. You can reformat a paragraph by hitting | ||
| 1450 | @samp{M-q} (as usual) | ||
| 1451 | |||
| 1452 | @ifnottex | ||
| 1453 | @node [5.3], [5.4], [5.2], FAQ 5 - Composing messages | ||
| 1454 | @end ifnottex | ||
| 1455 | @subsubheading Question 5.3: | ||
| 1456 | 1298 | ||
| 1457 | How to set stuff like From, Organization, Reply-To, signature...? | 1299 | in ~/.gnus.el. You can reformat a paragraph by hitting |
| 1458 | 1300 | @samp{M-q} (as usual) | |
| 1459 | 1301 | ||
| 1460 | Answer: | 1302 | @node [5.3] |
| 1303 | @subsubheading Question 5.3 | ||
| 1461 | 1304 | ||
| 1462 | There are other ways, but you should use posting styles | 1305 | How to set stuff like From, Organization, Reply-To, signature...? |
| 1463 | for this. (See below why). | 1306 | |
| 1464 | This example should make the syntax clear: | 1307 | @subsubheading Answer |
| 1465 | 1308 | ||
| 1309 | There are other ways, but you should use posting styles | ||
| 1310 | for this. (See below why). | ||
| 1311 | This example should make the syntax clear: | ||
| 1466 | 1312 | ||
| 1467 | @example | 1313 | @example |
| 1468 | (setq gnus-posting-styles | 1314 | (setq gnus-posting-styles |
| @@ -1474,146 +1320,121 @@ Answer: | |||
| 1474 | ("X-SampleHeader" "foobar") | 1320 | ("X-SampleHeader" "foobar") |
| 1475 | (eval (setq some-variable "Foo bar"))))) | 1321 | (eval (setq some-variable "Foo bar"))))) |
| 1476 | @end example | 1322 | @end example |
| 1477 | |||
| 1478 | @noindent | 1323 | @noindent |
| 1479 | The ".*" means that this settings are the default ones | ||
| 1480 | (see below), valid values for the first element of the | ||
| 1481 | following lists are signature, signature-file, | ||
| 1482 | organization, address, name or body. The attribute name | ||
| 1483 | can also be a string. In that case, this will be used as | ||
| 1484 | a header name, and the value will be inserted in the | ||
| 1485 | headers of the article; if the value is `nil', the header | ||
| 1486 | name will be removed. You can also say (eval (foo bar)), | ||
| 1487 | then the function foo will be evaluated with argument bar | ||
| 1488 | and the result will be thrown away. | ||
| 1489 | |||
| 1490 | @ifnottex | ||
| 1491 | @node [5.4], [5.5], [5.3], FAQ 5 - Composing messages | ||
| 1492 | @end ifnottex | ||
| 1493 | @subsubheading Question 5.4: | ||
| 1494 | |||
| 1495 | Can I set things like From, Signature etc group based on the group I post too? | ||
| 1496 | |||
| 1497 | 1324 | ||
| 1498 | Answer: | 1325 | The ".*" means that this settings are the default ones |
| 1499 | 1326 | (see below), valid values for the first element of the | |
| 1500 | That's the strength of posting styles. Before, we used ".*" | 1327 | following lists are signature, signature-file, |
| 1501 | to set the default for all groups. You can use a regexp | 1328 | organization, address, name or body. The attribute name |
| 1502 | like "^gmane" and the following settings are only applied | 1329 | can also be a string. In that case, this will be used as |
| 1503 | to postings you send to the gmane hierarchy, use | 1330 | a header name, and the value will be inserted in the |
| 1504 | ".*binaries" instead and they will be applied to postings | 1331 | headers of the article; if the value is `nil', the header |
| 1505 | send to groups containing the string binaries in their | 1332 | name will be removed. You can also say (eval (foo bar)), |
| 1506 | name etc. | 1333 | then the function foo will be evaluated with argument bar |
| 1507 | 1334 | and the result will be thrown away. | |
| 1508 | 1335 | ||
| 1509 | You can instead of specifying a regexp specify a function | 1336 | @node [5.4] |
| 1510 | which is evaluated, only if it returns true, the | 1337 | @subsubheading Question 5.4 |
| 1511 | corresponding settings take effect. Two interesting | 1338 | |
| 1512 | candidates for this are message-news-p which returns t if | 1339 | Can I set things like From, Signature etc group based on the group I post too? |
| 1513 | the current Group is a newsgroup and the corresponding | 1340 | |
| 1514 | message-mail-p. | 1341 | @subsubheading Answer |
| 1515 | 1342 | ||
| 1516 | 1343 | That's the strength of posting styles. Before, we used ".*" | |
| 1517 | Note that all forms that match are applied, that means in | 1344 | to set the default for all groups. You can use a regexp |
| 1518 | the example below, when I post to | 1345 | like "^gmane" and the following settings are only applied |
| 1519 | gmane.mail.spam.spamassassin.general, the settings under | 1346 | to postings you send to the gmane hierarchy, use |
| 1520 | ".*" are applied and the settings under message-news-p and | 1347 | ".*binaries" instead and they will be applied to postings |
| 1521 | those under "^gmane" and those under | 1348 | send to groups containing the string binaries in their |
| 1522 | "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because | 1349 | name etc. |
| 1523 | of this put general settings at the top and specific ones | 1350 | |
| 1524 | at the bottom. | 1351 | You can instead of specifying a regexp specify a function |
| 1525 | 1352 | which is evaluated, only if it returns true, the | |
| 1353 | corresponding settings take effect. Two interesting | ||
| 1354 | candidates for this are message-news-p which returns t if | ||
| 1355 | the current Group is a newsgroup and the corresponding | ||
| 1356 | message-mail-p. | ||
| 1357 | |||
| 1358 | Note that all forms that match are applied, that means in | ||
| 1359 | the example below, when I post to | ||
| 1360 | gmane.mail.spam.spamassassin.general, the settings under | ||
| 1361 | ".*" are applied and the settings under message-news-p and | ||
| 1362 | those under "^gmane" and those under | ||
| 1363 | "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because | ||
| 1364 | of this put general settings at the top and specific ones | ||
| 1365 | at the bottom. | ||
| 1526 | 1366 | ||
| 1527 | @example | 1367 | @example |
| 1528 | (setq gnus-posting-styles | 1368 | (setq gnus-posting-styles |
| 1529 | '((".*" ;;default | 1369 | '((".*" ;;default |
| 1530 | (name "Frank Schmitt") | 1370 | (name "Frank Schmitt") |
| 1531 | (organization "Hamme net, kren mer och nimmi") | 1371 | (organization "Hamme net, kren mer och nimmi") |
| 1532 | (signature-file "~/.signature")) | 1372 | (signature-file "~/.signature") ) |
| 1533 | ((message-news-p) ;;Usenet news? | 1373 | ((message-news-p) ;;Usenet news? |
| 1534 | (address "mySpamTrap@@Frank-Schmitt.bla") | 1374 | (address "mySpamTrap@@Frank-Schmitt.bla") |
| 1535 | ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla")) | 1375 | ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla") ) |
| 1536 | ((message-mail-p) ;;mail? | 1376 | ((message-mail-p) ;;mail? |
| 1537 | (address "usedForMails@@Frank-Schmitt.bla")) | 1377 | (address "usedForMails@@Frank-Schmitt.bla") ) |
| 1538 | ("^gmane" ;;this is mail, too in fact | 1378 | ("^gmane" ;;this is mail, too in fact |
| 1539 | (address "usedForMails@@Frank-Schmitt.net") | 1379 | (address "usedForMails@@Frank-Schmitt.net") |
| 1540 | ("Reply-To" nil)) | 1380 | ("Reply-To" nil) ) |
| 1541 | ("^gmane.mail.spam.spamassassin.general$" | 1381 | ("^gmane.mail.spam.spamassassin.general$" |
| 1542 | (eval (setq mail-envelope-from "Azzrael@@rz-online.de")) | 1382 | (eval (setq mail-envelope-from "Azzrael@@rz-online.de")) |
| 1543 | (address "Azzrael@@rz-online.de")))) | 1383 | (address "Azzrael@@rz-online.de")) )) |
| 1544 | @end example | 1384 | @end example |
| 1545 | 1385 | @noindent | |
| 1546 | @ifnottex | ||
| 1547 | @node [5.5], [5.6], [5.4], FAQ 5 - Composing messages | ||
| 1548 | @end ifnottex | ||
| 1549 | @subsubheading Question 5.5: | ||
| 1550 | 1386 | ||
| 1551 | Is there a spell-checker? Perhaps even on-the-fly spell-checking? | 1387 | @node [5.5] |
| 1552 | 1388 | @subsubheading Question 5.5 | |
| 1553 | 1389 | ||
| 1554 | Answer: | 1390 | Is there a spell-checker? Perhaps even on-the-fly spell-checking? |
| 1555 | 1391 | ||
| 1556 | You can use ispell.el to spell-check stuff in Emacs. So the first | 1392 | @subsubheading Answer |
| 1557 | thing to do is to make sure that you've got either | ||
| 1558 | @itemize @bullet | ||
| 1559 | @item | ||
| 1560 | @uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell} | ||
| 1561 | or | ||
| 1562 | @item | ||
| 1563 | @uref{http://aspell.sourceforge.net/,aspell} | ||
| 1564 | @end itemize | ||
| 1565 | @noindent | ||
| 1566 | installed and in your Path. | ||
| 1567 | |||
| 1568 | Then you need | ||
| 1569 | @uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el,ispell.el} | ||
| 1570 | and for on-the-fly spell-checking | ||
| 1571 | @uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el,flyspell.el}. | ||
| 1572 | Ispell.el is shipped with Gnus Emacs and available through the Emacs | ||
| 1573 | package system, flyspell.el is shipped with Emacs and part of XEmacs | ||
| 1574 | text-modes package which is available through the package system, so | ||
| 1575 | there should be no need to install them manually. | ||
| 1576 | |||
| 1577 | 1393 | ||
| 1578 | Ispell.el assumes you use ispell, if you choose aspell say | 1394 | You can use ispell.el to spell-check stuff in Emacs. So the |
| 1579 | 1395 | first thing to do is to make sure that you've got either | |
| 1396 | @uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html, ispell} | ||
| 1397 | or @uref{http://aspell.sourceforge.net/, aspell} | ||
| 1398 | installed and in your Path. Then you need | ||
| 1399 | @uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el} | ||
| 1400 | and for on-the-fly spell-checking | ||
| 1401 | @uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}. | ||
| 1402 | Ispell.el is shipped with Emacs and available through the XEmacs package system, | ||
| 1403 | flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is | ||
| 1404 | available through the package system, so there should be no need to install them | ||
| 1405 | manually. | ||
| 1406 | |||
| 1407 | Ispell.el assumes you use ispell, if you choose aspell say | ||
| 1580 | 1408 | ||
| 1581 | @example | 1409 | @example |
| 1582 | (setq ispell-program-name "aspell") | 1410 | (setq ispell-program-name "aspell") |
| 1583 | @end example | 1411 | @end example |
| 1584 | |||
| 1585 | |||
| 1586 | @noindent | 1412 | @noindent |
| 1587 | in your Emacs configuration file. | ||
| 1588 | 1413 | ||
| 1414 | in your Emacs configuration file. | ||
| 1589 | 1415 | ||
| 1590 | If you want your outgoing messages to be spell-checked, say | 1416 | If you want your outgoing messages to be spell-checked, say |
| 1591 | |||
| 1592 | 1417 | ||
| 1593 | @example | 1418 | @example |
| 1594 | (add-hook 'message-send-hook 'ispell-message) | 1419 | (add-hook 'message-send-hook 'ispell-message) |
| 1595 | @end example | 1420 | @end example |
| 1596 | |||
| 1597 | @noindent | 1421 | @noindent |
| 1598 | In your ~/.gnus, if you prefer on-the-fly spell-checking say | 1422 | |
| 1599 | 1423 | In your ~/.gnus.el, if you prefer on-the-fly spell-checking say | |
| 1600 | 1424 | ||
| 1601 | @example | 1425 | @example |
| 1602 | (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) | 1426 | (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) |
| 1603 | @end example | 1427 | @end example |
| 1604 | 1428 | @noindent | |
| 1605 | @ifnottex | ||
| 1606 | @node [5.6], [5.7], [5.5], FAQ 5 - Composing messages | ||
| 1607 | @end ifnottex | ||
| 1608 | @subsubheading Question 5.6: | ||
| 1609 | 1429 | ||
| 1610 | Can I set the dictionary based on the group I'm posting to? | 1430 | @node [5.6] |
| 1611 | 1431 | @subsubheading Question 5.6 | |
| 1612 | 1432 | ||
| 1613 | Answer: | 1433 | Can I set the dictionary based on the group I'm posting to? |
| 1614 | 1434 | ||
| 1615 | Yes, say something like | 1435 | @subsubheading Answer |
| 1616 | 1436 | ||
| 1437 | Yes, say something like | ||
| 1617 | 1438 | ||
| 1618 | @example | 1439 | @example |
| 1619 | (add-hook 'gnus-select-group-hook | 1440 | (add-hook 'gnus-select-group-hook |
| @@ -1625,55 +1446,47 @@ Answer: | |||
| 1625 | (t | 1446 | (t |
| 1626 | (ispell-change-dictionary "english"))))) | 1447 | (ispell-change-dictionary "english"))))) |
| 1627 | @end example | 1448 | @end example |
| 1628 | |||
| 1629 | |||
| 1630 | @noindent | 1449 | @noindent |
| 1631 | in ~/.gnus. Change "^de\\." and "deutsch8" to something | ||
| 1632 | that suits your needs. | ||
| 1633 | 1450 | ||
| 1634 | @ifnottex | 1451 | in ~/.gnus.el. Change "^de\\." and "deutsch8" to something |
| 1635 | @node [5.7], [5.8], [5.6], FAQ 5 - Composing messages | 1452 | that suits your needs. |
| 1636 | @end ifnottex | ||
| 1637 | @subsubheading Question 5.7: | ||
| 1638 | 1453 | ||
| 1639 | Is there some kind of address-book, so I needn't remember | 1454 | @node [5.7] |
| 1640 | all those email addresses? | 1455 | @subsubheading Question 5.7 |
| 1641 | |||
| 1642 | 1456 | ||
| 1643 | Answer: | 1457 | Is there some kind of address-book, so I needn't remember |
| 1458 | all those email addresses? | ||
| 1644 | 1459 | ||
| 1645 | There's an very basic solution for this, mail aliases. | 1460 | @subsubheading Answer |
| 1646 | You can store your mail addresses in a ~/.mailrc file using a simple | 1461 | |
| 1647 | alias syntax: | 1462 | There's an very basic solution for this, mail aliases. |
| 1648 | 1463 | You can store your mail addresses in a ~/.mailrc file using a simple | |
| 1464 | alias syntax: | ||
| 1649 | 1465 | ||
| 1650 | @example | 1466 | @example |
| 1651 | alias al "Al <al@@english-heritage.bla>" | 1467 | alias al "Al <al@@english-heritage.bla>" |
| 1652 | @end example | 1468 | @end example |
| 1653 | |||
| 1654 | @noindent | 1469 | @noindent |
| 1655 | Then typing your alias (followed by a space or punctuation | ||
| 1656 | character) on a To: or Cc: line in the message buffer will | ||
| 1657 | cause Gnus to insert the full address for you. See the | ||
| 1658 | node "Mail Aliases" in Message (not Gnus) manual for | ||
| 1659 | details. | ||
| 1660 | |||
| 1661 | 1470 | ||
| 1662 | However, what you really want is the Insidious Big Brother | 1471 | Then typing your alias (followed by a space or punctuation |
| 1663 | Database bbdb. Get it through the XEmacs package system or from | 1472 | character) on a To: or Cc: line in the message buffer will |
| 1664 | @uref{http://bbdb.sourceforge.net/,bbdb's homepage}. | 1473 | cause Gnus to insert the full address for you. See the |
| 1665 | Now place the following in ~/.gnus, to activate bbdb for Gnus: | 1474 | node "Mail Aliases" in Message (not Gnus) manual for |
| 1666 | 1475 | details. | |
| 1476 | |||
| 1477 | However, what you really want is the Insidious Big Brother | ||
| 1478 | Database bbdb. Get it through the XEmacs package system or from | ||
| 1479 | @uref{http://bbdb.sourceforge.net/, bbdb's homepage}. | ||
| 1480 | Now place the following in ~/.gnus.el, to activate bbdb for Gnus: | ||
| 1667 | 1481 | ||
| 1668 | @example | 1482 | @example |
| 1669 | (require 'bbdb) | 1483 | (require 'bbdb) |
| 1670 | (bbdb-initialize 'gnus 'message) | 1484 | (bbdb-initialize 'gnus 'message) |
| 1671 | @end example | 1485 | @end example |
| 1672 | |||
| 1673 | @noindent | 1486 | @noindent |
| 1674 | Now you probably want some general bbdb configuration, | 1487 | |
| 1675 | place them in ~/.emacs: | 1488 | Now you probably want some general bbdb configuration, |
| 1676 | 1489 | place them in ~/.emacs: | |
| 1677 | 1490 | ||
| 1678 | @example | 1491 | @example |
| 1679 | (require 'bbdb) | 1492 | (require 'bbdb) |
| @@ -1689,56 +1502,50 @@ alias al "Al <al@@english-heritage.bla>" | |||
| 1689 | ;;No popup-buffers | 1502 | ;;No popup-buffers |
| 1690 | (setq bbdb-use-pop-up nil) | 1503 | (setq bbdb-use-pop-up nil) |
| 1691 | @end example | 1504 | @end example |
| 1692 | |||
| 1693 | @noindent | 1505 | @noindent |
| 1694 | Now you should be ready to go. Say @samp{M-x bbdb RET | ||
| 1695 | RET} to open a bbdb buffer showing all | ||
| 1696 | entries. Say @samp{c} to create a new | ||
| 1697 | entry, @samp{b} to search your BBDB and | ||
| 1698 | @samp{C-o} to add a new field to an | ||
| 1699 | entry. If you want to add a sender to the BBDB you can | ||
| 1700 | also just hit `:' on the posting in the summary buffer and | ||
| 1701 | you are done. When you now compose a new mail, | ||
| 1702 | hit @samp{TAB} to cycle through know | ||
| 1703 | recipients. | ||
| 1704 | |||
| 1705 | @ifnottex | ||
| 1706 | @node [5.8], [5.9], [5.7], FAQ 5 - Composing messages | ||
| 1707 | @end ifnottex | ||
| 1708 | @subsubheading Question 5.8: | ||
| 1709 | |||
| 1710 | Sometimes I see little images at the top of article | ||
| 1711 | buffer. What's that and how can I send one with my | ||
| 1712 | postings, too? | ||
| 1713 | |||
| 1714 | 1506 | ||
| 1715 | Answer: | 1507 | Now you should be ready to go. Say @samp{M-x bbdb RET |
| 1716 | 1508 | RET} to open a bbdb buffer showing all | |
| 1717 | Those images are called X-Faces. They are 48*48 pixel b/w | 1509 | entries. Say @samp{c} to create a new |
| 1718 | pictures, encoded in a header line. If you want to include | 1510 | entry, @samp{b} to search your BBDB and |
| 1719 | one in your posts, you've got to convert some image to a | 1511 | @samp{C-o} to add a new field to an |
| 1720 | X-Face. So fire up some image manipulation program (say | 1512 | entry. If you want to add a sender to the BBDB you can |
| 1721 | Gimp), open the image you want to include, cut out the | 1513 | also just hit `:' on the posting in the summary buffer and |
| 1722 | relevant part, reduce color depth to 1 bit, resize to | 1514 | you are done. When you now compose a new mail, |
| 1723 | 48*48 and save as bitmap. Now you should get the compface | 1515 | hit @samp{TAB} to cycle through know |
| 1724 | package from | 1516 | recipients. |
| 1725 | @uref{ftp://ftp.cs.indiana.edu:/pub/faces/,this site}. | 1517 | |
| 1726 | and create the actual X-face by saying | 1518 | @node [5.8] |
| 1727 | 1519 | @subsubheading Question 5.8 | |
| 1520 | |||
| 1521 | Sometimes I see little images at the top of article | ||
| 1522 | buffer. What's that and how can I send one with my | ||
| 1523 | postings, too? | ||
| 1524 | |||
| 1525 | @subsubheading Answer | ||
| 1526 | |||
| 1527 | Those images are called X-Faces. They are 48*48 pixel b/w | ||
| 1528 | pictures, encoded in a header line. If you want to include | ||
| 1529 | one in your posts, you've got to convert some image to a | ||
| 1530 | X-Face. So fire up some image manipulation program (say | ||
| 1531 | Gimp), open the image you want to include, cut out the | ||
| 1532 | relevant part, reduce color depth to 1 bit, resize to | ||
| 1533 | 48*48 and save as bitmap. Now you should get the compface | ||
| 1534 | package from | ||
| 1535 | @uref{ftp://ftp.cs.indiana.edu:/pub/faces/, this site}. | ||
| 1536 | and create the actual X-face by saying | ||
| 1728 | 1537 | ||
| 1729 | @example | 1538 | @example |
| 1730 | cat file.xbm | xbm2ikon |compface > file.face | 1539 | cat file.xbm | xbm2ikon | compface > file.face |
| 1731 | cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted | 1540 | cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted |
| 1732 | @end example | 1541 | @end example |
| 1733 | |||
| 1734 | @noindent | 1542 | @noindent |
| 1735 | If you can't use compface, there's an online X-face converter at@* | ||
| 1736 | @uref{http://www.dairiki.org/xface/}. If you use MS Windows, you | ||
| 1737 | could also use the WinFace program from | ||
| 1738 | @uref{http://www.xs4all.nl/~walterln/winface/}. | ||
| 1739 | 1543 | ||
| 1740 | Now you only have to tell Gnus to include the X-face in your postings | 1544 | If you can't use compface, there's an online X-face converter at |
| 1741 | by saying | 1545 | @uref{http://www.dairiki.org/xface/}. |
| 1546 | If you use MS Windows, you could also use the WinFace program from | ||
| 1547 | @uref{http://www.xs4all.nl/~walterln/winface/}. | ||
| 1548 | Now you only have to tell Gnus to include the X-face in your postings by saying | ||
| 1742 | 1549 | ||
| 1743 | @example | 1550 | @example |
| 1744 | (setq message-default-headers | 1551 | (setq message-default-headers |
| @@ -1747,33 +1554,28 @@ by saying | |||
| 1747 | (insert-file-contents "~/.xemacs/xface") | 1554 | (insert-file-contents "~/.xemacs/xface") |
| 1748 | (buffer-string))) | 1555 | (buffer-string))) |
| 1749 | @end example | 1556 | @end example |
| 1750 | |||
| 1751 | @noindent | 1557 | @noindent |
| 1752 | in ~/.gnus. | ||
| 1753 | |||
| 1754 | @ifnottex | ||
| 1755 | @node [5.9], [5.10], [5.8], FAQ 5 - Composing messages | ||
| 1756 | @end ifnottex | ||
| 1757 | @subsubheading Question 5.9: | ||
| 1758 | |||
| 1759 | Sometimes I accidentally hit r instead of f in | ||
| 1760 | newsgroups. Can Gnus warn me, when I'm replying by mail in | ||
| 1761 | newsgroups? | ||
| 1762 | |||
| 1763 | 1558 | ||
| 1764 | Answer: | 1559 | in ~/.gnus.el. |
| 1765 | 1560 | ||
| 1766 | Put this in ~/.gnus: | 1561 | @node [5.9] |
| 1767 | 1562 | @subsubheading Question 5.9 | |
| 1563 | |||
| 1564 | Sometimes I accidentally hit r instead of f in | ||
| 1565 | newsgroups. Can Gnus warn me, when I'm replying by mail in | ||
| 1566 | newsgroups? | ||
| 1567 | |||
| 1568 | @subsubheading Answer | ||
| 1569 | |||
| 1570 | Put this in ~/.gnus.el: | ||
| 1768 | 1571 | ||
| 1769 | @example | 1572 | @example |
| 1770 | (setq gnus-confirm-mail-reply-to-news t) | 1573 | (setq gnus-confirm-mail-reply-to-news t) |
| 1771 | @end example | 1574 | @end example |
| 1772 | |||
| 1773 | @noindent | 1575 | @noindent |
| 1774 | if you already use Gnus 5.10, if you still use 5.8.8 or | 1576 | |
| 1775 | 5.9 try this instead: | 1577 | if you already use Gnus 5.10, if you still use 5.8.8 or |
| 1776 | 1578 | 5.9 try this instead: | |
| 1777 | 1579 | ||
| 1778 | @example | 1580 | @example |
| 1779 | (eval-after-load "gnus-msg" | 1581 | (eval-after-load "gnus-msg" |
| @@ -1785,44 +1587,37 @@ Answer: | |||
| 1785 | (y-or-n-p "Really reply by mail to article author? ")) | 1587 | (y-or-n-p "Really reply by mail to article author? ")) |
| 1786 | ad-do-it)))) | 1588 | ad-do-it)))) |
| 1787 | @end example | 1589 | @end example |
| 1788 | 1590 | @noindent | |
| 1789 | @ifnottex | ||
| 1790 | @node [5.10], [5.11], [5.9], FAQ 5 - Composing messages | ||
| 1791 | @end ifnottex | ||
| 1792 | @subsubheading Question 5.10: | ||
| 1793 | 1591 | ||
| 1794 | How to tell Gnus not to generate a sender header? | 1592 | @node [5.10] |
| 1795 | 1593 | @subsubheading Question 5.10 | |
| 1796 | 1594 | ||
| 1797 | Answer: | 1595 | How to tell Gnus not to generate a sender header? |
| 1798 | 1596 | ||
| 1799 | Since 5.10 Gnus doesn't generate a sender header by | 1597 | @subsubheading Answer |
| 1800 | default. For older Gnus' try this in ~/.gnus: | 1598 | |
| 1801 | 1599 | Since 5.10 Gnus doesn't generate a sender header by | |
| 1600 | default. For older Gnus' try this in ~/.gnus.el: | ||
| 1802 | 1601 | ||
| 1803 | @example | 1602 | @example |
| 1804 | (eval-after-load "message" | 1603 | (eval-after-load "message" |
| 1805 | '(add-to-list 'message-syntax-checks '(sender . disabled))) | 1604 | '(add-to-list 'message-syntax-checks '(sender . disabled))) |
| 1806 | @end example | 1605 | @end example |
| 1807 | 1606 | @noindent | |
| 1808 | |||
| 1809 | @ifnottex | ||
| 1810 | @node [5.11], [5.12], [5.10], FAQ 5 - Composing messages | ||
| 1811 | @end ifnottex | ||
| 1812 | @subsubheading Question 5.11: | ||
| 1813 | 1607 | ||
| 1814 | I want gnus to locally store copies of my send mail and | 1608 | @node [5.11] |
| 1815 | news, how to do it? | 1609 | @subsubheading Question 5.11 |
| 1816 | |||
| 1817 | 1610 | ||
| 1818 | Answer: | 1611 | I want Gnus to locally store copies of my send mail and |
| 1612 | news, how to do it? | ||
| 1819 | 1613 | ||
| 1820 | You must set the variable gnus-message-archive-group to do | 1614 | @subsubheading Answer |
| 1821 | this. You can set it to a string giving the name of the | 1615 | |
| 1822 | group where the copies shall go or like in the example | 1616 | You must set the variable gnus-message-archive-group to do |
| 1823 | below use a function which is evaluated and which returns | 1617 | this. You can set it to a string giving the name of the |
| 1824 | the group to use. | 1618 | group where the copies shall go or like in the example |
| 1825 | 1619 | below use a function which is evaluated and which returns | |
| 1620 | the group to use. | ||
| 1826 | 1621 | ||
| 1827 | @example | 1622 | @example |
| 1828 | (setq gnus-message-archive-group | 1623 | (setq gnus-message-archive-group |
| @@ -1830,31 +1625,31 @@ Answer: | |||
| 1830 | "nnml:Send-News" | 1625 | "nnml:Send-News" |
| 1831 | "nnml:Send-Mail"))) | 1626 | "nnml:Send-Mail"))) |
| 1832 | @end example | 1627 | @end example |
| 1833 | 1628 | @noindent | |
| 1834 | |||
| 1835 | @ifnottex | ||
| 1836 | @node [5.12], , [5.11], FAQ 5 - Composing messages | ||
| 1837 | @end ifnottex | ||
| 1838 | @subsubheading Question 5.12: | ||
| 1839 | 1629 | ||
| 1840 | People tell me my Message-IDs are not correct, why | 1630 | @node [5.12] |
| 1841 | aren't they and how to fix it? | 1631 | @subsubheading Question 5.12 |
| 1842 | 1632 | ||
| 1633 | People tell me my Message-IDs are not correct, why | ||
| 1634 | aren't they and how to fix it? | ||
| 1843 | 1635 | ||
| 1844 | Answer: | 1636 | @subsubheading Answer |
| 1637 | |||
| 1638 | The message-ID is an unique identifier for messages you | ||
| 1639 | send. To make it unique, Gnus need to know which machine | ||
| 1640 | name to put after the "@@". If the name of the machine | ||
| 1641 | where Gnus is running isn't suitable (it probably isn't | ||
| 1642 | at most private machines) you can tell Gnus what to use | ||
| 1643 | by saying: | ||
| 1845 | 1644 | ||
| 1846 | The message-ID is an unique identifier for messages you | ||
| 1847 | send. To make it unique, Gnus need to know which machine | ||
| 1848 | name to put after the "@@". If the name of the machine | ||
| 1849 | where Gnus is running isn't suitable (it probably isn't | ||
| 1850 | at most private machines) you can tell Gnus what to use | ||
| 1851 | by saying | ||
| 1852 | @example | 1645 | @example |
| 1853 | (setq message-user-fqdn "yourmachine.yourdomain.tld") | 1646 | (setq message-user-fqdn "yourmachine.yourdomain.tld") |
| 1854 | @end example | 1647 | @end example |
| 1855 | @noindent | 1648 | @noindent |
| 1856 | in ~/.gnus. If you use Gnus 5.9 or ealier, you can use this | 1649 | |
| 1857 | instead (works for newer versions a well): | 1650 | in ~/.gnus.el. If you use Gnus 5.9 or ealier, you can use this |
| 1651 | instead (works for newer versions a well): | ||
| 1652 | |||
| 1858 | @example | 1653 | @example |
| 1859 | (eval-after-load "message" | 1654 | (eval-after-load "message" |
| 1860 | '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this! | 1655 | '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this! |
| @@ -1865,110 +1660,97 @@ instead (works for newer versions a well): | |||
| 1865 | "Return user's fully qualified domain name." | 1660 | "Return user's fully qualified domain name." |
| 1866 | fqdn)))) | 1661 | fqdn)))) |
| 1867 | @end example | 1662 | @end example |
| 1663 | @noindent | ||
| 1868 | 1664 | ||
| 1869 | If you have no idea what to insert for | 1665 | If you have no idea what to insert for |
| 1870 | "yourmachine.yourdomain.tld", you've got several | 1666 | "yourmachine.yourdomain.tld", you've got several |
| 1871 | choices. You can either ask your provider if he allows | 1667 | choices. You can either ask your provider if he allows |
| 1872 | you to use something like | 1668 | you to use something like |
| 1873 | yourUserName.userfqdn.provider.net, or you can use | 1669 | yourUserName.userfqdn.provider.net, or you can use |
| 1874 | somethingUnique.yourdomain.tld if you own the domain | 1670 | somethingUnique.yourdomain.tld if you own the domain |
| 1875 | yourdomain.tld, or you can register at a service which | 1671 | yourdomain.tld, or you can register at a service which |
| 1876 | gives private users a FQDN for free, e.g. | 1672 | gives private users a FQDN for free, e.g. |
| 1877 | @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}. | 1673 | @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}. |
| 1878 | (Sorry but this website is in German, if you know of an | 1674 | (Sorry but this website is in German, if you know of an |
| 1879 | English one offering the same, drop me a note). | 1675 | English one offering the same, drop me a note). |
| 1880 | 1676 | ||
| 1881 | 1677 | Finally you can tell Gnus not to generate a Message-ID | |
| 1882 | Finally you can tell Gnus not to generate a Message-ID | 1678 | for News at all (and letting the server do the job) by saying |
| 1883 | for News at all (and letting the server do the job) by saying | ||
| 1884 | |||
| 1885 | 1679 | ||
| 1886 | @example | 1680 | @example |
| 1887 | (setq message-required-news-headers | 1681 | (setq message-required-news-headers |
| 1888 | (remove' Message-ID message-required-news-headers)) | 1682 | (remove' Message-ID message-required-news-headers)) |
| 1889 | @end example | 1683 | @end example |
| 1890 | |||
| 1891 | @noindent | 1684 | @noindent |
| 1892 | you can also tell Gnus not to generate Message-IDs for mail by saying | 1685 | |
| 1893 | 1686 | you can also tell Gnus not to generate Message-IDs for mail by saying | |
| 1894 | 1687 | ||
| 1895 | @example | 1688 | @example |
| 1896 | (setq message-required-mail-headers | 1689 | (setq message-required-mail-headers |
| 1897 | (remove' Message-ID message-required-mail-headers)) | 1690 | (remove' Message-ID message-required-mail-headers)) |
| 1898 | @end example | 1691 | @end example |
| 1899 | |||
| 1900 | @noindent | 1692 | @noindent |
| 1901 | , however some mail servers don't generate proper | ||
| 1902 | Message-IDs, too, so test if your Mail Server behaves | ||
| 1903 | correctly by sending yourself a Mail and looking at the Message-ID. | ||
| 1904 | |||
| 1905 | 1693 | ||
| 1906 | @ifnottex | 1694 | , however some mail servers don't generate proper |
| 1907 | @node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions | 1695 | Message-IDs, too, so test if your Mail Server behaves |
| 1908 | @end ifnottex | 1696 | correctly by sending yourself a Mail and looking at the Message-ID. |
| 1697 | |||
| 1698 | @node FAQ 6 - Old messages | ||
| 1909 | @subsection Old messages | 1699 | @subsection Old messages |
| 1910 | 1700 | ||
| 1911 | @menu | 1701 | @menu |
| 1912 | * [6.1]:: How to import my old mail into Gnus? | 1702 | * [6.1]:: How to import my old mail into Gnus? |
| 1913 | * [6.2]:: How to archive interesting messages? | 1703 | * [6.2]:: How to archive interesting messages? |
| 1914 | * [6.3]:: How to search for a specific message? | 1704 | * [6.3]:: How to search for a specific message? |
| 1915 | * [6.4]:: How to get rid of old unwanted mail? | 1705 | * [6.4]:: How to get rid of old unwanted mail? |
| 1916 | * [6.5]:: I want that all read messages are expired (at least in some | 1706 | * [6.5]:: I want that all read messages are expired (at least in some |
| 1917 | groups). How to do it? | 1707 | groups). How to do it? |
| 1918 | * [6.6]:: I don't want expiration to delete my mails but to move them | 1708 | * [6.6]:: I don't want expiration to delete my mails but to move them |
| 1919 | to another group. | 1709 | to another group. |
| 1920 | @end menu | 1710 | @end menu |
| 1921 | 1711 | ||
| 1922 | @ifnottex | 1712 | @node [6.1] |
| 1923 | @node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages | 1713 | @subsubheading Question 6.1 |
| 1924 | @end ifnottex | 1714 | |
| 1925 | @subsubheading Question 6.1: | 1715 | How to import my old mail into Gnus? |
| 1926 | 1716 | ||
| 1927 | How to import my old mail into Gnus? | 1717 | @subsubheading Answer |
| 1928 | 1718 | ||
| 1929 | 1719 | The easiest way is to tell your old mail program to | |
| 1930 | Answer: | 1720 | export the messages in mbox format. Most Unix mailers |
| 1931 | 1721 | are able to do this, if you come from the MS Windows | |
| 1932 | The easiest way is to tell your old mail program to | 1722 | world, you may find tools at |
| 1933 | export the messages in mbox format. Most Unix mailers | 1723 | @uref{http://mbx2mbox.sourceforge.net/}. |
| 1934 | are able to do this, if you come from the MS Windows | 1724 | |
| 1935 | world, you may find tools at | 1725 | Now you've got to import this mbox file into Gnus. To do |
| 1936 | @uref{http://mbx2mbox.sourceforge.net/}. | 1726 | this, create a nndoc group based on the mbox file by |
| 1937 | 1727 | saying @samp{G f /path/file.mbox RET} in | |
| 1938 | 1728 | Group buffer. You now have read-only access to your | |
| 1939 | Now you've got to import this mbox file into Gnus. To do | 1729 | mail. If you want to import the messages to your normal |
| 1940 | this, create a nndoc group based on the mbox file by | 1730 | Gnus mail groups hierarchy, enter the nndoc group you've |
| 1941 | saying @samp{G f /path/file.mbox RET} in | 1731 | just created by saying @samp{C-u RET} |
| 1942 | Group buffer. You now have read-only access to your | 1732 | (thus making sure all messages are retrieved), mark all |
| 1943 | mail. If you want to import the messages to your normal | 1733 | messages by saying @samp{M P b} and |
| 1944 | Gnus mail groups hierarchy, enter the nndoc group you've | 1734 | either copy them to the desired group by saying |
| 1945 | just created by saying @samp{C-u RET} | 1735 | @samp{B c name.of.group RET} or send them |
| 1946 | (thus making sure all messages are retrieved), mark all | 1736 | through nnmail-split-methods (respool them) by saying |
| 1947 | messages by saying @samp{M P b} and | 1737 | @samp{B r}. |
| 1948 | either copy them to the desired group by saying | 1738 | |
| 1949 | @samp{B c name.of.group RET} or send them | 1739 | @node [6.2] |
| 1950 | through nnmail-split-methods (respool them) by saying | 1740 | @subsubheading Question 6.2 |
| 1951 | @samp{B r}. | 1741 | |
| 1952 | 1742 | How to archive interesting messages? | |
| 1953 | @ifnottex | 1743 | |
| 1954 | @node [6.2], [6.3], [6.1], FAQ 6 - Old messages | 1744 | @subsubheading Answer |
| 1955 | @end ifnottex | 1745 | |
| 1956 | @subsubheading Question 6.2: | 1746 | If you stumble across an interesting message, say in |
| 1957 | 1747 | gnu.emacs.gnus and want to archive it there are several | |
| 1958 | How to archive interesting messages? | 1748 | solutions. The first and easiest is to save it to a file |
| 1959 | 1749 | by saying @samp{O f}. However, wouldn't | |
| 1960 | 1750 | it be much more convenient to have more direct access to | |
| 1961 | Answer: | 1751 | the archived message from Gnus? If you say yes, put this |
| 1962 | 1752 | snippet by Frank Haun <pille3003@@fhaun.de> in | |
| 1963 | If you stumble across an interesting message, say in | 1753 | ~/.gnus.el: |
| 1964 | gnu.emacs.gnus and want to archive it there are several | ||
| 1965 | solutions. The first and easiest is to save it to a file | ||
| 1966 | by saying @samp{O f}. However, wouldn't | ||
| 1967 | it be much more convenient to have more direct access to | ||
| 1968 | the archived message from Gnus? If you say yes, put this | ||
| 1969 | snippet by Frank Haun <pille3003@@fhaun.de> in | ||
| 1970 | ~/.gnus: | ||
| 1971 | |||
| 1972 | 1754 | ||
| 1973 | @example | 1755 | @example |
| 1974 | (defun my-archive-article (&optional n) | 1756 | (defun my-archive-article (&optional n) |
| @@ -1987,624 +1769,531 @@ more then one article." | |||
| 1987 | (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) | 1769 | (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) |
| 1988 | (gnus-summary-copy-article n archive-name))) | 1770 | (gnus-summary-copy-article n archive-name))) |
| 1989 | @end example | 1771 | @end example |
| 1990 | |||
| 1991 | @noindent | 1772 | @noindent |
| 1992 | You can now say @samp{M-x | ||
| 1993 | my-archive-article} in summary buffer to | ||
| 1994 | archive the article under the cursor in a nnml | ||
| 1995 | group. (Change nnml to your preferred back end) | ||
| 1996 | |||
| 1997 | 1773 | ||
| 1998 | Of course you can also make sure the cache is enabled by saying | 1774 | You can now say @samp{M-x |
| 1999 | 1775 | my-archive-article} in summary buffer to | |
| 1776 | archive the article under the cursor in a nnml | ||
| 1777 | group. (Change nnml to your preferred back end) | ||
| 1778 | |||
| 1779 | Of course you can also make sure the cache is enabled by saying | ||
| 2000 | 1780 | ||
| 2001 | @example | 1781 | @example |
| 2002 | (setq gnus-use-cache t) | 1782 | (setq gnus-use-cache t) |
| 2003 | @end example | 1783 | @end example |
| 2004 | |||
| 2005 | @noindent | 1784 | @noindent |
| 2006 | then you only have to set either the tick or the dormant | ||
| 2007 | mark for articles you want to keep, setting the read | ||
| 2008 | mark will remove them from cache. | ||
| 2009 | |||
| 2010 | @ifnottex | ||
| 2011 | @node [6.3], [6.4], [6.2], FAQ 6 - Old messages | ||
| 2012 | @end ifnottex | ||
| 2013 | @subsubheading Question 6.3: | ||
| 2014 | |||
| 2015 | How to search for a specific message? | ||
| 2016 | |||
| 2017 | |||
| 2018 | Answer: | ||
| 2019 | |||
| 2020 | There are several ways for this, too. For a posting from | ||
| 2021 | a Usenet group the easiest solution is probably to ask | ||
| 2022 | @uref{http://groups.google.com,groups.google.com}, | ||
| 2023 | if you found the posting there, tell Google to display | ||
| 2024 | the raw message, look for the message-id, and say | ||
| 2025 | @samp{M-^ the@@message.id RET} in a | ||
| 2026 | summary buffer. | ||
| 2027 | Since Gnus 5.10 there's also a Gnus interface for | ||
| 2028 | groups.google.com which you can call with | ||
| 2029 | @samp{G W}) in group buffer. | ||
| 2030 | |||
| 2031 | |||
| 2032 | Another idea which works for both mail and news groups | ||
| 2033 | is to enter the group where the message you are | ||
| 2034 | searching is and use the standard Emacs search | ||
| 2035 | @samp{C-s}, it's smart enough to look at | ||
| 2036 | articles in collapsed threads, too. If you want to | ||
| 2037 | search bodies, too try @samp{M-s} | ||
| 2038 | instead. Further on there are the | ||
| 2039 | gnus-summary-limit-to-foo functions, which can help you, | ||
| 2040 | too. | ||
| 2041 | |||
| 2042 | 1785 | ||
| 2043 | Of course you can also use grep to search through your | 1786 | then you only have to set either the tick or the dormant |
| 2044 | local mail, but this is both slow for big archives and | 1787 | mark for articles you want to keep, setting the read |
| 2045 | inconvenient since you are not displaying the found mail | 1788 | mark will remove them from cache. |
| 2046 | in Gnus. Here comes nnir into action. Nnir is a front end | 1789 | |
| 2047 | to search engines like swish-e or swish++ and | 1790 | @node [6.3] |
| 2048 | others. You index your mail with one of those search | 1791 | @subsubheading Question 6.3 |
| 2049 | engines and with the help of nnir you can search trough | 1792 | |
| 2050 | the indexed mail and generate a temporary group with all | 1793 | How to search for a specific message? |
| 2051 | messages which met your search criteria. If this sound | 1794 | |
| 2052 | cool to you get nnir.el from the contrib directory of the Gnus | 1795 | @subsubheading Answer |
| 2053 | distribution or | 1796 | |
| 2054 | @uref{http://quimby.gnus.org/cgi-bin/cvsweb.cgi/~checkout~/gnus/contrib/nnir.el?rev=HEAD&content-type=text/plain} | 1797 | There are several ways for this, too. For a posting from |
| 2055 | Instructions on how to use it are at the top of the file. | 1798 | a Usenet group the easiest solution is probably to ask |
| 2056 | 1799 | @uref{http://groups.google.com, groups.google.com}, | |
| 2057 | @ifnottex | 1800 | if you found the posting there, tell Google to display |
| 2058 | @node [6.4], [6.5], [6.3], FAQ 6 - Old messages | 1801 | the raw message, look for the message-id, and say |
| 2059 | @end ifnottex | 1802 | @samp{M-^ the@@message.id RET} in a |
| 2060 | @subsubheading Question 6.4: | 1803 | summary buffer. |
| 2061 | 1804 | Since Gnus 5.10 there's also a Gnus interface for | |
| 2062 | How to get rid of old unwanted mail? | 1805 | groups.google.com which you can call with |
| 2063 | 1806 | @samp{G W}) in group buffer. | |
| 2064 | 1807 | ||
| 2065 | Answer: | 1808 | Another idea which works for both mail and news groups |
| 2066 | 1809 | is to enter the group where the message you are | |
| 2067 | You can of course just mark the mail you don't need | 1810 | searching is and use the standard Emacs search |
| 2068 | anymore by saying @samp{#} with point | 1811 | @samp{C-s}, it's smart enough to look at |
| 2069 | over the mail and then say @samp{B DEL} | 1812 | articles in collapsed threads, too. If you want to |
| 2070 | to get rid of them forever. You could also instead of | 1813 | search bodies, too try @samp{M-s} |
| 2071 | actually deleting them, send them to a junk-group by | 1814 | instead. Further on there are the |
| 2072 | saying @samp{B m nnml:trash-bin} which | 1815 | gnus-summary-limit-to-foo functions, which can help you, |
| 2073 | you clear from time to time, but both are not the intended | 1816 | too. |
| 2074 | way in Gnus. | 1817 | |
| 2075 | 1818 | Of course you can also use grep to search through your | |
| 2076 | 1819 | local mail, but this is both slow for big archives and | |
| 2077 | In Gnus, we let mail expire like news expires on a news | 1820 | inconvenient since you are not displaying the found mail |
| 2078 | server. That means you tell Gnus the message is | 1821 | in Gnus. Here comes nnir into action. Nnir is a front end |
| 2079 | expirable (you tell Gnus "I don't need this mail | 1822 | to search engines like swish-e or swish++ and |
| 2080 | anymore") by saying @samp{E} with point | 1823 | others. You index your mail with one of those search |
| 2081 | over the mail in summary buffer. Now when you leave the | 1824 | engines and with the help of nnir you can search trough |
| 2082 | group, Gnus looks at all messages which you marked as | 1825 | the indexed mail and generate a temporary group with all |
| 2083 | expirable before and if they are old enough (default is | 1826 | messages which met your search criteria. If this sound |
| 2084 | older than a week) they are deleted. | 1827 | cool to you get nnir.el from |
| 2085 | 1828 | @uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/} | |
| 2086 | @ifnottex | 1829 | or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}. |
| 2087 | @node [6.5], [6.6], [6.4], FAQ 6 - Old messages | 1830 | Instructions on how to use it are at the top of the file. |
| 2088 | @end ifnottex | 1831 | |
| 2089 | @subsubheading Question 6.5: | 1832 | @node [6.4] |
| 2090 | 1833 | @subsubheading Question 6.4 | |
| 2091 | I want that all read messages are expired (at least in | 1834 | |
| 2092 | some groups). How to do it? | 1835 | How to get rid of old unwanted mail? |
| 2093 | 1836 | ||
| 2094 | 1837 | @subsubheading Answer | |
| 2095 | Answer: | 1838 | |
| 2096 | 1839 | You can of course just mark the mail you don't need | |
| 2097 | If you want all read messages to be expired (e.g. in | 1840 | anymore by saying @samp{#} with point |
| 2098 | mailing lists where there's an online archive), you've | 1841 | over the mail and then say @samp{B DEL} |
| 2099 | got two choices: auto-expire and | 1842 | to get rid of them forever. You could also instead of |
| 2100 | total-expire. Auto-expire means, that every article | 1843 | actually deleting them, send them to a junk-group by |
| 2101 | which has no marks set and is selected for reading is | 1844 | saying @samp{B m nnml:trash-bin} which |
| 2102 | marked as expirable, Gnus hits @samp{E} | 1845 | you clear from time to time, but both are not the intended |
| 2103 | for you every time you read a message. Total-expire | 1846 | way in Gnus. |
| 2104 | follows a slightly different approach, here all article | 1847 | |
| 2105 | where the read mark is set are expirable. | 1848 | In Gnus, we let mail expire like news expires on a news |
| 2106 | 1849 | server. That means you tell Gnus the message is | |
| 2107 | 1850 | expirable (you tell Gnus "I don't need this mail | |
| 2108 | To activate auto-expire, include auto-expire in the | 1851 | anymore") by saying @samp{E} with point |
| 2109 | Group parameters for the group. (Hit @samp{G | 1852 | over the mail in summary buffer. Now when you leave the |
| 2110 | c} in summary buffer with point over the | 1853 | group, Gnus looks at all messages which you marked as |
| 2111 | group to change group parameters). For total-expire add | 1854 | expirable before and if they are old enough (default is |
| 2112 | total-expire to the group-parameters. | 1855 | older than a week) they are deleted. |
| 2113 | 1856 | ||
| 2114 | 1857 | @node [6.5] | |
| 2115 | Which method you choose is merely a matter of taste: | 1858 | @subsubheading Question 6.5 |
| 2116 | Auto-expire is faster, but it doesn't play together with | 1859 | |
| 2117 | Adaptive Scoring, so if you want to use this feature, | 1860 | I want that all read messages are expired (at least in |
| 2118 | you should use total-expire. | 1861 | some groups). How to do it? |
| 2119 | 1862 | ||
| 2120 | 1863 | @subsubheading Answer | |
| 2121 | If you want a message to be excluded from expiration in | 1864 | |
| 2122 | a group where total or auto expire is active, set either | 1865 | If you want all read messages to be expired (e.g. in |
| 2123 | tick (hit @samp{u}) or dormant mark (hit | 1866 | mailing lists where there's an online archive), you've |
| 2124 | @samp{u}), when you use auto-expire, you | 1867 | got two choices: auto-expire and |
| 2125 | can also set the read mark (hit | 1868 | total-expire. Auto-expire means, that every article |
| 2126 | @samp{d}). | 1869 | which has no marks set and is selected for reading is |
| 2127 | 1870 | marked as expirable, Gnus hits @samp{E} | |
| 2128 | @ifnottex | 1871 | for you every time you read a message. Total-expire |
| 2129 | @node [6.6], , [6.5], FAQ 6 - Old messages | 1872 | follows a slightly different approach, here all article |
| 2130 | @end ifnottex | 1873 | where the read mark is set are expirable. |
| 2131 | @subsubheading Question 6.6: | 1874 | |
| 2132 | 1875 | To activate auto-expire, include auto-expire in the | |
| 2133 | I don't want expiration to delete my mails but to move them | 1876 | Group parameters for the group. (Hit @samp{G |
| 2134 | to another group. | 1877 | c} in summary buffer with point over the |
| 2135 | 1878 | group to change group parameters). For total-expire add | |
| 2136 | 1879 | total-expire to the group-parameters. | |
| 2137 | Answer: | 1880 | |
| 2138 | 1881 | Which method you choose is merely a matter of taste: | |
| 2139 | Say something like this in ~/.gnus: | 1882 | Auto-expire is faster, but it doesn't play together with |
| 2140 | 1883 | Adaptive Scoring, so if you want to use this feature, | |
| 1884 | you should use total-expire. | ||
| 1885 | |||
| 1886 | If you want a message to be excluded from expiration in | ||
| 1887 | a group where total or auto expire is active, set either | ||
| 1888 | tick (hit @samp{u}) or dormant mark (hit | ||
| 1889 | @samp{u}), when you use auto-expire, you | ||
| 1890 | can also set the read mark (hit | ||
| 1891 | @samp{d}). | ||
| 1892 | |||
| 1893 | @node [6.6] | ||
| 1894 | @subsubheading Question 6.6 | ||
| 1895 | |||
| 1896 | I don't want expiration to delete my mails but to move them | ||
| 1897 | to another group. | ||
| 1898 | |||
| 1899 | @subsubheading Answer | ||
| 1900 | |||
| 1901 | Say something like this in ~/.gnus.el: | ||
| 2141 | 1902 | ||
| 2142 | @example | 1903 | @example |
| 2143 | (setq nnmail-expiry-target "nnml:expired") | 1904 | (setq nnmail-expiry-target "nnml:expired") |
| 2144 | @end example | 1905 | @end example |
| 2145 | |||
| 2146 | @noindent | 1906 | @noindent |
| 2147 | (If you want to change the value of nnmail-expiry-target | ||
| 2148 | on a per group basis see the question "How can I disable | ||
| 2149 | threading in some (e.g. mail-) groups, or set other | ||
| 2150 | variables specific for some groups?") | ||
| 2151 | |||
| 2152 | 1907 | ||
| 2153 | @ifnottex | 1908 | (If you want to change the value of nnmail-expiry-target |
| 2154 | @node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions | 1909 | on a per group basis see the question "How can I disable |
| 2155 | @end ifnottex | 1910 | threading in some (e.g. mail-) groups, or set other |
| 1911 | variables specific for some groups?") | ||
| 1912 | |||
| 1913 | @node FAQ 7 - Gnus in a dial-up environment | ||
| 2156 | @subsection Gnus in a dial-up environment | 1914 | @subsection Gnus in a dial-up environment |
| 2157 | 1915 | ||
| 2158 | @menu | 1916 | @menu |
| 2159 | * [7.1]:: I don't have a permanent connection to the net, how can I | 1917 | * [7.1]:: I don't have a permanent connection to the net, how can I |
| 2160 | minimize the time I've got to be connected? | 1918 | minimize the time I've got to be connected? |
| 2161 | * [7.2]:: So what was this thing about the Agent? | 1919 | * [7.2]:: So what was this thing about the Agent? |
| 2162 | * [7.3]:: I want to store article bodies on disk, too. How to do it? | 1920 | * [7.3]:: I want to store article bodies on disk, too. How to do it? |
| 2163 | * [7.4]:: How to tell Gnus not to try to send mails / postings while | 1921 | * [7.4]:: How to tell Gnus not to try to send mails / postings while |
| 2164 | I'm offline? | 1922 | I'm offline? |
| 2165 | @end menu | 1923 | @end menu |
| 2166 | 1924 | ||
| 2167 | 1925 | @node [7.1] | |
| 2168 | @ifnottex | 1926 | @subsubheading Question 7.1 |
| 2169 | @node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment | 1927 | |
| 2170 | @end ifnottex | 1928 | I don't have a permanent connection to the net, how can |
| 2171 | @subsubheading Question 7.1: | 1929 | I minimize the time I've got to be connected? |
| 2172 | 1930 | ||
| 2173 | I don't have a permanent connection to the net, how can | 1931 | @subsubheading Answer |
| 2174 | I minimize the time I've got to be connected? | 1932 | |
| 2175 | 1933 | You've got basically two options: Either you use the | |
| 2176 | 1934 | Gnus Agent (see below) for this, or you can install | |
| 2177 | Answer: | 1935 | programs which fetch your news and mail to your local |
| 2178 | 1936 | disk and Gnus reads the stuff from your local | |
| 2179 | You've got basically two options: Either you use the | 1937 | machine. |
| 2180 | Gnus Agent (see below) for this, or you can install | 1938 | |
| 2181 | programs which fetch your news and mail to your local | 1939 | If you want to follow the second approach, you need a |
| 2182 | disk and Gnus reads the stuff from your local | 1940 | program which fetches news and offers them to Gnus, a |
| 2183 | machine. | 1941 | program which does the same for mail and a program which |
| 2184 | 1942 | receives the mail you write from Gnus and sends them | |
| 2185 | 1943 | when you're online. | |
| 2186 | If you want to follow the second approach, you need a | 1944 | |
| 2187 | program which fetches news and offers them to Gnus, a | 1945 | Let's talk about Unix systems first: For the news part, |
| 2188 | program which does the same for mail and a program which | 1946 | the easiest solution is a small nntp server like |
| 2189 | receives the mail you write from Gnus and sends them | 1947 | @uref{http://www.leafnode.org/, Leafnode} or |
| 2190 | when you're online. | 1948 | @uref{http://infa.abo.fi/~patrik/sn/, sn}, |
| 2191 | 1949 | of course you can also install a full featured news | |
| 2192 | 1950 | server like | |
| 2193 | Let's talk about Unix systems first: For the news part, the easiest | 1951 | @uref{http://www.isc.org/products/INN/, inn}. |
| 2194 | solution is a small nntp server like | 1952 | Then you want to fetch your Mail, popular choices |
| 2195 | @uref{http://www.leafnode.org/,Leafnode} or | 1953 | are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail} |
| 2196 | @uref{http://infa.abo.fi/~patrik/sn/,sn}, of course you can also | 1954 | and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}. |
| 2197 | install a full featured news server like | 1955 | You should tell those to write the mail to your disk and |
| 2198 | @uref{http://www.isc.org/products/INN/,inn}. | 1956 | Gnus to read it from there. Last but not least the mail |
| 2199 | 1957 | sending part: This can be done with every MTA like | |
| 2200 | Then you want to fetch your Mail, popular choices are | 1958 | @uref{http://www.sendmail.org/, sendmail}, |
| 2201 | @itemize @bullet | 1959 | @uref{http://www.qmail.org/, postfix}, |
| 2202 | @item | 1960 | @uref{http://www.exim.org/, exim} or |
| 2203 | @uref{http://www.catb.org/~esr/fetchmail/,fetchmail} and | 1961 | @uref{http://www.qmail.org/, qmail}. |
| 2204 | @item | 1962 | |
| 2205 | @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}. | 1963 | On windows boxes I'd vote for |
| 2206 | @end itemize | 1964 | @uref{http://www.tglsoft.de/, Hamster}, |
| 2207 | You should tell those to write the mail to your disk and Gnus to read | 1965 | it's a small freeware, open-source program which fetches |
| 2208 | it from there. Last but not least the mail sending part: This can be | 1966 | your mail and news from remote servers and offers them |
| 2209 | done with every MTA like @uref{http://www.sendmail.org/,sendmail}, | 1967 | to Gnus (or any other mail and/or news reader) via nntp |
| 2210 | @uref{http://www.qmail.org/,postfix}, @uref{http://www.exim.org/,exim} | 1968 | respectively POP3 or IMAP. It also includes a smtp |
| 2211 | or @uref{http://www.qmail.org/,qmail}. | 1969 | server for receiving mails from Gnus. |
| 2212 | 1970 | ||
| 2213 | 1971 | @node [7.2] | |
| 2214 | On windows boxes I'd vote for | 1972 | @subsubheading Question 7.2 |
| 2215 | @uref{http://www.tglsoft.de/,Hamster}, | 1973 | |
| 2216 | it's a small freeware, open-source program which fetches | 1974 | So what was this thing about the Agent? |
| 2217 | your mail and news from remote servers and offers them | 1975 | |
| 2218 | to Gnus (or any other mail and/or news reader) via nntp | 1976 | @subsubheading Answer |
| 2219 | respectively POP3 or IMAP. It also includes a smtp | 1977 | |
| 2220 | server for receiving mails from Gnus. | 1978 | The Gnus agent is part of Gnus, it allows you to fetch |
| 2221 | 1979 | mail and news and store them on disk for reading them | |
| 2222 | @ifnottex | 1980 | later when you're offline. It kind of mimics offline |
| 2223 | @node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment | 1981 | newsreaders like e.g. Forte Agent. If you want to use |
| 2224 | @end ifnottex | 1982 | the Agent place the following in ~/.gnus.el if you are |
| 2225 | @subsubheading Question 7.2: | 1983 | still using 5.8.8 or 5.9 (it's the default since 5.10): |
| 2226 | |||
| 2227 | So what was this thing about the Agent? | ||
| 2228 | |||
| 2229 | |||
| 2230 | Answer: | ||
| 2231 | |||
| 2232 | The Gnus agent is part of Gnus, it allows you to fetch | ||
| 2233 | mail and news and store them on disk for reading them | ||
| 2234 | later when you're offline. It kind of mimics offline | ||
| 2235 | newsreaders like e.g. Forte Agent. If you want to use | ||
| 2236 | the Agent place the following in ~/.gnus if you are | ||
| 2237 | still using 5.8.8 or 5.9 (it's the default since 5.10): | ||
| 2238 | |||
| 2239 | 1984 | ||
| 2240 | @example | 1985 | @example |
| 2241 | (setq gnus-agent t) | 1986 | (setq gnus-agent t) |
| 2242 | @end example | 1987 | @end example |
| 2243 | 1988 | @noindent | |
| 2244 | 1989 | ||
| 2245 | Now you've got to select the servers whose groups can be | 1990 | Now you've got to select the servers whose groups can be |
| 2246 | stored locally. To do this, open the server buffer | 1991 | stored locally. To do this, open the server buffer |
| 2247 | (that is press @samp{^} while in the | 1992 | (that is press @samp{^} while in the |
| 2248 | group buffer). Now select a server by moving point to | 1993 | group buffer). Now select a server by moving point to |
| 2249 | the line naming that server. Finally, agentize the | 1994 | the line naming that server. Finally, agentize the |
| 2250 | server by typing @samp{J a}. If you | 1995 | server by typing @samp{J a}. If you |
| 2251 | make a mistake, or change your mind, you can undo this | 1996 | make a mistake, or change your mind, you can undo this |
| 2252 | action by typing @samp{J r}. When | 1997 | action by typing @samp{J r}. When |
| 2253 | you're done, type 'q' to return to the group buffer. | 1998 | you're done, type 'q' to return to the group buffer. |
| 2254 | Now the next time you enter a group on a agentized | 1999 | Now the next time you enter a group on a agentized |
| 2255 | server, the headers will be stored on disk and read from | 2000 | server, the headers will be stored on disk and read from |
| 2256 | there the next time you enter the group. | 2001 | there the next time you enter the group. |
| 2257 | 2002 | ||
| 2258 | @ifnottex | 2003 | @node [7.3] |
| 2259 | @node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment | 2004 | @subsubheading Question 7.3 |
| 2260 | @end ifnottex | 2005 | |
| 2261 | @subsubheading Question 7.3: | 2006 | I want to store article bodies on disk, too. How to do it? |
| 2007 | |||
| 2008 | @subsubheading Answer | ||
| 2009 | |||
| 2010 | You can tell the agent to automatically fetch the bodies | ||
| 2011 | of articles which fulfill certain predicates, this is | ||
| 2012 | done in a special buffer which can be reached by | ||
| 2013 | saying @samp{J c} in group | ||
| 2014 | buffer. Please refer to the documentation for | ||
| 2015 | information which predicates are possible and how | ||
| 2016 | exactly to do it. | ||
| 2017 | |||
| 2018 | Further on you can tell the agent manually which | ||
| 2019 | articles to store on disk. There are two ways to do | ||
| 2020 | this: Number one: In the summary buffer, process mark a | ||
| 2021 | set of articles that shall be stored in the agent by | ||
| 2022 | saying @samp{#} with point over the | ||
| 2023 | article and then type @samp{J s}. The | ||
| 2024 | other possibility is to set, again in the summary | ||
| 2025 | buffer, downloadable (%) marks for the articles you | ||
| 2026 | want by typing @samp{@@} with point over | ||
| 2027 | the article and then typing @samp{J u}. | ||
| 2028 | What's the difference? Well, process marks are erased as | ||
| 2029 | soon as you exit the summary buffer while downloadable | ||
| 2030 | marks are permanent. You can actually set downloadable | ||
| 2031 | marks in several groups then use fetch session ('J s' in | ||
| 2032 | the GROUP buffer) to fetch all of those articles. The | ||
| 2033 | only downside is that fetch session also fetches all of | ||
| 2034 | the headers for every selected group on an agentized | ||
| 2035 | server. Depending on the volume of headers, the initial | ||
| 2036 | fetch session could take hours. | ||
| 2037 | |||
| 2038 | @node [7.4] | ||
| 2039 | @subsubheading Question 7.4 | ||
| 2040 | |||
| 2041 | How to tell Gnus not to try to send mails / postings | ||
| 2042 | while I'm offline? | ||
| 2043 | |||
| 2044 | @subsubheading Answer | ||
| 2045 | |||
| 2046 | All you've got to do is to tell Gnus when you are online | ||
| 2047 | (plugged) and when you are offline (unplugged), the rest | ||
| 2048 | works automatically. You can toggle plugged/unplugged | ||
| 2049 | state by saying @samp{J j} in group | ||
| 2050 | buffer. To start Gnus unplugged say @samp{M-x | ||
| 2051 | gnus-unplugged} instead of | ||
| 2052 | @samp{M-x gnus}. Note that for this to | ||
| 2053 | work, the agent must be active. | ||
| 2054 | |||
| 2055 | @node FAQ 8 - Getting help | ||
| 2056 | @subsection Getting help | ||
| 2262 | 2057 | ||
| 2263 | I want to store article bodies on disk, too. How to do it? | 2058 | @menu |
| 2264 | 2059 | * [8.1]:: How to find information and help inside Emacs? | |
| 2060 | * [8.2]:: I can't find anything in the Gnus manual about X (e.g. | ||
| 2061 | attachments, PGP, MIME...), is it not documented? | ||
| 2062 | * [8.3]:: Which websites should I know? | ||
| 2063 | * [8.4]:: Which mailing lists and newsgroups are there? | ||
| 2064 | * [8.5]:: Where to report bugs? | ||
| 2065 | * [8.6]:: I need real-time help, where to find it? | ||
| 2066 | @end menu | ||
| 2265 | 2067 | ||
| 2266 | Answer: | 2068 | @node [8.1] |
| 2069 | @subsubheading Question 8.1 | ||
| 2267 | 2070 | ||
| 2268 | You can tell the agent to automatically fetch the bodies | 2071 | How to find information and help inside Emacs? |
| 2269 | of articles which fulfill certain predicates, this is | ||
| 2270 | done in a special buffer which can be reached by | ||
| 2271 | saying @samp{J c} in group | ||
| 2272 | buffer. Please refer to the documentation for | ||
| 2273 | information which predicates are possible and how | ||
| 2274 | exactly to do it. | ||
| 2275 | |||
| 2276 | 2072 | ||
| 2277 | Further on you can tell the agent manually which | 2073 | @subsubheading Answer |
| 2278 | articles to store on disk. There are two ways to do | ||
| 2279 | this: Number one: In the summary buffer, process mark a | ||
| 2280 | set of articles that shall be stored in the agent by | ||
| 2281 | saying @samp{#} with point over the | ||
| 2282 | article and then type @samp{J s}. The | ||
| 2283 | other possibility is to set, again in the summary | ||
| 2284 | buffer, downloadable (%) marks for the articles you | ||
| 2285 | want by typing @samp{@@} with point over | ||
| 2286 | the article and then typing @samp{J u}. | ||
| 2287 | What's the difference? Well, process marks are erased as | ||
| 2288 | soon as you exit the summary buffer while downloadable | ||
| 2289 | marks are permanent. You can actually set downloadable | ||
| 2290 | marks in several groups then use fetch session ('J s' in | ||
| 2291 | the GROUP buffer) to fetch all of those articles. The | ||
| 2292 | only downside is that fetch session also fetches all of | ||
| 2293 | the headers for every selected group on an agentized | ||
| 2294 | server. Depending on the volume of headers, the initial | ||
| 2295 | fetch session could take hours. | ||
| 2296 | |||
| 2297 | @ifnottex | ||
| 2298 | @node [7.4], , [7.3], FAQ 7 - Gnus in a dial-up environment | ||
| 2299 | @end ifnottex | ||
| 2300 | @subsubheading Question 7.4: | ||
| 2301 | 2074 | ||
| 2302 | How to tell Gnus not to try to send mails / postings | 2075 | The first stop should be the Gnus manual (Say |
| 2303 | while I'm offline? | 2076 | @samp{C-h i d m Gnus RET} to start the |
| 2304 | 2077 | Gnus manual, then walk through the menus or do a | |
| 2078 | full-text search with @samp{s}). Then | ||
| 2079 | there are the general Emacs help commands starting with | ||
| 2080 | C-h, type @samp{C-h ? ?} to get a list | ||
| 2081 | of all available help commands and their meaning. Finally | ||
| 2082 | @samp{M-x apropos-command} lets you | ||
| 2083 | search through all available functions and @samp{M-x | ||
| 2084 | apropos} searches the bound variables. | ||
| 2305 | 2085 | ||
| 2306 | Answer: | 2086 | @node [8.2] |
| 2087 | @subsubheading Question 8.2 | ||
| 2307 | 2088 | ||
| 2308 | All you've got to do is to tell Gnus when you are online | 2089 | I can't find anything in the Gnus manual about X |
| 2309 | (plugged) and when you are offline (unplugged), the rest | 2090 | (e.g. attachments, PGP, MIME...), is it not documented? |
| 2310 | works automatically. You can toggle plugged/unplugged | ||
| 2311 | state by saying @samp{J j} in group | ||
| 2312 | buffer. To start Gnus unplugged say @samp{M-x | ||
| 2313 | gnus-unplugged} instead of | ||
| 2314 | @samp{M-x gnus}. Note that for this to | ||
| 2315 | work, the agent must be active. | ||
| 2316 | |||
| 2317 | 2091 | ||
| 2318 | @ifnottex | 2092 | @subsubheading Answer |
| 2319 | @node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions | ||
| 2320 | @end ifnottex | ||
| 2321 | @subsection Getting help | ||
| 2322 | 2093 | ||
| 2323 | @menu | 2094 | There's not only the Gnus manual but also the manuals |
| 2324 | * [8.1]:: How to find information and help inside Emacs? | 2095 | for message, emacs-mime, sieve and pgg. Those packages |
| 2325 | * [8.2]:: I can't find anything in the Gnus manual about X | 2096 | are distributed with Gnus and used by Gnus but aren't |
| 2326 | (e.g. attachments, PGP, MIME...), is it not documented? | 2097 | really part of core Gnus, so they are documented in |
| 2327 | * [8.3]:: Which websites should I know? | 2098 | different info files, you should have a look in those |
| 2328 | * [8.4]:: Which mailing lists and newsgroups are there? | 2099 | manuals, too. |
| 2329 | * [8.5]:: Where to report bugs? | ||
| 2330 | * [8.6]:: I need real-time help, where to find it? | ||
| 2331 | @end menu | ||
| 2332 | 2100 | ||
| 2333 | @ifnottex | 2101 | @node [8.3] |
| 2334 | @node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help | 2102 | @subsubheading Question 8.3 |
| 2335 | @end ifnottex | ||
| 2336 | @subsubheading Question 8.1: | ||
| 2337 | 2103 | ||
| 2338 | How to find information and help inside Emacs? | 2104 | Which websites should I know? |
| 2339 | |||
| 2340 | 2105 | ||
| 2341 | Answer: | 2106 | @subsubheading Answer |
| 2342 | |||
| 2343 | The first stop should be the Gnus manual (Say | ||
| 2344 | @samp{C-h i d m Gnus RET} to start the | ||
| 2345 | Gnus manual, then walk through the menus or do a | ||
| 2346 | full-text search with @samp{s}). Then | ||
| 2347 | there are the general Emacs help commands starting with | ||
| 2348 | C-h, type @samp{C-h ? ?} to get a list | ||
| 2349 | of all available help commands and their meaning. Finally | ||
| 2350 | @samp{M-x apropos-command} lets you | ||
| 2351 | search through all available functions and @samp{M-x | ||
| 2352 | apropos} searches the bound variables. | ||
| 2353 | |||
| 2354 | @ifnottex | ||
| 2355 | @node [8.2], [8.3], [8.1], FAQ 8 - Getting help | ||
| 2356 | @end ifnottex | ||
| 2357 | @subsubheading Question 8.2: | ||
| 2358 | 2107 | ||
| 2359 | I can't find anything in the Gnus manual about X | 2108 | The two most important ones are the |
| 2360 | (e.g. attachments, PGP, MIME...), is it not documented? | 2109 | @uref{http://www.gnus.org, official Gnus website}. |
| 2361 | 2110 | and it's sister site | |
| 2111 | @uref{http://my.gnus.org, my.gnus.org (MGO)}, | ||
| 2112 | hosting an archive of lisp snippets, howtos, a (not | ||
| 2113 | really finished) tutorial and this FAQ. | ||
| 2362 | 2114 | ||
| 2363 | Answer: | 2115 | Tell me about other sites which are interesting. |
| 2364 | 2116 | ||
| 2365 | There's not only the Gnus manual but also the manuals | 2117 | @node [8.4] |
| 2366 | for message, emacs-mime, sieve and pgg. Those packages | 2118 | @subsubheading Question 8.4 |
| 2367 | are distributed with Gnus and used by Gnus but aren't | ||
| 2368 | really part of core Gnus, so they are documented in | ||
| 2369 | different info files, you should have a look in those | ||
| 2370 | manuals, too. | ||
| 2371 | |||
| 2372 | @ifnottex | ||
| 2373 | @node [8.3], [8.4], [8.2], FAQ 8 - Getting help | ||
| 2374 | @end ifnottex | ||
| 2375 | @subsubheading Question 8.3: | ||
| 2376 | 2119 | ||
| 2377 | Which websites should I know? | 2120 | Which mailing lists and newsgroups are there? |
| 2378 | |||
| 2379 | 2121 | ||
| 2380 | Answer: | 2122 | @subsubheading Answer |
| 2381 | 2123 | ||
| 2382 | The two most important ones are the | 2124 | There's the newsgroup gnu.emacs.gnus (pull it from |
| 2383 | @uref{http://www.gnus.org,official Gnus website}. | 2125 | e.g. news.gnus.org) which deals with general questions and the |
| 2384 | and it's sister site | 2126 | ding mailing list (ding@@gnus.org) dealing with development of |
| 2385 | @uref{http://my.gnus.org,my.gnus.org (MGO)}, | 2127 | Gnus. You can read the ding list via NNTP, too under the name |
| 2386 | hosting an archive of lisp snippets, howtos, a (not | 2128 | gmane.emacs.gnus.general from news.gmane.org. |
| 2387 | really finished) tutorial and this FAQ. | ||
| 2388 | |||
| 2389 | 2129 | ||
| 2390 | Tell me about other sites which are interesting. | 2130 | If you want to stay in the big8, |
| 2391 | 2131 | news.software.newssreaders is also read by some Gnus | |
| 2392 | @ifnottex | 2132 | users (but chances for qualified help are much better in |
| 2393 | @node [8.4], [8.5], [8.3], FAQ 8 - Getting help | 2133 | the above groups) and if you speak German, there's |
| 2394 | @end ifnottex | 2134 | de.comm.software.gnus. |
| 2395 | @subsubheading Question 8.4: | ||
| 2396 | 2135 | ||
| 2397 | Which mailing lists and newsgroups are there? | 2136 | @node [8.5] |
| 2398 | 2137 | @subsubheading Question 8.5 | |
| 2399 | 2138 | ||
| 2400 | Answer: | 2139 | Where to report bugs? |
| 2401 | 2140 | ||
| 2402 | There's the newsgroup gnu.emacs.gnus (pull it from | 2141 | @subsubheading Answer |
| 2403 | e.g. news.gnus.org) which deals with general questions | ||
| 2404 | and the ding mailing list (ding@@gnus.org) dealing with | ||
| 2405 | development of Gnus. You can read the ding list via | ||
| 2406 | NNTP, too under the name gnus.ding from news.gnus.org. | ||
| 2407 | |||
| 2408 | 2142 | ||
| 2409 | If you want to stay in the big8, | 2143 | Say @samp{M-x gnus-bug}, this will start |
| 2410 | news.software.newssreaders is also read by some Gnus | 2144 | a message to the |
| 2411 | users (but chances for qualified help are much better in | 2145 | @email{bugs@@gnus.org, gnus bug mailing list} |
| 2412 | the above groups) and if you speak German, there's | 2146 | including information about your environment which make |
| 2413 | de.comm.software.gnus. | 2147 | it easier to help you. |
| 2414 | |||
| 2415 | @ifnottex | ||
| 2416 | @node [8.5], [8.6], [8.4], FAQ 8 - Getting help | ||
| 2417 | @end ifnottex | ||
| 2418 | @subsubheading Question 8.5: | ||
| 2419 | 2148 | ||
| 2420 | Where to report bugs? | 2149 | @node [8.6] |
| 2421 | 2150 | @subsubheading Question 8.6 | |
| 2422 | 2151 | ||
| 2423 | Answer: | 2152 | I need real-time help, where to find it? |
| 2424 | 2153 | ||
| 2425 | Say @samp{M-x gnus-bug}, this will start a message to the | 2154 | @subsubheading Answer |
| 2426 | @email{bugs@@gnus.org,gnus bug mailing list} including information | ||
| 2427 | about your environment which make it easier to help you. | ||
| 2428 | |||
| 2429 | @ifnottex | ||
| 2430 | @node [8.6], , [8.5], FAQ 8 - Getting help | ||
| 2431 | @end ifnottex | ||
| 2432 | @subsubheading Question 8.6: | ||
| 2433 | 2155 | ||
| 2434 | I need real-time help, where to find it? | 2156 | Point your IRC client to irc.my.gnus.org channel |
| 2435 | 2157 | #mygnus. Don't be afraid if people there speak German, | |
| 2436 | 2158 | they are willing and capable of switching to | |
| 2437 | Answer: | 2159 | English when people from outside Germany enter. |
| 2438 | |||
| 2439 | Point your IRC client to irc.my.gnus.org channel | ||
| 2440 | #mygnus. Don't be afraid if people there speak German, | ||
| 2441 | they are willing and capable of switching to | ||
| 2442 | English when people from outside Germany enter. | ||
| 2443 | |||
| 2444 | 2160 | ||
| 2445 | @ifnottex | 2161 | @node FAQ 9 - Tuning Gnus |
| 2446 | @node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions | ||
| 2447 | @end ifnottex | ||
| 2448 | @subsection Tuning Gnus | 2162 | @subsection Tuning Gnus |
| 2449 | 2163 | ||
| 2450 | @menu | 2164 | @menu |
| 2451 | * [9.1]:: Starting Gnus is really slow, how to speed it up? | 2165 | * [9.1]:: Starting Gnus is really slow, how to speed it up? |
| 2452 | * [9.2]:: How to speed up the process of entering a group? | 2166 | * [9.2]:: How to speed up the process of entering a group? |
| 2453 | * [9.3]:: Sending mail becomes slower and slower, what's up? | 2167 | * [9.3]:: Sending mail becomes slower and slower, what's up? |
| 2454 | @end menu | 2168 | @end menu |
| 2455 | 2169 | ||
| 2456 | @ifnottex | 2170 | @node [9.1] |
| 2457 | @node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus | 2171 | @subsubheading Question 9.1 |
| 2458 | @end ifnottex | ||
| 2459 | @subsubheading Question 9.1: | ||
| 2460 | 2172 | ||
| 2461 | Starting Gnus is really slow, how to speed it up? | 2173 | Starting Gnus is really slow, how to speed it up? |
| 2462 | |||
| 2463 | 2174 | ||
| 2464 | Answer: | 2175 | @subsubheading Answer |
| 2465 | 2176 | ||
| 2466 | The reason for this could be the way Gnus reads it's | 2177 | The reason for this could be the way Gnus reads it's |
| 2467 | active file, see the node "The Active File" in the Gnus | 2178 | active file, see the node "The Active File" in the Gnus |
| 2468 | manual for things you might try to speed the process up. | 2179 | manual for things you might try to speed the process up. |
| 2469 | An other idea would be to byte compile your ~/.gnus (say | 2180 | An other idea would be to byte compile your ~/.gnus.el (say |
| 2470 | @samp{M-x byte-compile-file RET ~/.gnus | 2181 | @samp{M-x byte-compile-file RET ~/.gnus.el |
| 2471 | RET} to do it). Finally, if you have require | 2182 | RET} to do it). Finally, if you have require |
| 2472 | statements in your .gnus, you could replace them with | 2183 | statements in your .gnus, you could replace them with |
| 2473 | eval-after-load, which loads the stuff not at startup | 2184 | eval-after-load, which loads the stuff not at startup |
| 2474 | time, but when it's needed. Say you've got this in your | 2185 | time, but when it's needed. Say you've got this in your |
| 2475 | ~/.gnus: | 2186 | ~/.gnus.el: |
| 2476 | |||
| 2477 | 2187 | ||
| 2478 | @example | 2188 | @example |
| 2479 | (require 'message) | 2189 | (require 'message) |
| 2480 | (add-to-list 'message-syntax-checks '(sender . disabled)) | 2190 | (add-to-list 'message-syntax-checks '(sender . disabled)) |
| 2481 | @end example | 2191 | @end example |
| 2482 | |||
| 2483 | @noindent | 2192 | @noindent |
| 2484 | then as soon as you start Gnus, message.el is loaded. If | 2193 | |
| 2485 | you replace it with | 2194 | then as soon as you start Gnus, message.el is loaded. If |
| 2486 | 2195 | you replace it with | |
| 2487 | 2196 | ||
| 2488 | @example | 2197 | @example |
| 2489 | (eval-after-load "message" | 2198 | (eval-after-load "message" |
| 2490 | '(add-to-list 'message-syntax-checks '(sender . disabled))) | 2199 | '(add-to-list 'message-syntax-checks '(sender . disabled))) |
| 2491 | @end example | 2200 | @end example |
| 2492 | |||
| 2493 | @noindent | 2201 | @noindent |
| 2494 | it's loaded when it's needed. | ||
| 2495 | |||
| 2496 | @ifnottex | ||
| 2497 | @node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus | ||
| 2498 | @end ifnottex | ||
| 2499 | @subsubheading Question 9.2: | ||
| 2500 | 2202 | ||
| 2501 | How to speed up the process of entering a group? | 2203 | it's loaded when it's needed. |
| 2502 | |||
| 2503 | 2204 | ||
| 2504 | Answer: | 2205 | @node [9.2] |
| 2206 | @subsubheading Question 9.2 | ||
| 2505 | 2207 | ||
| 2506 | A speed killer is setting the variable | 2208 | How to speed up the process of entering a group? |
| 2507 | gnus-fetch-old-headers to anything different from nil, | 2209 | |
| 2508 | so don't do this if speed is an issue. To speed up | 2210 | @subsubheading Answer |
| 2509 | building of summary say | 2211 | |
| 2510 | 2212 | A speed killer is setting the variable | |
| 2213 | gnus-fetch-old-headers to anything different from nil, | ||
| 2214 | so don't do this if speed is an issue. To speed up | ||
| 2215 | building of summary say | ||
| 2511 | 2216 | ||
| 2512 | @example | 2217 | @example |
| 2513 | (gnus-compile) | 2218 | (gnus-compile) |
| 2514 | @end example | 2219 | @end example |
| 2515 | |||
| 2516 | @noindent | 2220 | @noindent |
| 2517 | at the bottom of your ~/.gnus, this will make gnus | 2221 | |
| 2518 | byte-compile things like | 2222 | at the bottom of your ~/.gnus.el, this will make gnus |
| 2519 | gnus-summary-line-format. | 2223 | byte-compile things like |
| 2520 | then you could increase the value of gc-cons-threshold | 2224 | gnus-summary-line-format. |
| 2521 | by saying something like | 2225 | then you could increase the value of gc-cons-threshold |
| 2522 | 2226 | by saying something like | |
| 2523 | 2227 | ||
| 2524 | @example | 2228 | @example |
| 2525 | (setq gc-cons-threshold 3500000) | 2229 | (setq gc-cons-threshold 3500000) |
| 2526 | @end example | 2230 | @end example |
| 2527 | |||
| 2528 | @noindent | 2231 | @noindent |
| 2529 | in ~/.emacs. If you don't care about width of CJK | 2232 | |
| 2530 | characters or use Gnus 5.10 or younger together with a | 2233 | in ~/.emacs. If you don't care about width of CJK |
| 2531 | recent GNU Emacs, you should say | 2234 | characters or use Gnus 5.10 or younger together with a |
| 2532 | 2235 | recent GNU Emacs, you should say | |
| 2533 | 2236 | ||
| 2534 | @example | 2237 | @example |
| 2535 | (setq gnus-use-correct-string-widths nil) | 2238 | (setq gnus-use-correct-string-widths nil) |
| 2536 | @end example | 2239 | @end example |
| 2537 | |||
| 2538 | |||
| 2539 | @noindent | 2240 | @noindent |
| 2540 | in ~/.gnus (thanks to Jesper harder for the last | ||
| 2541 | two suggestions). Finally if you are still using 5.8.8 | ||
| 2542 | or 5.9 and experience speed problems with summary | ||
| 2543 | buffer generation, you definitely should update to | ||
| 2544 | 5.10 since there quite some work on improving it has | ||
| 2545 | been done. | ||
| 2546 | 2241 | ||
| 2547 | @ifnottex | 2242 | in ~/.gnus.el (thanks to Jesper harder for the last |
| 2548 | @node [9.3], , [9.2], FAQ 9 - Tuning Gnus | 2243 | two suggestions). Finally if you are still using 5.8.8 |
| 2549 | @end ifnottex | 2244 | or 5.9 and experience speed problems with summary |
| 2550 | @subsubheading Question 9.3: | 2245 | buffer generation, you definitely should update to |
| 2246 | 5.10 since there quite some work on improving it has | ||
| 2247 | been done. | ||
| 2551 | 2248 | ||
| 2552 | Sending mail becomes slower and slower, what's up? | 2249 | @node [9.3] |
| 2553 | 2250 | @subsubheading Question 9.3 | |
| 2554 | 2251 | ||
| 2555 | Answer: | 2252 | Sending mail becomes slower and slower, what's up? |
| 2556 | 2253 | ||
| 2557 | The reason could be that you told Gnus to archive the | 2254 | @subsubheading Answer |
| 2558 | messages you wrote by setting | ||
| 2559 | gnus-message-archive-group. Try to use a nnml group | ||
| 2560 | instead of an archive group, this should bring you back | ||
| 2561 | to normal speed. | ||
| 2562 | |||
| 2563 | 2255 | ||
| 2564 | @ifnottex | 2256 | The reason could be that you told Gnus to archive the |
| 2565 | @node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions | 2257 | messages you wrote by setting |
| 2566 | @end ifnottex | 2258 | gnus-message-archive-group. Try to use a nnml group |
| 2259 | instead of an archive group, this should bring you back | ||
| 2260 | to normal speed. | ||
| 2261 | |||
| 2262 | @node FAQ - Glossary | ||
| 2567 | @subsection Glossary | 2263 | @subsection Glossary |
| 2568 | 2264 | ||
| 2569 | @table @dfn | 2265 | @table @dfn |
| 2570 | 2266 | ||
| 2571 | @item ~/.gnus | 2267 | @item ~/.gnus.el |
| 2572 | When the term ~/.gnus is used it just means your Gnus | 2268 | When the term ~/.gnus.el is used it just means your Gnus |
| 2573 | configuration file. You might as well call it ~/.gnus.el or | 2269 | configuration file. You might as well call it ~/.gnus or |
| 2574 | specify another name. | 2270 | specify another name. |
| 2575 | |||
| 2576 | 2271 | ||
| 2577 | @item Back End | 2272 | @item Back End |
| 2578 | In Gnus terminology a back end is a virtual server, a layer | 2273 | In Gnus terminology a back end is a virtual server, a layer |
| 2579 | between core Gnus and the real NNTP-, POP3-, IMAP- or | 2274 | between core Gnus and the real NNTP-, POP3-, IMAP- or |
| 2580 | whatever-server which offers Gnus a standardized interface | 2275 | whatever-server which offers Gnus a standardized interface |
| 2581 | to functions like "get message", "get Headers" etc. | 2276 | to functions like "get message", "get Headers" etc. |
| 2582 | |||
| 2583 | 2277 | ||
| 2584 | @item Emacs | 2278 | @item Emacs |
| 2585 | When the term Emacs is used in this FAQ, it means either GNU | 2279 | When the term Emacs is used in this FAQ, it means either GNU |
| 2586 | Emacs or XEmacs. | 2280 | Emacs or XEmacs. |
| 2587 | |||
| 2588 | 2281 | ||
| 2589 | @item Message | 2282 | @item Message |
| 2590 | In this FAQ message means a either a mail or a posting to a | 2283 | In this FAQ message means a either a mail or a posting to a |
| 2591 | Usenet Newsgroup or to some other fancy back end, no matter | 2284 | Usenet Newsgroup or to some other fancy back end, no matter |
| 2592 | of which kind it is. | 2285 | of which kind it is. |
| 2593 | |||
| 2594 | 2286 | ||
| 2595 | @item MUA | 2287 | @item MUA |
| 2596 | MUA is an acronym for Mail User Agent, it's the program you | 2288 | MUA is an acronym for Mail User Agent, it's the program you |
| 2597 | use to read and write e-mails. | 2289 | use to read and write e-mails. |
| 2598 | |||
| 2599 | 2290 | ||
| 2600 | @item NUA | 2291 | @item NUA |
| 2601 | NUA is an acronym for News User Agent, it's the program you | 2292 | NUA is an acronym for News User Agent, it's the program you |
| 2602 | use to read and write Usenet news. | 2293 | use to read and write Usenet news. |
| 2603 | |||
| 2604 | @end table | ||
| 2605 | 2294 | ||
| 2606 | @c @bye | 2295 | @end table |
| 2607 | 2296 | ||
| 2608 | @ignore | 2297 | @ignore |
| 2609 | arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8 | 2298 | arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8 |
| 2610 | @end ignore | 2299 | @end ignore |
diff --git a/man/maintaining.texi b/man/maintaining.texi index 231699a7d02..f8bc0de5992 100644 --- a/man/maintaining.texi +++ b/man/maintaining.texi | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | @c This is part of the Emacs manual. | 1 | @c This is part of the Emacs manual. |
| 2 | @c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc. | 2 | @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000, |
| 3 | @c 2001, 2005 Free Software Foundation, Inc. | ||
| 3 | @c See file emacs.texi for copying conditions. | 4 | @c See file emacs.texi for copying conditions. |
| 4 | @node Maintaining, Abbrevs, Building, Top | 5 | @node Maintaining, Abbrevs, Building, Top |
| 5 | @chapter Maintaining Programs | 6 | @chapter Maintaining Programs |
| @@ -8,8 +9,8 @@ | |||
| 8 | @cindex program editing | 9 | @cindex program editing |
| 9 | 10 | ||
| 10 | This chapter describes Emacs features for maintaining programs. The | 11 | This chapter describes Emacs features for maintaining programs. The |
| 11 | version control features (@pxref{Version Control}) are also | 12 | version control features (@pxref{Version Control}) are also particularly |
| 12 | particularly useful for this purpose. | 13 | useful for this purpose. |
| 13 | 14 | ||
| 14 | @menu | 15 | @menu |
| 15 | * Change Log:: Maintaining a change history for your program. | 16 | * Change Log:: Maintaining a change history for your program. |
| @@ -51,13 +52,13 @@ permitted provided the copyright notice and this notice are preserved. | |||
| 51 | @noindent | 52 | @noindent |
| 52 | Of course, you should substitute the proper years and copyright holder. | 53 | Of course, you should substitute the proper years and copyright holder. |
| 53 | 54 | ||
| 54 | A change log entry starts with a header line that contains the | 55 | A change log entry starts with a header line that contains the current |
| 55 | current date, your name, and your email address (taken from the | 56 | date, your name, and your email address (taken from the variable |
| 56 | variable @code{user-mail-address}). Aside from these header lines, | 57 | @code{add-log-mailing-address}). Aside from these header lines, every |
| 57 | every line in the change log starts with a space or a tab. The bulk | 58 | line in the change log starts with a space or a tab. The bulk of the |
| 58 | of the entry consists of @dfn{items}, each of which starts with a line | 59 | entry consists of @dfn{items}, each of which starts with a line starting |
| 59 | starting with whitespace and a star. Here are two entries, both dated | 60 | with whitespace and a star. Here are two entries, both dated in May |
| 60 | in May 1993, each with two items: | 61 | 1993, each with two items: |
| 61 | 62 | ||
| 62 | @iftex | 63 | @iftex |
| 63 | @medbreak | 64 | @medbreak |
diff --git a/man/message.texi b/man/message.texi index 5e488b0e7cf..8a10ea2445d 100644 --- a/man/message.texi +++ b/man/message.texi | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | @copying | 8 | @copying |
| 9 | This file documents Message, the Emacs message composition mode. | 9 | This file documents Message, the Emacs message composition mode. |
| 10 | 10 | ||
| 11 | Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 | 11 | Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
| 12 | Free Software Foundation, Inc. | 12 | Free Software Foundation, Inc. |
| 13 | 13 | ||
| 14 | @quotation | 14 | @quotation |
diff --git a/man/misc.texi b/man/misc.texi index 6181003d694..f1e05cae89c 100644 --- a/man/misc.texi +++ b/man/misc.texi | |||
| @@ -1250,10 +1250,10 @@ kills it if the file name matches the regular expression | |||
| 1250 | @vindex server-name | 1250 | @vindex server-name |
| 1251 | You can run multiple Emacs servers on the same machine by giving | 1251 | You can run multiple Emacs servers on the same machine by giving |
| 1252 | each one a unique ``server name'', using the variable | 1252 | each one a unique ``server name'', using the variable |
| 1253 | @code{server-name}. For example, @kbd{M-x set-variable RET | 1253 | @code{server-name}. For example, @kbd{M-x set-variable @key{RET} |
| 1254 | server-name RET foo RET} sets the server name to @samp{foo}. The | 1254 | server-name @key{RET} foo @key{RET}} sets the server name to |
| 1255 | @code{emacsclient} program can visit a server by name using the | 1255 | @samp{foo}. The @code{emacsclient} program can visit a server by name |
| 1256 | @samp{-s} option. @xref{Invoking emacsclient}. | 1256 | using the @samp{-s} option. @xref{Invoking emacsclient}. |
| 1257 | 1257 | ||
| 1258 | While @code{mail} or another application is waiting for | 1258 | While @code{mail} or another application is waiting for |
| 1259 | @code{emacsclient} to finish, @code{emacsclient} does not read terminal | 1259 | @code{emacsclient} to finish, @code{emacsclient} does not read terminal |
diff --git a/man/mule.texi b/man/mule.texi index 54952fa08fa..c085839cbd8 100644 --- a/man/mule.texi +++ b/man/mule.texi | |||
| @@ -428,6 +428,9 @@ is the command @kbd{C-\} (@code{toggle-input-method}) used twice. | |||
| 428 | because it stops waiting for more characters to combine, and starts | 428 | because it stops waiting for more characters to combine, and starts |
| 429 | searching for what you have already entered. | 429 | searching for what you have already entered. |
| 430 | 430 | ||
| 431 | To find out how to input the character after point using the current | ||
| 432 | input method, type @kbd{C-u C-x =}. @xref{Position Info}. | ||
| 433 | |||
| 431 | @vindex input-method-verbose-flag | 434 | @vindex input-method-verbose-flag |
| 432 | @vindex input-method-highlight-flag | 435 | @vindex input-method-highlight-flag |
| 433 | The variables @code{input-method-highlight-flag} and | 436 | The variables @code{input-method-highlight-flag} and |
| @@ -928,6 +931,9 @@ files. | |||
| 928 | @item C-x @key{RET} X @var{coding} @key{RET} | 931 | @item C-x @key{RET} X @var{coding} @key{RET} |
| 929 | Use coding system @var{coding} for transferring @emph{one} | 932 | Use coding system @var{coding} for transferring @emph{one} |
| 930 | selection---the next one---to or from the window system. | 933 | selection---the next one---to or from the window system. |
| 934 | |||
| 935 | @item M-x recode-region | ||
| 936 | Convert the region from a previous coding system to a new one. | ||
| 931 | @end table | 937 | @end table |
| 932 | 938 | ||
| 933 | @kindex C-x RET f | 939 | @kindex C-x RET f |
| @@ -1056,6 +1062,12 @@ corresponding buffer. | |||
| 1056 | The default for translation of process input and output depends on the | 1062 | The default for translation of process input and output depends on the |
| 1057 | current language environment. | 1063 | current language environment. |
| 1058 | 1064 | ||
| 1065 | @findex recode-region | ||
| 1066 | If a piece of text has already been inserted into a buffer using the | ||
| 1067 | wrong coding system, you can decode it again using @kbd{M-x | ||
| 1068 | recode-region}. This prompts you for the old coding system and the | ||
| 1069 | desired coding system, and acts on the text in the region. | ||
| 1070 | |||
| 1059 | @vindex file-name-coding-system | 1071 | @vindex file-name-coding-system |
| 1060 | @cindex file names with non-@acronym{ASCII} characters | 1072 | @cindex file names with non-@acronym{ASCII} characters |
| 1061 | @findex set-file-name-coding-system | 1073 | @findex set-file-name-coding-system |
| @@ -1084,6 +1096,12 @@ these buffers under the visited file name, saving may use the wrong file | |||
| 1084 | name, or it may get an error. If such a problem happens, use @kbd{C-x | 1096 | name, or it may get an error. If such a problem happens, use @kbd{C-x |
| 1085 | C-w} to specify a new file name for that buffer. | 1097 | C-w} to specify a new file name for that buffer. |
| 1086 | 1098 | ||
| 1099 | @findex recode-file-name | ||
| 1100 | If a mistake occurs when encoding a file name, use the command | ||
| 1101 | command @kbd{M-x recode-file-name} to change the file name's coding | ||
| 1102 | system. This prompts for an existing file name, its old coding | ||
| 1103 | system, and the coding system to which you wish to convert. | ||
| 1104 | |||
| 1087 | @vindex locale-coding-system | 1105 | @vindex locale-coding-system |
| 1088 | @cindex decoding non-@acronym{ASCII} keyboard input on X | 1106 | @cindex decoding non-@acronym{ASCII} keyboard input on X |
| 1089 | The variable @code{locale-coding-system} specifies a coding system | 1107 | The variable @code{locale-coding-system} specifies a coding system |
| @@ -1358,6 +1376,27 @@ however, on a console terminal or in @code{xterm}, you can arrange for | |||
| 1358 | Meta to be converted to @kbd{ESC} and still be able type 8-bit | 1376 | Meta to be converted to @kbd{ESC} and still be able type 8-bit |
| 1359 | characters present directly on the keyboard or using @kbd{Compose} or | 1377 | characters present directly on the keyboard or using @kbd{Compose} or |
| 1360 | @kbd{AltGr} keys. @xref{User Input}. | 1378 | @kbd{AltGr} keys. @xref{User Input}. |
| 1379 | |||
| 1380 | @kindex C-x 8 | ||
| 1381 | @cindex @code{iso-transl} library | ||
| 1382 | @cindex compose character | ||
| 1383 | @cindex dead character | ||
| 1384 | @item | ||
| 1385 | For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose | ||
| 1386 | character'' prefix for entry of non-@acronym{ASCII} Latin-1 printing | ||
| 1387 | characters. @kbd{C-x 8} is good for insertion (in the minibuffer as | ||
| 1388 | well as other buffers), for searching, and in any other context where | ||
| 1389 | a key sequence is allowed. | ||
| 1390 | |||
| 1391 | @kbd{C-x 8} works by loading the @code{iso-transl} library. Once that | ||
| 1392 | library is loaded, the @key{ALT} modifier key, if the keyboard has | ||
| 1393 | one, serves the same purpose as @kbd{C-x 8}: use @key{ALT} together | ||
| 1394 | with an accent character to modify the following letter. In addition, | ||
| 1395 | if the keyboard has keys for the Latin-1 ``dead accent characters,'' | ||
| 1396 | they too are defined to compose with the following character, once | ||
| 1397 | @code{iso-transl} is loaded. | ||
| 1398 | |||
| 1399 | Use @kbd{C-x 8 C-h} to list all the available @kbd{C-x 8} translations. | ||
| 1361 | @end itemize | 1400 | @end itemize |
| 1362 | 1401 | ||
| 1363 | @node Charsets | 1402 | @node Charsets |
diff --git a/man/org.texi b/man/org.texi index d461e9c1020..d1a388f958a 100644 --- a/man/org.texi +++ b/man/org.texi | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | @setfilename ../info/org | 3 | @setfilename ../info/org |
| 4 | @settitle Org Mode Manual | 4 | @settitle Org Mode Manual |
| 5 | 5 | ||
| 6 | @set VERSION 3.04 | 6 | @set VERSION 3.05 |
| 7 | @set DATE December 2004 | 7 | @set DATE April 2005 |
| 8 | 8 | ||
| 9 | @dircategory Emacs | 9 | @dircategory Emacs |
| 10 | @direntry | 10 | @direntry |
| @@ -34,7 +34,7 @@ | |||
| 34 | @copying | 34 | @copying |
| 35 | This manual is for Org-mode (version @value{VERSION}). | 35 | This manual is for Org-mode (version @value{VERSION}). |
| 36 | 36 | ||
| 37 | Copyright @copyright{} 2004 Free Software Foundation | 37 | Copyright @copyright{} 2004, 2005 Free Software Foundation |
| 38 | 38 | ||
| 39 | @quotation | 39 | @quotation |
| 40 | Permission is granted to copy, distribute and/or modify this document | 40 | Permission is granted to copy, distribute and/or modify this document |
| @@ -184,7 +184,8 @@ top of outline-mode, which makes it possible to keep the content of | |||
| 184 | large files well structured. Visibility cycling and structure editing | 184 | large files well structured. Visibility cycling and structure editing |
| 185 | help to work with the tree. Tables are easily created with a built-in | 185 | help to work with the tree. Tables are easily created with a built-in |
| 186 | table editor. Org-mode supports ToDo items, deadlines, time stamps, | 186 | table editor. Org-mode supports ToDo items, deadlines, time stamps, |
| 187 | and scheduling. It dynamically compiles entries into an agenda. | 187 | and scheduling. It dynamically compiles entries into an agenda that |
| 188 | utilizes and smoothly integrates much of the Emacs calendar and diary. | ||
| 188 | Plain text URL-like links connect to websites, emails, usenet | 189 | Plain text URL-like links connect to websites, emails, usenet |
| 189 | messages, BBDB entries, and any files related to the projects. For | 190 | messages, BBDB entries, and any files related to the projects. For |
| 190 | printing and sharing of notes, an Org-mode file can be exported as a | 191 | printing and sharing of notes, an Org-mode file can be exported as a |
| @@ -203,15 +204,14 @@ different levels and in different ways, for example | |||
| 203 | @r{@bullet{} as a full agenda and planner with deadlines and work scheduling} | 204 | @r{@bullet{} as a full agenda and planner with deadlines and work scheduling} |
| 204 | @end example | 205 | @end example |
| 205 | 206 | ||
| 206 | The Org-mode table editor can be used integrated into any major mode | 207 | The Org-mode table editor can be integrated into any major mode by |
| 207 | by activating the minor Ortbl-mode. | 208 | activating the minor Orgtbl-mode. |
| 208 | 209 | ||
| 209 | There is a website for Org-mode which provides links to the newest | 210 | There is a website for Org-mode which provides links to the newest |
| 210 | version of Org-mode, as well as additional information, screen shots | 211 | version of Org-mode, as well as additional information, screen shots |
| 211 | and example files. This page is located at | 212 | and example files. This page is located at |
| 212 | @uref{http://www.astro.uva.nl/~dominik/Tools/org/}. | 213 | @uref{http://www.astro.uva.nl/~dominik/Tools/org/}. |
| 213 | 214 | ||
| 214 | |||
| 215 | @page | 215 | @page |
| 216 | 216 | ||
| 217 | @node Installation, , Summary, Introduction | 217 | @node Installation, , Summary, Introduction |
| @@ -352,6 +352,18 @@ Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field. | |||
| 352 | Show all. | 352 | Show all. |
| 353 | @end table | 353 | @end table |
| 354 | 354 | ||
| 355 | When Emacs firsts visits a Org-mode file, the global state is set to | ||
| 356 | OVERVIEW, i.e. only the top level headlines are visible. This can be | ||
| 357 | configured through the variable @code{org-startup-folded}, or on a | ||
| 358 | per-file basis by adding one of the following lines anywhere in the | ||
| 359 | buffer: | ||
| 360 | |||
| 361 | @example | ||
| 362 | #+STARTUP: fold | ||
| 363 | #+STARTUP: nofold | ||
| 364 | @end example | ||
| 365 | |||
| 366 | |||
| 355 | @node Motion, Structure editing, Visibility cycling, Document Structure | 367 | @node Motion, Structure editing, Visibility cycling, Document Structure |
| 356 | @section Motion | 368 | @section Motion |
| 357 | @cindex motion, between headlines | 369 | @cindex motion, between headlines |
| @@ -473,6 +485,17 @@ the match. | |||
| 473 | Other commands are using this feature as well. For example @kbd{C-c | 485 | Other commands are using this feature as well. For example @kbd{C-c |
| 474 | C-v} creates a sparse TODO tree (@pxref{TODO basics}). | 486 | C-v} creates a sparse TODO tree (@pxref{TODO basics}). |
| 475 | 487 | ||
| 488 | @kindex C-c C-x v | ||
| 489 | @cindex printing sparse trees | ||
| 490 | @cindex visible text, printing | ||
| 491 | To print a sparse tree, you can use the Emacs command | ||
| 492 | @code{ps-print-buffer-with-faces} which does not print invisible parts | ||
| 493 | of the document @footnote{this does not work under XEmacs, because | ||
| 494 | XEmacs uses selective display for outlining, not text properties}. | ||
| 495 | Or you can use the command @kbd{C-c C-x v} to copy the visible part of | ||
| 496 | the document to another file (extension @file{.txt}) which then can be | ||
| 497 | printed in any desired way. | ||
| 498 | |||
| 476 | @node TODO items, Tables, Document Structure, Top | 499 | @node TODO items, Tables, Document Structure, Top |
| 477 | @chapter TODO items | 500 | @chapter TODO items |
| 478 | @cindex TODO items | 501 | @cindex TODO items |
| @@ -611,7 +634,7 @@ persons. | |||
| 611 | @end lisp | 634 | @end lisp |
| 612 | 635 | ||
| 613 | In this case, different keywords do not indicate a sequence, but | 636 | In this case, different keywords do not indicate a sequence, but |
| 614 | rather different levels. This changes the behavior of the command | 637 | rather different types. This changes the behavior of the command |
| 615 | @kbd{C-c C-t} slightly. When used several times in succession, it | 638 | @kbd{C-c C-t} slightly. When used several times in succession, it |
| 616 | will still cycle through all names. But when when you return to the | 639 | will still cycle through all names. But when when you return to the |
| 617 | item after some time and execute @kbd{C-c C-t} again, it will switch | 640 | item after some time and execute @kbd{C-c C-t} again, it will switch |
| @@ -745,11 +768,6 @@ Re-align the table and move down to next row. Creates a new row if | |||
| 745 | necessary. At the beginning or end of a line, @key{RET} still does | 768 | necessary. At the beginning or end of a line, @key{RET} still does |
| 746 | NEWLINE, so it can be used to split a table. | 769 | NEWLINE, so it can be used to split a table. |
| 747 | 770 | ||
| 748 | @kindex S-@key{RET} | ||
| 749 | @item S-@key{RET} | ||
| 750 | Copy from first non-empty | ||
| 751 | field above current field. | ||
| 752 | |||
| 753 | @tsubheading{Column and row editing} | 771 | @tsubheading{Column and row editing} |
| 754 | @kindex M-@key{left} | 772 | @kindex M-@key{left} |
| 755 | @kindex M-@key{right} | 773 | @kindex M-@key{right} |
| @@ -796,7 +814,7 @@ Copy an rectangular region from a table to a special clipboard, and | |||
| 796 | blank all fields in the rectangle. | 814 | blank all fields in the rectangle. |
| 797 | @kindex C-c C-h C-y | 815 | @kindex C-c C-h C-y |
| 798 | @item C-c C-h C-y | 816 | @item C-c C-h C-y |
| 799 | Paste a rectangluar region into a table. | 817 | Paste a rectangular region into a table. |
| 800 | The upper right corner ends up in the current field. All involved fields | 818 | The upper right corner ends up in the current field. All involved fields |
| 801 | will be overwritten. If the rectangle does not fit into the present table, | 819 | will be overwritten. If the rectangle does not fit into the present table, |
| 802 | the table is enlarged as needed. The process ignores horizontal separator | 820 | the table is enlarged as needed. The process ignores horizontal separator |
| @@ -828,6 +846,14 @@ Sum the numbers in the current column, or in the rectangle defined by | |||
| 828 | the active region. The result is displayed in the echo area and can | 846 | the active region. The result is displayed in the echo area and can |
| 829 | be inserted with @kbd{C-y}. | 847 | be inserted with @kbd{C-y}. |
| 830 | 848 | ||
| 849 | @kindex S-@key{RET} | ||
| 850 | @item S-@key{RET} | ||
| 851 | When current field is empty, copy from first non-empty field above. | ||
| 852 | When not empty, copy current field down to next row and move cursor | ||
| 853 | along with it. Depending on the variable | ||
| 854 | @code{org-table-copy-increment}, integer field values will be | ||
| 855 | incremented during copy. | ||
| 856 | |||
| 831 | @cindex formula, in tables | 857 | @cindex formula, in tables |
| 832 | @cindex calculations, in tables | 858 | @cindex calculations, in tables |
| 833 | @kindex C-c = | 859 | @kindex C-c = |
| @@ -1063,7 +1089,7 @@ text has a headline, i.e. a first line that starts with a @samp{*}. | |||
| 1063 | If not, a headline is constructed from the current date and some | 1089 | If not, a headline is constructed from the current date and some |
| 1064 | additional data. If the variable @code{org-adapt-indentation} is | 1090 | additional data. If the variable @code{org-adapt-indentation} is |
| 1065 | non-nil, the entire text is also indented so that it starts in the | 1091 | non-nil, the entire text is also indented so that it starts in the |
| 1066 | same column as the headline (after the asterixes). | 1092 | same column as the headline (after the asterisks). |
| 1067 | 1093 | ||
| 1068 | @node Timestamps, Timeline and Agenda, Hyperlinks, Top | 1094 | @node Timestamps, Timeline and Agenda, Hyperlinks, Top |
| 1069 | @chapter Timestamps | 1095 | @chapter Timestamps |
| @@ -1404,11 +1430,12 @@ Sorting can be customized using the variable | |||
| 1404 | @node Agenda commands, Calendar/Diary integration, Agenda (multiple files), Timeline and Agenda | 1430 | @node Agenda commands, Calendar/Diary integration, Agenda (multiple files), Timeline and Agenda |
| 1405 | @section Commands in the agenda buffer | 1431 | @section Commands in the agenda buffer |
| 1406 | 1432 | ||
| 1407 | Entries in the agenda buffer are linked back to the org file. You are | 1433 | Entries in the agenda buffer are linked back to the org file or diary |
| 1408 | not allowed to edit the agenda buffer itself, but commands are provided | 1434 | file where they originate. You are not allowed to edit the agenda |
| 1409 | to edit the org-files ``remotely'' from the agenda buffer. In this | 1435 | buffer itself, but commands are provided to show and jump to the |
| 1410 | way, all information is stored only once, and you don't risk that your | 1436 | original entry location, and to edit the org-files ``remotely'' from |
| 1411 | agenda and note files diverge. | 1437 | the agenda buffer. In this way, all information is stored only once, |
| 1438 | and you don't risk that your agenda and note files diverge. | ||
| 1412 | 1439 | ||
| 1413 | Some commands can be executed with mouse clicks on agenda lines. For | 1440 | Some commands can be executed with mouse clicks on agenda lines. For |
| 1414 | the other commands, the cursor needs to be in the desired line. Most | 1441 | the other commands, the cursor needs to be in the desired line. Most |
| @@ -1468,7 +1495,7 @@ S-@key{right}. | |||
| 1468 | Display the following @code{org-agenda-ndays} days. For example, if | 1495 | Display the following @code{org-agenda-ndays} days. For example, if |
| 1469 | the display covers a week, switch to the following week. With prefix | 1496 | the display covers a week, switch to the following week. With prefix |
| 1470 | arg, go forward that many times @code{org-agenda-ndays} days. Not | 1497 | arg, go forward that many times @code{org-agenda-ndays} days. Not |
| 1471 | available in timlines. | 1498 | available in timelines. |
| 1472 | 1499 | ||
| 1473 | @kindex @key{left} | 1500 | @kindex @key{left} |
| 1474 | @item @key{left} | 1501 | @item @key{left} |
| @@ -1536,6 +1563,29 @@ Insert a new entry into the diary. Prompts for the type of entry | |||
| 1536 | entry in the diary, just like @kbd{i d} etc. would do in the calendar. | 1563 | entry in the diary, just like @kbd{i d} etc. would do in the calendar. |
| 1537 | The date is taken from the cursor position. | 1564 | The date is taken from the cursor position. |
| 1538 | 1565 | ||
| 1566 | @tsubheading{Calendar commands} | ||
| 1567 | @kindex c | ||
| 1568 | @item c | ||
| 1569 | Open the Emacs calendar and move to the date at the agenda cursor. | ||
| 1570 | |||
| 1571 | @kindex C | ||
| 1572 | @item C | ||
| 1573 | Convert the date at cursor into many other cultural and historic | ||
| 1574 | calendars. | ||
| 1575 | |||
| 1576 | @kindex M | ||
| 1577 | @item M | ||
| 1578 | Show the phases of the moon for three month around current date. | ||
| 1579 | |||
| 1580 | @kindex S | ||
| 1581 | @item S | ||
| 1582 | Show sunrise and sunset times. The location must be set with calendar | ||
| 1583 | variables, see documentation of the Emacs calendar. | ||
| 1584 | |||
| 1585 | @kindex H | ||
| 1586 | @item H | ||
| 1587 | Show holidays for three month around the cursor date. | ||
| 1588 | |||
| 1539 | @tsubheading{Quit and Exit} | 1589 | @tsubheading{Quit and Exit} |
| 1540 | @kindex q | 1590 | @kindex q |
| 1541 | @item q | 1591 | @item q |
| @@ -1564,8 +1614,9 @@ Org-mode. It can be very useful to combine output from Org-mode with | |||
| 1564 | the diary. | 1614 | the diary. |
| 1565 | 1615 | ||
| 1566 | The interaction between Org-mode and diary works both ways: You can | 1616 | The interaction between Org-mode and diary works both ways: You can |
| 1567 | list entries from the diary in the Org-mode agenda, or you can display | 1617 | list entries from the diary in the Org-mode agenda, from which many |
| 1568 | entries from the org agenda in the Emacs diary. | 1618 | calendar and diary commands are directly accessible. Or you can |
| 1619 | display entries from the org agenda in the Emacs diary. | ||
| 1569 | 1620 | ||
| 1570 | @menu | 1621 | @menu |
| 1571 | * Diary to agenda:: Agenda incorporates the diary | 1622 | * Diary to agenda:: Agenda incorporates the diary |
| @@ -1584,7 +1635,15 @@ agenda, you only need to customize the variable | |||
| 1584 | @end lisp | 1635 | @end lisp |
| 1585 | @noindent | 1636 | @noindent |
| 1586 | 1637 | ||
| 1587 | @noindent After that, everything will happen automatically. | 1638 | @noindent After that, everything will happen automatically. All diary |
| 1639 | entries including holidays, anniversaries etc will be included in the | ||
| 1640 | agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and | ||
| 1641 | @key{RET} can be used from the agenda buffer to jump to the diary | ||
| 1642 | file, in order to edit existing diary entries. Also the @kbd{i} | ||
| 1643 | command to insert new entries for the current date works in the agenda | ||
| 1644 | buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to | ||
| 1645 | display Sunrise/Sunset times, show lunar phases and to convert to | ||
| 1646 | other calendars, respectively. | ||
| 1588 | 1647 | ||
| 1589 | @node Agenda to diary, , Diary to agenda, Calendar/Diary integration | 1648 | @node Agenda to diary, , Diary to agenda, Calendar/Diary integration |
| 1590 | @subsection Including the agenda into the diary | 1649 | @subsection Including the agenda into the diary |
diff --git a/man/programs.texi b/man/programs.texi index 353cb85aa60..98e60d0385c 100644 --- a/man/programs.texi +++ b/man/programs.texi | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | @c This is part of the Emacs manual. | 1 | @c This is part of the Emacs manual. |
| 2 | @c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc. | 2 | @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000, |
| 3 | @c 2001, 2005 Free Software Foundation, Inc. | ||
| 3 | @c See file emacs.texi for copying conditions. | 4 | @c See file emacs.texi for copying conditions. |
| 4 | @node Programs, Building, Text, Top | 5 | @node Programs, Building, Text, Top |
| 5 | @chapter Editing Programs | 6 | @chapter Editing Programs |
| @@ -80,17 +81,19 @@ and you can select it by typing @kbd{M-x @var{l}-mode @key{RET}}. | |||
| 80 | @cindex Shell-script mode | 81 | @cindex Shell-script mode |
| 81 | @cindex Delphi mode | 82 | @cindex Delphi mode |
| 82 | @cindex PostScript mode | 83 | @cindex PostScript mode |
| 84 | @cindex Conf mode | ||
| 85 | @cindex DNS mode | ||
| 83 | The existing programming language major modes include Lisp, Scheme (a | 86 | The existing programming language major modes include Lisp, Scheme (a |
| 84 | variant of Lisp) and the Scheme-based DSSSL expression language, Ada, | 87 | variant of Lisp) and the Scheme-based DSSSL expression language, Ada, |
| 85 | ASM, AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed | 88 | ASM, AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed |
| 86 | format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s | 89 | format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s |
| 87 | companion for font creation), Modula2, Objective-C, Octave, Pascal, | 90 | companion for font creation), Modula2, Objective-C, Octave, Pascal, |
| 88 | Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL. There is | 91 | Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL. An |
| 89 | also a major mode for makefiles, called Makefile mode. An alternative | 92 | alternative mode for Perl is called CPerl mode. Modes are available for |
| 90 | mode for Perl is called CPerl mode. Modes are available for the | 93 | the scripting languages of the common GNU and Unix shells, VMS DCL, and |
| 91 | scripting languages of the common GNU and Unix shells, VMS DCL, and | ||
| 92 | MS-DOS/MS-Windows @samp{BAT} files. There are also major modes for | 94 | MS-DOS/MS-Windows @samp{BAT} files. There are also major modes for |
| 93 | editing various sorts of configuration files. | 95 | editing makefiles, DNS master files, and various sorts of configuration |
| 96 | files. | ||
| 94 | 97 | ||
| 95 | @kindex DEL @r{(programming modes)} | 98 | @kindex DEL @r{(programming modes)} |
| 96 | @findex c-electric-backspace | 99 | @findex c-electric-backspace |
| @@ -1801,11 +1804,11 @@ names. | |||
| 1801 | @cindex Fortran mode | 1804 | @cindex Fortran mode |
| 1802 | @cindex mode, Fortran | 1805 | @cindex mode, Fortran |
| 1803 | 1806 | ||
| 1804 | Fortran mode provides special motion commands for Fortran statements and | 1807 | Fortran mode provides special motion commands for Fortran statements |
| 1805 | subprograms, and indentation commands that understand Fortran conventions | 1808 | and subprograms, and indentation commands that understand Fortran |
| 1806 | of nesting, line numbers and continuation statements. Fortran mode has | 1809 | conventions of nesting, line numbers and continuation statements. |
| 1807 | its own Auto Fill mode that breaks long lines into proper Fortran | 1810 | Fortran mode has support for Auto Fill mode that breaks long lines into |
| 1808 | continuation lines. | 1811 | proper Fortran continuation lines. |
| 1809 | 1812 | ||
| 1810 | Special commands for comments are provided because Fortran comments | 1813 | Special commands for comments are provided because Fortran comments |
| 1811 | are unlike those of other languages. Built-in abbrevs optionally save | 1814 | are unlike those of other languages. Built-in abbrevs optionally save |
| @@ -1817,18 +1820,18 @@ runs the hook @code{fortran-mode-hook} (@pxref{Hooks}). | |||
| 1817 | @cindex Fortran77 and Fortran90 | 1820 | @cindex Fortran77 and Fortran90 |
| 1818 | @findex f90-mode | 1821 | @findex f90-mode |
| 1819 | @findex fortran-mode | 1822 | @findex fortran-mode |
| 1820 | Fortran mode is meant for editing Fortran77 ``fixed format'' source | 1823 | Fortran mode is meant for editing Fortran77 ``fixed format'' (and also |
| 1821 | code. For editing the modern Fortran90 ``free format'' source code, | 1824 | ``tab format'') source code. For editing the modern Fortran90 or |
| 1822 | use F90 mode (@code{f90-mode}). Emacs normally uses Fortran mode for | 1825 | Fortran95 ``free format'' source code, use F90 mode (@code{f90-mode}). |
| 1823 | files with extension @samp{.f}, @samp{.F} or @samp{.for}, and F90 mode | 1826 | Emacs normally uses Fortran mode for files with extension @samp{.f}, |
| 1824 | for the extension @samp{.f90}. GNU Fortran supports both kinds of | 1827 | @samp{.F} or @samp{.for}, and F90 mode for the extension @samp{.f90} and |
| 1825 | format. | 1828 | @samp{.f95}. GNU Fortran supports both kinds of format. |
| 1826 | 1829 | ||
| 1827 | @menu | 1830 | @menu |
| 1828 | * Motion: Fortran Motion. Moving point by statements or subprograms. | 1831 | * Motion: Fortran Motion. Moving point by statements or subprograms. |
| 1829 | * Indent: Fortran Indent. Indentation commands for Fortran. | 1832 | * Indent: Fortran Indent. Indentation commands for Fortran. |
| 1830 | * Comments: Fortran Comments. Inserting and aligning comments. | 1833 | * Comments: Fortran Comments. Inserting and aligning comments. |
| 1831 | * Autofill: Fortran Autofill. Auto fill minor mode for Fortran. | 1834 | * Autofill: Fortran Autofill. Auto fill support for Fortran. |
| 1832 | * Columns: Fortran Columns. Measuring columns for valid Fortran. | 1835 | * Columns: Fortran Columns. Measuring columns for valid Fortran. |
| 1833 | * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. | 1836 | * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords. |
| 1834 | @end menu | 1837 | @end menu |
| @@ -1837,8 +1840,9 @@ format. | |||
| 1837 | @subsection Motion Commands | 1840 | @subsection Motion Commands |
| 1838 | 1841 | ||
| 1839 | In addition to the normal commands for moving by and operating on | 1842 | In addition to the normal commands for moving by and operating on |
| 1840 | ``defuns'' (Fortran subprograms---functions and subroutines), Fortran | 1843 | ``defuns'' (Fortran subprograms---functions and subroutines, as well as |
| 1841 | mode provides special commands to move by statements. | 1844 | modules for F90 mode), Fortran mode provides special commands to move by |
| 1845 | statements and other program units. | ||
| 1842 | 1846 | ||
| 1843 | @table @kbd | 1847 | @table @kbd |
| 1844 | @kindex C-c C-n @r{(Fortran mode)} | 1848 | @kindex C-c C-n @r{(Fortran mode)} |
| @@ -1873,21 +1877,24 @@ Move point backward to the previous code block | |||
| 1873 | (@code{f90-previous-block}). This is like @code{f90-next-block}, but | 1877 | (@code{f90-previous-block}). This is like @code{f90-next-block}, but |
| 1874 | moves backwards. | 1878 | moves backwards. |
| 1875 | 1879 | ||
| 1876 | @kindex C-M-n @r{(F90 mode)} | 1880 | @kindex C-M-n @r{(Fortran mode)} |
| 1881 | @findex fortran-end-of-block | ||
| 1877 | @findex f90-end-of-block | 1882 | @findex f90-end-of-block |
| 1878 | @item C-M-n | 1883 | @item C-M-n |
| 1879 | Move to the end of the current code block (@code{f90-end-of-block}). | 1884 | Move to the end of the current code block |
| 1880 | This is for F90 mode only. With a numeric agument, move forward that | 1885 | (@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric |
| 1881 | number of blocks. This command checks for consistency of block types | 1886 | agument, move forward that number of blocks. The mark is set before |
| 1882 | and labels (if present), but it does not check the outermost block | 1887 | moving point. The F90 mode version of this command checks for |
| 1883 | since that may be incomplete. The mark is set before moving point. | 1888 | consistency of block types and labels (if present), but it does not |
| 1884 | 1889 | check the outermost block since that may be incomplete. | |
| 1885 | @kindex C-M-p @r{(F90 mode)} | 1890 | |
| 1891 | @kindex C-M-p @r{(Fortran mode)} | ||
| 1892 | @findex fortran-beginning-of-block | ||
| 1886 | @findex f90-beginning-of-block | 1893 | @findex f90-beginning-of-block |
| 1887 | @item C-M-p | 1894 | @item C-M-p |
| 1888 | Move to the start of the current code block | 1895 | Move to the start of the current code block |
| 1889 | (@code{f90-beginning-of-block}). This is like @code{f90-end-of-block}, | 1896 | (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This |
| 1890 | but moves backwards. | 1897 | is like @code{fortran-end-of-block}, but moves backwards. |
| 1891 | @end table | 1898 | @end table |
| 1892 | 1899 | ||
| 1893 | @node Fortran Indent | 1900 | @node Fortran Indent |
| @@ -1896,7 +1903,7 @@ but moves backwards. | |||
| 1896 | Special commands and features are needed for indenting Fortran code in | 1903 | Special commands and features are needed for indenting Fortran code in |
| 1897 | order to make sure various syntactic entities (line numbers, comment line | 1904 | order to make sure various syntactic entities (line numbers, comment line |
| 1898 | indicators and continuation line flags) appear in the columns that are | 1905 | indicators and continuation line flags) appear in the columns that are |
| 1899 | required for standard Fortran. | 1906 | required for standard, fixed (or tab) format Fortran. |
| 1900 | 1907 | ||
| 1901 | @menu | 1908 | @menu |
| 1902 | * Commands: ForIndent Commands. Commands for indenting and filling Fortran. | 1909 | * Commands: ForIndent Commands. Commands for indenting and filling Fortran. |
| @@ -1911,7 +1918,7 @@ required for standard Fortran. | |||
| 1911 | 1918 | ||
| 1912 | @table @kbd | 1919 | @table @kbd |
| 1913 | @item C-M-j | 1920 | @item C-M-j |
| 1914 | Break the current line and set up a continuation line | 1921 | Break the current line at point and set up a continuation line |
| 1915 | (@code{fortran-split-line}). | 1922 | (@code{fortran-split-line}). |
| 1916 | @item M-^ | 1923 | @item M-^ |
| 1917 | Join this line to the previous line (@code{fortran-join-line}). | 1924 | Join this line to the previous line (@code{fortran-join-line}). |
| @@ -1953,30 +1960,39 @@ point is in. This removes any excess statement continuations. | |||
| 1953 | @cindex Fortran continuation lines | 1960 | @cindex Fortran continuation lines |
| 1954 | 1961 | ||
| 1955 | @vindex fortran-continuation-string | 1962 | @vindex fortran-continuation-string |
| 1956 | Most modern Fortran compilers allow two ways of writing continuation | 1963 | Most Fortran77 compilers allow two ways of writing continuation lines. |
| 1957 | lines. If the first non-space character on a line is in column 5, then | 1964 | If the first non-space character on a line is in column 5, then that |
| 1958 | that line is a continuation of the previous line. We call this | 1965 | line is a continuation of the previous line. We call this @dfn{fixed |
| 1959 | @dfn{fixed format}. (In GNU Emacs we always count columns from 0.) The | 1966 | format}. (In GNU Emacs we always count columns from 0; but note that |
| 1960 | variable @code{fortran-continuation-string} specifies what character to | 1967 | the Fortran standard counts from 1.) The variable |
| 1961 | put on column 5. A line that starts with a tab character followed by | 1968 | @code{fortran-continuation-string} specifies what character to put in |
| 1962 | any digit except @samp{0} is also a continuation line. We call this | 1969 | column 5. A line that starts with a tab character followed by any digit |
| 1963 | style of continuation @dfn{tab format}. | 1970 | except @samp{0} is also a continuation line. We call this style of |
| 1971 | continuation @dfn{tab format}. (Fortran90 introduced ``free format'', | ||
| 1972 | with another style of continuation lines). | ||
| 1964 | 1973 | ||
| 1965 | @vindex indent-tabs-mode @r{(Fortran mode)} | 1974 | @vindex indent-tabs-mode @r{(Fortran mode)} |
| 1966 | Fortran mode can make either style of continuation line, but you | 1975 | @vindex fortran-analyze-depth |
| 1967 | must specify which one you prefer. The value of the variable | 1976 | @vindex fortran-tab-mode-default |
| 1968 | @code{indent-tabs-mode} controls the choice: @code{nil} for fixed | 1977 | Fortran mode can use either style of continuation line. When you |
| 1969 | format, and non-@code{nil} for tab format. You can tell which style | 1978 | enter Fortran mode, it tries to deduce the proper continuation style |
| 1970 | is presently in effect by the presence or absence of the string | 1979 | automatically from the buffer contents. It does this by scanning up to |
| 1971 | @samp{Tab} in the mode line. | 1980 | @code{fortran-analyze-depth} (default 100) lines from the start of the |
| 1972 | 1981 | buffer. The first line that begins with either a tab character or six | |
| 1973 | If the text on a line starts with the conventional Fortran | 1982 | spaces determines the choice. If the scan fails (for example, if the |
| 1974 | continuation marker @samp{$}, or if it begins with any non-whitespace | 1983 | buffer is new and therefore empty), the value of |
| 1975 | character in column 5, Fortran mode treats it as a continuation line. | 1984 | @code{fortran-tab-mode-default} (@code{nil} for fixed format, and |
| 1976 | When you indent a continuation line with @key{TAB}, it converts the line | 1985 | non-@code{nil} for tab format) is used. @samp{/t} in the mode line |
| 1977 | to the current continuation style. When you split a Fortran statement | 1986 | indicates tab format is selected. Fortran mode sets the value of |
| 1978 | with @kbd{C-M-j}, the continuation marker on the newline is created | 1987 | @code{indent-tabs-mode} accordingly (@pxref{Just Spaces}). |
| 1979 | according to the continuation style. | 1988 | |
| 1989 | If the text on a line starts with the Fortran continuation marker | ||
| 1990 | @samp{$}, or if it begins with any non-whitespace character in column | ||
| 1991 | 5, Fortran mode treats it as a continuation line. When you indent a | ||
| 1992 | continuation line with @key{TAB}, it converts the line to the current | ||
| 1993 | continuation style. When you split a Fortran statement with | ||
| 1994 | @kbd{C-M-j}, the continuation marker on the newline is created according | ||
| 1995 | to the continuation style. | ||
| 1980 | 1996 | ||
| 1981 | The setting of continuation style affects several other aspects of | 1997 | The setting of continuation style affects several other aspects of |
| 1982 | editing in Fortran mode. In fixed format mode, the minimum column | 1998 | editing in Fortran mode. In fixed format mode, the minimum column |
| @@ -1986,17 +2002,6 @@ space character for whitespace. In tab format mode, the minimum | |||
| 1986 | column number for the statement body is 8, and the whitespace before | 2002 | column number for the statement body is 8, and the whitespace before |
| 1987 | column 8 must always consist of one tab character. | 2003 | column 8 must always consist of one tab character. |
| 1988 | 2004 | ||
| 1989 | @vindex fortran-tab-mode-default | ||
| 1990 | @vindex fortran-analyze-depth | ||
| 1991 | When you enter Fortran mode for an existing file, it tries to deduce the | ||
| 1992 | proper continuation style automatically from the file contents. The first | ||
| 1993 | line that begins with either a tab character or six spaces determines the | ||
| 1994 | choice. The variable @code{fortran-analyze-depth} specifies how many lines | ||
| 1995 | to consider (at the beginning of the file); if none of those lines | ||
| 1996 | indicates a style, then the variable @code{fortran-tab-mode-default} | ||
| 1997 | specifies the style. If it is @code{nil}, that specifies fixed format, and | ||
| 1998 | non-@code{nil} specifies tab format. | ||
| 1999 | |||
| 2000 | @node ForIndent Num | 2005 | @node ForIndent Num |
| 2001 | @subsubsection Line Numbers | 2006 | @subsubsection Line Numbers |
| 2002 | 2007 | ||
| @@ -2007,9 +2012,11 @@ through 4. (Columns always count from 0 in GNU Emacs.) | |||
| 2007 | @vindex fortran-line-number-indent | 2012 | @vindex fortran-line-number-indent |
| 2008 | Line numbers of four digits or less are normally indented one space. | 2013 | Line numbers of four digits or less are normally indented one space. |
| 2009 | The variable @code{fortran-line-number-indent} controls this; it | 2014 | The variable @code{fortran-line-number-indent} controls this; it |
| 2010 | specifies the maximum indentation a line number can have. Line numbers | 2015 | specifies the maximum indentation a line number can have. The default |
| 2011 | are right-justified to end in column 4 unless that would require more | 2016 | value of the variable is 1. Fortran mode tries to prevent line number |
| 2012 | than this maximum indentation. The default value of the variable is 1. | 2017 | digits passing column 4, reducing the indentation below the specified |
| 2018 | maximum if necessary. If @code{fortran-line-number-indent} has the | ||
| 2019 | value 5, line numbers are right-justified to end in column 4. | ||
| 2013 | 2020 | ||
| 2014 | @vindex fortran-electric-line-number | 2021 | @vindex fortran-electric-line-number |
| 2015 | Simply inserting a line number is enough to indent it according to | 2022 | Simply inserting a line number is enough to indent it according to |
| @@ -2062,54 +2069,59 @@ followed. | |||
| 2062 | Extra indentation within each level of @samp{do} statement (default 3). | 2069 | Extra indentation within each level of @samp{do} statement (default 3). |
| 2063 | 2070 | ||
| 2064 | @item fortran-if-indent | 2071 | @item fortran-if-indent |
| 2065 | Extra indentation within each level of @samp{if} statement (default 3). | 2072 | Extra indentation within each level of @samp{if}, @samp{select case}, or |
| 2066 | This value is also used for extra indentation within each level of the | 2073 | @samp{where} statements (default 3). |
| 2067 | Fortran 90 @samp{where} statement. | ||
| 2068 | 2074 | ||
| 2069 | @item fortran-structure-indent | 2075 | @item fortran-structure-indent |
| 2070 | Extra indentation within each level of @samp{structure}, @samp{union}, or | 2076 | Extra indentation within each level of @samp{structure}, @samp{union}, |
| 2071 | @samp{map} statements (default 3). | 2077 | @samp{map}, or @samp{interface} statements (default 3). |
| 2072 | 2078 | ||
| 2073 | @item fortran-continuation-indent | 2079 | @item fortran-continuation-indent |
| 2074 | Extra indentation for bodies of continuation lines (default 5). | 2080 | Extra indentation for bodies of continuation lines (default 5). |
| 2075 | 2081 | ||
| 2076 | @item fortran-check-all-num-for-matching-do | 2082 | @item fortran-check-all-num-for-matching-do |
| 2077 | If this is @code{nil}, indentation assumes that each @samp{do} statement | 2083 | In Fortran77, a numbered @samp{do} statement is ended by any statement |
| 2078 | ends on a @samp{continue} statement. Therefore, when computing | 2084 | with a matching line number. It is common (but not compulsory) to use a |
| 2079 | indentation for a statement other than @samp{continue}, it can save time | 2085 | @samp{continue} statement for this purpose. If this variable has a |
| 2080 | by not checking for a @samp{do} statement ending there. If this is | 2086 | non-@code{nil} value, indenting any numbered statement must check for a |
| 2081 | non-@code{nil}, indenting any numbered statement must check for a | 2087 | @samp{do} that ends there. If you always end @samp{do} statements with |
| 2082 | @samp{do} that ends there. The default is @code{nil}. | 2088 | a @samp{continue} line (or if you use the more modern @samp{enddo}), |
| 2089 | then you can speed up indentation by setting this variable to | ||
| 2090 | @code{nil}. The default is @code{nil}. | ||
| 2083 | 2091 | ||
| 2084 | @item fortran-blink-matching-if | 2092 | @item fortran-blink-matching-if |
| 2085 | If this is @code{t}, indenting an @samp{endif} statement moves the | 2093 | If this is @code{t}, indenting an @samp{endif} (or @samp{enddo} |
| 2086 | cursor momentarily to the matching @samp{if} statement to show where it | 2094 | statement moves the cursor momentarily to the matching @samp{if} (or |
| 2087 | is. The default is @code{nil}. | 2095 | @samp{do}) statement to show where it is. The default is @code{nil}. |
| 2088 | 2096 | ||
| 2089 | @item fortran-minimum-statement-indent-fixed | 2097 | @item fortran-minimum-statement-indent-fixed |
| 2090 | Minimum indentation for fortran statements when using fixed format | 2098 | Minimum indentation for Fortran statements when using fixed format |
| 2091 | continuation line style. Statement bodies are never indented less than | 2099 | continuation line style. Statement bodies are never indented less than |
| 2092 | this much. The default is 6. | 2100 | this much. The default is 6. |
| 2093 | 2101 | ||
| 2094 | @item fortran-minimum-statement-indent-tab | 2102 | @item fortran-minimum-statement-indent-tab |
| 2095 | Minimum indentation for fortran statements for tab format continuation line | 2103 | Minimum indentation for Fortran statements for tab format continuation line |
| 2096 | style. Statement bodies are never indented less than this much. The | 2104 | style. Statement bodies are never indented less than this much. The |
| 2097 | default is 8. | 2105 | default is 8. |
| 2098 | @end table | 2106 | @end table |
| 2099 | 2107 | ||
| 2108 | The variables controlling the indentation of comments are described in | ||
| 2109 | the following section. | ||
| 2110 | |||
| 2100 | @node Fortran Comments | 2111 | @node Fortran Comments |
| 2101 | @subsection Fortran Comments | 2112 | @subsection Fortran Comments |
| 2102 | 2113 | ||
| 2103 | The usual Emacs comment commands assume that a comment can follow a line | 2114 | The usual Emacs comment commands assume that a comment can follow a |
| 2104 | of code. In Fortran, the standard comment syntax requires an entire line | 2115 | line of code. In Fortran77, the standard comment syntax requires an |
| 2105 | to be just a comment. Therefore, Fortran mode replaces the standard Emacs | 2116 | entire line to be just a comment. Therefore, Fortran mode replaces the |
| 2106 | comment commands and defines some new variables. | 2117 | standard Emacs comment commands and defines some new variables. |
| 2107 | 2118 | ||
| 2119 | @vindex fortran-comment-line-start | ||
| 2108 | Fortran mode can also handle the Fortran90 comment syntax where comments | 2120 | Fortran mode can also handle the Fortran90 comment syntax where comments |
| 2109 | start with @samp{!} and can follow other text. Because only some Fortran77 | 2121 | start with @samp{!} and can follow other text. Because only some Fortran77 |
| 2110 | compilers accept this syntax, Fortran mode will not insert such comments | 2122 | compilers accept this syntax, Fortran mode will not insert such comments |
| 2111 | unless you have said in advance to do so. To do this, set the variable | 2123 | unless you have said in advance to do so. To do this, set the variable |
| 2112 | @code{comment-start} to @samp{"!"} (@pxref{Variables}). | 2124 | @code{fortran-comment-line-start} to @samp{"!"}. |
| 2113 | 2125 | ||
| 2114 | @table @kbd | 2126 | @table @kbd |
| 2115 | @item M-; | 2127 | @item M-; |
| @@ -2123,6 +2135,7 @@ Turn all lines of the region into comments, or (with argument) turn them back | |||
| 2123 | into real code (@code{fortran-comment-region}). | 2135 | into real code (@code{fortran-comment-region}). |
| 2124 | @end table | 2136 | @end table |
| 2125 | 2137 | ||
| 2138 | @findex fortran-indent-comment | ||
| 2126 | @kbd{M-;} in Fortran mode is redefined as the command | 2139 | @kbd{M-;} in Fortran mode is redefined as the command |
| 2127 | @code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this | 2140 | @code{fortran-indent-comment}. Like the usual @kbd{M-;} command, this |
| 2128 | recognizes any kind of existing comment and aligns its text appropriately; | 2141 | recognizes any kind of existing comment and aligns its text appropriately; |
| @@ -2178,14 +2191,6 @@ never be indented at all, no matter what the value of | |||
| 2178 | lines are directives. Matching lines are never indented, and receive | 2191 | lines are directives. Matching lines are never indented, and receive |
| 2179 | distinctive font-locking. | 2192 | distinctive font-locking. |
| 2180 | 2193 | ||
| 2181 | @vindex comment-line-start | ||
| 2182 | @vindex comment-line-start-skip | ||
| 2183 | Fortran mode introduces two variables @code{comment-line-start} and | ||
| 2184 | @code{comment-line-start-skip}, which play for full-line comments the same | ||
| 2185 | roles played by @code{comment-start} and @code{comment-start-skip} for | ||
| 2186 | ordinary text-following comments. Normally these are set properly by | ||
| 2187 | Fortran mode, so you do not need to change them. | ||
| 2188 | |||
| 2189 | The normal Emacs comment command @kbd{C-x ;} has not been redefined. If | 2194 | The normal Emacs comment command @kbd{C-x ;} has not been redefined. If |
| 2190 | you use @samp{!} comments, this command can be used with them. Otherwise | 2195 | you use @samp{!} comments, this command can be used with them. Otherwise |
| 2191 | it is useless in Fortran mode. | 2196 | it is useless in Fortran mode. |
| @@ -2204,34 +2209,28 @@ of the name never conflict because in Lisp and in Emacs it is always | |||
| 2204 | clear from the context which one is meant. | 2209 | clear from the context which one is meant. |
| 2205 | 2210 | ||
| 2206 | @node Fortran Autofill | 2211 | @node Fortran Autofill |
| 2207 | @subsection Fortran Auto Fill Mode | 2212 | @subsection Auto Fill in Fortran Mode |
| 2208 | 2213 | ||
| 2209 | Fortran Auto Fill mode is a minor mode which automatically splits | 2214 | Fortran mode has specialized support for Auto Fill mode, which is a |
| 2210 | Fortran statements as you insert them when they become too wide. | 2215 | minor mode that automatically splits statements as you insert them when |
| 2211 | Splitting a statement involves making continuation lines using | 2216 | they become too wide. Splitting a statement involves making |
| 2212 | @code{fortran-continuation-string} (@pxref{ForIndent Cont}). This | 2217 | continuation lines using @code{fortran-continuation-string} |
| 2213 | splitting happens when you type @key{SPC}, @key{RET}, or @key{TAB}, and | 2218 | (@pxref{ForIndent Cont}). This splitting happens when you type |
| 2214 | also in the Fortran indentation commands. | 2219 | @key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran indentation |
| 2215 | 2220 | commands. You activate Auto Fill in Fortran mode in the normal way | |
| 2216 | @findex fortran-auto-fill-mode | 2221 | (@pxref{Auto Fill}). |
| 2217 | @kbd{M-x fortran-auto-fill-mode} toggles Fortran Auto Fill mode, | ||
| 2218 | which is a variant of normal Auto Fill mode (@pxref{Filling}) designed | ||
| 2219 | for Fortran programs. Fortran Auto Fill mode is a buffer-local minor | ||
| 2220 | mode (@pxref{Minor Modes}). When Fortran Auto Fill mode is in effect, | ||
| 2221 | the word @samp{Fill} appears in the mode line inside the parentheses. | ||
| 2222 | 2222 | ||
| 2223 | @vindex fortran-break-before-delimiters | 2223 | @vindex fortran-break-before-delimiters |
| 2224 | Fortran Auto Fill mode breaks lines at spaces or delimiters when the | 2224 | Auto Fill breaks lines at spaces or delimiters when the lines get |
| 2225 | lines get longer than the desired width (the value of @code{fill-column}). | 2225 | longer than the desired width (the value of @code{fill-column}). The |
| 2226 | The delimiters that Fortran Auto Fill mode may break at are @samp{,}, | 2226 | delimiters (besides whitespace) that Auto Fill can break at are |
| 2227 | @samp{'}, @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, and @samp{)}. | 2227 | @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>}, |
| 2228 | The line break comes after the delimiter if the variable | 2228 | and @samp{,}. The line break comes after the delimiter if the |
| 2229 | @code{fortran-break-before-delimiters} is @code{nil}. Otherwise (and by | 2229 | variable @code{fortran-break-before-delimiters} is @code{nil}. |
| 2230 | default), the break comes before the delimiter. | 2230 | Otherwise (and by default), the break comes before the delimiter. |
| 2231 | 2231 | ||
| 2232 | To enable this mode permanently, add a hook function to | 2232 | To enable Auto Fill in all Fortran buffers, add |
| 2233 | @code{fortran-mode-hook} to execute @code{(fortran-auto-fill-mode 1)}. | 2233 | @code{turn-on-auto-fill} to @code{fortran-mode-hook}. @xref{Hooks}. |
| 2234 | @xref{Hooks}. | ||
| 2235 | 2234 | ||
| 2236 | @node Fortran Columns | 2235 | @node Fortran Columns |
| 2237 | @subsection Checking Columns in Fortran | 2236 | @subsection Checking Columns in Fortran |
| @@ -2280,7 +2279,7 @@ display. | |||
| 2280 | @findex fortran-window-create-momentarily | 2279 | @findex fortran-window-create-momentarily |
| 2281 | @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily | 2280 | @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily |
| 2282 | splits the current window horizontally, making a window 72 columns | 2281 | splits the current window horizontally, making a window 72 columns |
| 2283 | wide, so you can see which lines that is too long. Type a space to | 2282 | wide, so you can see any lines that are too long. Type a space to |
| 2284 | restore the normal width. | 2283 | restore the normal width. |
| 2285 | 2284 | ||
| 2286 | @kindex C-u C-c C-w @r{(Fortran mode)} | 2285 | @kindex C-u C-c C-w @r{(Fortran mode)} |
diff --git a/man/text.texi b/man/text.texi index aba7496d5fc..958e18db8d5 100644 --- a/man/text.texi +++ b/man/text.texi | |||
| @@ -403,13 +403,13 @@ Text}). | |||
| 403 | * Fill Prefix:: Filling paragraphs that are indented | 403 | * Fill Prefix:: Filling paragraphs that are indented |
| 404 | or in a comment, etc. | 404 | or in a comment, etc. |
| 405 | * Adaptive Fill:: How Emacs can determine the fill prefix automatically. | 405 | * Adaptive Fill:: How Emacs can determine the fill prefix automatically. |
| 406 | * Longlines:: Editing text with very long lines. | ||
| 406 | @end menu | 407 | @end menu |
| 407 | 408 | ||
| 408 | @node Auto Fill | 409 | @node Auto Fill |
| 409 | @subsection Auto Fill Mode | 410 | @subsection Auto Fill Mode |
| 410 | @cindex Auto Fill mode | 411 | @cindex Auto Fill mode |
| 411 | @cindex mode, Auto Fill | 412 | @cindex mode, Auto Fill |
| 412 | @cindex word wrap | ||
| 413 | 413 | ||
| 414 | @dfn{Auto Fill} mode is a minor mode in which lines are broken | 414 | @dfn{Auto Fill} mode is a minor mode in which lines are broken |
| 415 | automatically when they become too wide. Breaking happens only when | 415 | automatically when they become too wide. Breaking happens only when |
| @@ -474,16 +474,19 @@ you type or modify them in other ways. It provides an effect similar | |||
| 474 | to typical word processor behavior. This works by running a | 474 | to typical word processor behavior. This works by running a |
| 475 | paragraph-filling command at suitable times. | 475 | paragraph-filling command at suitable times. |
| 476 | 476 | ||
| 477 | When you are typing text, only characters which normally trigger | ||
| 478 | auto filling, like the space character, will trigger refilling. This | ||
| 479 | is to avoid making it too slow. Apart from self-inserting characters, | ||
| 480 | other commands which modify the text cause refilling. | ||
| 481 | |||
| 482 | The current implementation is preliminary and probably not robust. | ||
| 483 | We expect to improve on it. | ||
| 484 | |||
| 485 | To toggle the use of Refill mode in the current buffer, type | 477 | To toggle the use of Refill mode in the current buffer, type |
| 486 | @kbd{M-x refill-mode}. | 478 | @kbd{M-x refill-mode}. When you are typing text, only characters |
| 479 | which normally trigger auto filling, like the space character, will | ||
| 480 | trigger refilling. This is to avoid making it too slow. Apart from | ||
| 481 | self-inserting characters, other commands which modify the text cause | ||
| 482 | refilling. | ||
| 483 | |||
| 484 | The current implementation is preliminary and not robust. You can | ||
| 485 | get better ``line wrapping'' behavior using Longlines mode. | ||
| 486 | @xref{Longlines}. However, Longlines mode has an important | ||
| 487 | side-effect: the newlines that it inserts for you are not saved to | ||
| 488 | disk, so the files that you make with Longlines mode will appear to be | ||
| 489 | completely unfilled if you edit them without Longlines mode. | ||
| 487 | 490 | ||
| 488 | @node Fill Commands | 491 | @node Fill Commands |
| 489 | @subsection Explicit Fill Commands | 492 | @subsection Explicit Fill Commands |
| @@ -745,6 +748,56 @@ line, and it should return the appropriate fill prefix based on that | |||
| 745 | line. If it returns @code{nil}, that means it sees no fill prefix in | 748 | line. If it returns @code{nil}, that means it sees no fill prefix in |
| 746 | that line. | 749 | that line. |
| 747 | 750 | ||
| 751 | @node Longlines | ||
| 752 | @subsection Long Lines Mode | ||
| 753 | @cindex refilling text, word processor style | ||
| 754 | @cindex modes, Long Lines | ||
| 755 | @cindex word wrap | ||
| 756 | @cindex Long Lines minor mode | ||
| 757 | |||
| 758 | Long Lines mode is a minor mode for @dfn{word wrapping}; it lets you | ||
| 759 | edit ``unfilled'' text files, which Emacs would normally display as a | ||
| 760 | bunch of extremely long lines. Many text editors, such as those built | ||
| 761 | into many web browsers, normally do word wrapping. | ||
| 762 | |||
| 763 | @findex longlines-mode | ||
| 764 | To enable Long Lines mode, type @kbd{M-x longlines-mode}. If the | ||
| 765 | text is full of long lines, this will ``wrap'' them | ||
| 766 | immediately---i.e., break up to fit in the window. As you edit the | ||
| 767 | text, Long Lines mode automatically re-wraps lines by inserting or | ||
| 768 | deleting @dfn{soft newlines} as necessary (@pxref{Hard and Soft | ||
| 769 | Newlines}.) These soft newlines won't show up when you save the | ||
| 770 | buffer into a file, or when you copy the text into the kill ring, | ||
| 771 | clipboard, or a register. | ||
| 772 | |||
| 773 | @findex longlines-auto-wrap | ||
| 774 | Word wrapping is @emph{not} the same as ordinary filling | ||
| 775 | (@pxref{Fill Commands}). It does not contract multiple spaces into a | ||
| 776 | single space, recognize fill prefixes (@pxref{Fill Prefix}), or | ||
| 777 | perform adaptive filling (@pxref{Adaptive Fill}). The reason for this | ||
| 778 | is that a wrapped line is still, conceptually, a single line. Each | ||
| 779 | soft newline is equivalent to exactly one space in that long line, and | ||
| 780 | vice versa. However, you can still call filling functions such as | ||
| 781 | @kbd{M-q}, and these will work as expected, inserting soft newlines | ||
| 782 | that won't show up on disk or when the text is copied. You can even | ||
| 783 | rely entirely on the normal fill commands by turning off automatic | ||
| 784 | line wrapping, with @kbd{C-u M-x longlines-auto-wrap}. To turn | ||
| 785 | automatic line wrapping back on, type @kbd{M-x longlines-auto-wrap}. | ||
| 786 | |||
| 787 | @findex longlines-show-hard-newlines | ||
| 788 | Whenever you type @kbd{RET}, you are inserting a hard newline. If | ||
| 789 | you want to see where all the hard newlines are, type @kbd{M-x | ||
| 790 | longlines-show-hard-newlines}. This will mark each hard newline with | ||
| 791 | a special symbol. The same command with a prefix argument turns this | ||
| 792 | display off. | ||
| 793 | |||
| 794 | Long Lines mode does not change normal text files that are already | ||
| 795 | filled, since the existing newlines are considered hard newlines. | ||
| 796 | Before Long Lines can do anything, you need to transform each | ||
| 797 | paragraph into a long line. One way is to set @code{fill-column} to a | ||
| 798 | large number (e.g., @kbd{C-u 9999 C-x f}), re-fill all the paragraphs, | ||
| 799 | and then set @code{fill-column} back to its original value. | ||
| 800 | |||
| 748 | @node Case | 801 | @node Case |
| 749 | @section Case Conversion Commands | 802 | @section Case Conversion Commands |
| 750 | @cindex case conversion | 803 | @cindex case conversion |
diff --git a/man/xresources.texi b/man/xresources.texi index c88ca6ad142..aaf7262d060 100644 --- a/man/xresources.texi +++ b/man/xresources.texi | |||
| @@ -52,7 +52,8 @@ Registry, under the key @samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} | |||
| 52 | and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}. | 52 | and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}. |
| 53 | The menu and scrollbars are native widgets on MS-Windows, so they are | 53 | The menu and scrollbars are native widgets on MS-Windows, so they are |
| 54 | only customizable via the system-wide settings in the Display Control | 54 | only customizable via the system-wide settings in the Display Control |
| 55 | Panel. | 55 | Panel. You can also set resources using the @samp{-xrm} command line |
| 56 | option (see below.) | ||
| 56 | 57 | ||
| 57 | Programs define named resources with particular meanings. They also | 58 | Programs define named resources with particular meanings. They also |
| 58 | define how to group resources into named classes. For instance, in | 59 | define how to group resources into named classes. For instance, in |
| @@ -668,8 +669,8 @@ or just the class. | |||
| 668 | @end table | 669 | @end table |
| 669 | 670 | ||
| 670 | @noindent | 671 | @noindent |
| 671 | You must soecify the class and the style in double-quotes, and put | 672 | You must specify the class and the style in double-quotes, and put |
| 672 | these commands at the top level in a @file{~/.gtkrc-2.0} file, like | 673 | these commands at the top level in the GTK customization file, like |
| 673 | this: | 674 | this: |
| 674 | 675 | ||
| 675 | @smallexample | 676 | @smallexample |
| @@ -782,7 +783,7 @@ widget "*emacs-menuitem* style "my_menu_style" | |||
| 782 | automatically applies only to Emacs, since other programs don't read | 783 | automatically applies only to Emacs, since other programs don't read |
| 783 | that file. For example, the drop down menu in the file dialog can not | 784 | that file. For example, the drop down menu in the file dialog can not |
| 784 | be customized by any absolute widget name, only by an absolute class | 785 | be customized by any absolute widget name, only by an absolute class |
| 785 | name. This is so because the widgets in the drop down menu do not | 786 | name. This is because the widgets in the drop down menu do not |
| 786 | have names and the menu is not contained in the Emacs GtkWindow. To | 787 | have names and the menu is not contained in the Emacs GtkWindow. To |
| 787 | have all menus in Emacs look the same, use this in | 788 | have all menus in Emacs look the same, use this in |
| 788 | @file{~/.emacs.d/gtkrc}: | 789 | @file{~/.emacs.d/gtkrc}: |
diff --git a/src/ChangeLog b/src/ChangeLog index 4ea174bdc60..34bf8b41b45 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,6 +1,81 @@ | |||
| 1 | 2005-04-04 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc. | ||
| 4 | |||
| 5 | * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry. | ||
| 6 | Call it again after autoload. | ||
| 7 | |||
| 8 | 2005-04-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 9 | |||
| 10 | * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling | ||
| 11 | mallopt. | ||
| 12 | |||
| 13 | * ralloc.c (r_alloc_init): Ditto. | ||
| 14 | |||
| 15 | 2005-04-01 Kenichi Handa <handa@m17n.org> | ||
| 16 | |||
| 17 | * lisp.h (Vascii_upcase_table, Vascii_canon_table, | ||
| 18 | Vascii_eqv_table): Extern them. | ||
| 19 | |||
| 20 | * casetab.c (set_case_table): If standard is nonzero, setup | ||
| 21 | Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table. | ||
| 22 | |||
| 23 | * search.c (looking_at_1): Use current_buffer->case_canon_table, | ||
| 24 | not DOWNCASE_TABLE. | ||
| 25 | (string_match_1): Likewise. | ||
| 26 | (fast_c_string_match_ignore_case): Use Vascii_canon_table, not | ||
| 27 | Vascii_downcase_table. | ||
| 28 | (fast_string_match_ignore_case): Likewise. | ||
| 29 | (search_buffer): Fix checking of boyer-moore usability. | ||
| 30 | (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. No | ||
| 31 | need of tranlating characters in PAT. Fix calculation of | ||
| 32 | simple_translate. | ||
| 33 | |||
| 34 | 2005-03-31 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 35 | |||
| 36 | * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap. | ||
| 37 | (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it. | ||
| 38 | Use XtNtopShadowPixel and XtNbottomShadowPixel. | ||
| 39 | (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't | ||
| 40 | really work and that breaks with some versions of Xaw3d. | ||
| 41 | |||
| 42 | 2005-03-31 Kenichi Handa <handa@m17n.org> | ||
| 43 | |||
| 44 | * coding.c (syms_of_coding): Fix previous change. | ||
| 45 | |||
| 46 | 2005-03-30 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 47 | |||
| 48 | * fileio.c (search_embedded_absfilename): Fix last change. | ||
| 49 | |||
| 50 | 2005-03-25 Kenichi Handa <handa@m17n.org> | ||
| 51 | |||
| 52 | * coding.c (syms_of_coding): Suggest to use set-coding-category in | ||
| 53 | the docstring of coding-category-list. | ||
| 54 | |||
| 55 | 2005-03-31 Kim F. Storm <storm@cua.dk> | ||
| 56 | |||
| 57 | * keyboard.c (Qmouse_fixup_help_message): New var. | ||
| 58 | (syms_of_keyboard): Intern and staticpro it. | ||
| 59 | (show_help_echo): Apply mouse-fixup-help-message to help string. | ||
| 60 | |||
| 61 | 2005-03-30 Kim F. Storm <storm@cua.dk> | ||
| 62 | |||
| 63 | * xdisp.c (display_line): Allow multiple overlay arrows in window. | ||
| 64 | |||
| 65 | 2005-03-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 66 | |||
| 67 | * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP. | ||
| 68 | (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p. | ||
| 69 | (Ffile_name_absolute_p): Use it. | ||
| 70 | (search_embedded_absfilename): New fun, extracted from | ||
| 71 | Fsubstitute_in_file_name. Use file_name_absolute_p. | ||
| 72 | Free the pw data after use. | ||
| 73 | (Fsubstitute_in_file_name): Use it. | ||
| 74 | After cutting a prefix, re-check file-name-handler. | ||
| 75 | |||
| 1 | 2005-03-26 Lennart Borgman <lennart.borgman.073@student.lu.se> | 76 | 2005-03-26 Lennart Borgman <lennart.borgman.073@student.lu.se> |
| 2 | 77 | ||
| 3 | * w32term.h (x_output): add focus_state. | 78 | * w32term.h (x_output): Add focus_state. |
| 4 | 79 | ||
| 5 | * w32term.c (x_focus_changed, w32_detect_focus_change): New functions. | 80 | * w32term.c (x_focus_changed, w32_detect_focus_change): New functions. |
| 6 | (w32_read_socket) [WM_SETFOCUS]: Call w32_detect_focus_change. | 81 | (w32_read_socket) [WM_SETFOCUS]: Call w32_detect_focus_change. |
diff --git a/src/alloc.c b/src/alloc.c index dbb77f77128..c29c4c8e7f6 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1934,14 +1934,18 @@ allocate_string_data (s, nchars, nbytes) | |||
| 1934 | mmap'ed data typically have an address towards the top of the | 1934 | mmap'ed data typically have an address towards the top of the |
| 1935 | address space, which won't fit into an EMACS_INT (at least on | 1935 | address space, which won't fit into an EMACS_INT (at least on |
| 1936 | 32-bit systems with the current tagging scheme). --fx */ | 1936 | 32-bit systems with the current tagging scheme). --fx */ |
| 1937 | BLOCK_INPUT; | ||
| 1937 | mallopt (M_MMAP_MAX, 0); | 1938 | mallopt (M_MMAP_MAX, 0); |
| 1939 | UNBLOCK_INPUT; | ||
| 1938 | #endif | 1940 | #endif |
| 1939 | 1941 | ||
| 1940 | b = (struct sblock *) lisp_malloc (size + GC_STRING_EXTRA, MEM_TYPE_NON_LISP); | 1942 | b = (struct sblock *) lisp_malloc (size + GC_STRING_EXTRA, MEM_TYPE_NON_LISP); |
| 1941 | 1943 | ||
| 1942 | #ifdef DOUG_LEA_MALLOC | 1944 | #ifdef DOUG_LEA_MALLOC |
| 1943 | /* Back to a reasonable maximum of mmap'ed areas. */ | 1945 | /* Back to a reasonable maximum of mmap'ed areas. */ |
| 1946 | BLOCK_INPUT; | ||
| 1944 | mallopt (M_MMAP_MAX, MMAP_MAX_AREAS); | 1947 | mallopt (M_MMAP_MAX, MMAP_MAX_AREAS); |
| 1948 | UNBLOCK_INPUT; | ||
| 1945 | #endif | 1949 | #endif |
| 1946 | 1950 | ||
| 1947 | b->next_free = &b->first_data; | 1951 | b->next_free = &b->first_data; |
| @@ -4684,6 +4688,8 @@ returns nil, because real GC can't be done. */) | |||
| 4684 | if (pure_bytes_used_before_overflow) | 4688 | if (pure_bytes_used_before_overflow) |
| 4685 | return Qnil; | 4689 | return Qnil; |
| 4686 | 4690 | ||
| 4691 | CHECK_CONS_LIST (); | ||
| 4692 | |||
| 4687 | /* Don't keep undo information around forever. | 4693 | /* Don't keep undo information around forever. |
| 4688 | Do this early on, so it is no problem if the user quits. */ | 4694 | Do this early on, so it is no problem if the user quits. */ |
| 4689 | { | 4695 | { |
| @@ -4878,6 +4884,8 @@ returns nil, because real GC can't be done. */) | |||
| 4878 | 4884 | ||
| 4879 | UNBLOCK_INPUT; | 4885 | UNBLOCK_INPUT; |
| 4880 | 4886 | ||
| 4887 | CHECK_CONS_LIST (); | ||
| 4888 | |||
| 4881 | /* clear_marks (); */ | 4889 | /* clear_marks (); */ |
| 4882 | gc_in_progress = 0; | 4890 | gc_in_progress = 0; |
| 4883 | 4891 | ||
diff --git a/src/casetab.c b/src/casetab.c index 5ba025e2b5a..d7dcb420c83 100644 --- a/src/casetab.c +++ b/src/casetab.c | |||
| @@ -162,7 +162,12 @@ set_case_table (table, standard) | |||
| 162 | XCHAR_TABLE (canon)->extras[2] = eqv; | 162 | XCHAR_TABLE (canon)->extras[2] = eqv; |
| 163 | 163 | ||
| 164 | if (standard) | 164 | if (standard) |
| 165 | Vascii_downcase_table = table; | 165 | { |
| 166 | Vascii_downcase_table = table; | ||
| 167 | Vascii_upcase_table = up; | ||
| 168 | Vascii_canon_table = canon; | ||
| 169 | Vascii_eqv_table = eqv; | ||
| 170 | } | ||
| 166 | else | 171 | else |
| 167 | { | 172 | { |
| 168 | current_buffer->downcase_table = table; | 173 | current_buffer->downcase_table = table; |
diff --git a/src/coding.c b/src/coding.c index 3b6b82aeea4..a1dd77872f5 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -7821,7 +7821,7 @@ associated with each coding-category one by one in this order. When | |||
| 7821 | one algorithm agrees with a byte sequence of source text, the coding | 7821 | one algorithm agrees with a byte sequence of source text, the coding |
| 7822 | system bound to the corresponding coding-category is selected. | 7822 | system bound to the corresponding coding-category is selected. |
| 7823 | 7823 | ||
| 7824 | Don't modify this variable directly, but use `set-coding-category'. */); | 7824 | Don't modify this variable directly, but use `set-coding-priority'. */); |
| 7825 | { | 7825 | { |
| 7826 | int i; | 7826 | int i; |
| 7827 | 7827 | ||
diff --git a/src/editfns.c b/src/editfns.c index 0587d66bb0f..f77b9cafc80 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Lisp functions pertaining to editing. | 1 | /* Lisp functions pertaining to editing. |
| 2 | Copyright (C) 1985,86,87,89,93,94,95,96,97,98,1999,2000,01,02,03,2004 | 2 | Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1997, 1998, |
| 3 | Free Software Foundation, Inc. | 3 | 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This file is part of GNU Emacs. | 5 | This file is part of GNU Emacs. |
| 6 | 6 | ||
| @@ -265,10 +265,7 @@ clip_to_bounds (lower, num, upper) | |||
| 265 | 265 | ||
| 266 | DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", | 266 | DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ", |
| 267 | doc: /* Set point to POSITION, a number or marker. | 267 | doc: /* Set point to POSITION, a number or marker. |
| 268 | Beginning of buffer is position (point-min), end is (point-max). | 268 | Beginning of buffer is position (point-min), end is (point-max). */) |
| 269 | If the position is in the middle of a multibyte form, | ||
| 270 | the actual point is set at the head of the multibyte form | ||
| 271 | except in the case that `enable-multibyte-characters' is nil. */) | ||
| 272 | (position) | 269 | (position) |
| 273 | register Lisp_Object position; | 270 | register Lisp_Object position; |
| 274 | { | 271 | { |
diff --git a/src/eval.c b/src/eval.c index bf4fec4f8a1..8700ca222ce 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2742,6 +2742,8 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */) | |||
| 2742 | if (debug_on_next_call) | 2742 | if (debug_on_next_call) |
| 2743 | do_debug_on_call (Qlambda); | 2743 | do_debug_on_call (Qlambda); |
| 2744 | 2744 | ||
| 2745 | CHECK_CONS_LIST (); | ||
| 2746 | |||
| 2745 | retry: | 2747 | retry: |
| 2746 | 2748 | ||
| 2747 | fun = args[0]; | 2749 | fun = args[0]; |
| @@ -2750,9 +2752,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */) | |||
| 2750 | 2752 | ||
| 2751 | if (SUBRP (fun)) | 2753 | if (SUBRP (fun)) |
| 2752 | { | 2754 | { |
| 2753 | CHECK_CONS_LIST (); | 2755 | if (numargs < XSUBR (fun)->min_args |
| 2754 | |||
| 2755 | if (numargs < XSUBR (fun)->min_args | ||
| 2756 | || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs)) | 2756 | || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs)) |
| 2757 | { | 2757 | { |
| 2758 | XSETFASTINT (lisp_numargs, numargs); | 2758 | XSETFASTINT (lisp_numargs, numargs); |
| @@ -2844,6 +2844,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */) | |||
| 2844 | else if (EQ (funcar, Qautoload)) | 2844 | else if (EQ (funcar, Qautoload)) |
| 2845 | { | 2845 | { |
| 2846 | do_autoload (fun, args[0]); | 2846 | do_autoload (fun, args[0]); |
| 2847 | CHECK_CONS_LIST (); | ||
| 2847 | goto retry; | 2848 | goto retry; |
| 2848 | } | 2849 | } |
| 2849 | else | 2850 | else |
diff --git a/src/fileio.c b/src/fileio.c index 60d9c46b6eb..e1da0fc6918 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -1016,7 +1016,7 @@ probably use `make-temp-file' instead, except in three circumstances: | |||
| 1016 | DEFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0, | 1016 | DEFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0, |
| 1017 | doc: /* Convert filename NAME to absolute, and canonicalize it. | 1017 | doc: /* Convert filename NAME to absolute, and canonicalize it. |
| 1018 | Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative | 1018 | Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative |
| 1019 | (does not start with slash); if DEFAULT-DIRECTORY is nil or missing, | 1019 | \(does not start with slash); if DEFAULT-DIRECTORY is nil or missing, |
| 1020 | the current buffer's value of default-directory is used. | 1020 | the current buffer's value of default-directory is used. |
| 1021 | File name components that are `.' are removed, and | 1021 | File name components that are `.' are removed, and |
| 1022 | so are file name components followed by `..', along with the `..' itself; | 1022 | so are file name components followed by `..', along with the `..' itself; |
| @@ -1466,7 +1466,7 @@ See also the function `substitute-in-file-name'. */) | |||
| 1466 | indirectly by prepending newdir to nm if necessary, and using | 1466 | indirectly by prepending newdir to nm if necessary, and using |
| 1467 | cwd (or the wd of newdir's drive) as the new newdir. */ | 1467 | cwd (or the wd of newdir's drive) as the new newdir. */ |
| 1468 | 1468 | ||
| 1469 | if (IS_DRIVE (newdir[0]) && newdir[1] == ':') | 1469 | if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1])) |
| 1470 | { | 1470 | { |
| 1471 | drive = newdir[0]; | 1471 | drive = newdir[0]; |
| 1472 | newdir += 2; | 1472 | newdir += 2; |
| @@ -1489,7 +1489,7 @@ See also the function `substitute-in-file-name'. */) | |||
| 1489 | } | 1489 | } |
| 1490 | 1490 | ||
| 1491 | /* Strip off drive name from prefix, if present. */ | 1491 | /* Strip off drive name from prefix, if present. */ |
| 1492 | if (IS_DRIVE (newdir[0]) && newdir[1] == ':') | 1492 | if (IS_DRIVE (newdir[0]) && IS_DEVICE_SEP (newdir[1])) |
| 1493 | { | 1493 | { |
| 1494 | drive = newdir[0]; | 1494 | drive = newdir[0]; |
| 1495 | newdir += 2; | 1495 | newdir += 2; |
| @@ -1723,7 +1723,7 @@ See also the function `substitute-in-file-name'. */) | |||
| 1723 | DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0, | 1723 | DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0, |
| 1724 | "Convert FILENAME to absolute, and canonicalize it.\n\ | 1724 | "Convert FILENAME to absolute, and canonicalize it.\n\ |
| 1725 | Second arg DEFAULT is directory to start with if FILENAME is relative\n\ | 1725 | Second arg DEFAULT is directory to start with if FILENAME is relative\n\ |
| 1726 | (does not start with slash); if DEFAULT is nil or missing,\n\ | 1726 | \(does not start with slash); if DEFAULT is nil or missing,\n\ |
| 1727 | the current buffer's value of default-directory is used.\n\ | 1727 | the current buffer's value of default-directory is used.\n\ |
| 1728 | Filenames containing `.' or `..' as components are simplified;\n\ | 1728 | Filenames containing `.' or `..' as components are simplified;\n\ |
| 1729 | initial `~/' expands to your home directory.\n\ | 1729 | initial `~/' expands to your home directory.\n\ |
| @@ -2042,6 +2042,75 @@ See also the function `substitute-in-file-name'.") | |||
| 2042 | } | 2042 | } |
| 2043 | #endif | 2043 | #endif |
| 2044 | 2044 | ||
| 2045 | /* If /~ or // appears, discard everything through first slash. */ | ||
| 2046 | static int | ||
| 2047 | file_name_absolute_p (filename) | ||
| 2048 | const unsigned char *filename; | ||
| 2049 | { | ||
| 2050 | return | ||
| 2051 | (IS_DIRECTORY_SEP (*filename) || *filename == '~' | ||
| 2052 | #ifdef VMS | ||
| 2053 | /* ??? This criterion is probably wrong for '<'. */ | ||
| 2054 | || index (filename, ':') || index (filename, '<') | ||
| 2055 | || (*filename == '[' && (filename[1] != '-' | ||
| 2056 | || (filename[2] != '.' && filename[2] != ']')) | ||
| 2057 | && filename[1] != '.') | ||
| 2058 | #endif /* VMS */ | ||
| 2059 | #ifdef DOS_NT | ||
| 2060 | || (IS_DRIVE (*filename) && IS_DEVICE_SEP (filename[1]) | ||
| 2061 | && IS_DIRECTORY_SEP (filename[2])) | ||
| 2062 | #endif | ||
| 2063 | ); | ||
| 2064 | } | ||
| 2065 | |||
| 2066 | static unsigned char * | ||
| 2067 | search_embedded_absfilename (nm, endp) | ||
| 2068 | unsigned char *nm, *endp; | ||
| 2069 | { | ||
| 2070 | unsigned char *p, *s; | ||
| 2071 | |||
| 2072 | for (p = nm + 1; p < endp; p++) | ||
| 2073 | { | ||
| 2074 | if ((0 | ||
| 2075 | #ifdef VMS | ||
| 2076 | || p[-1] == ':' || p[-1] == ']' || p[-1] == '>' | ||
| 2077 | #endif /* VMS */ | ||
| 2078 | || IS_DIRECTORY_SEP (p[-1])) | ||
| 2079 | && file_name_absolute_p (p) | ||
| 2080 | #if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN) | ||
| 2081 | /* // at start of file name is meaningful in Apollo, | ||
| 2082 | WindowsNT and Cygwin systems. */ | ||
| 2083 | && !(IS_DIRECTORY_SEP (p[0]) && p - 1 == nm) | ||
| 2084 | #endif /* not (APOLLO || WINDOWSNT || CYGWIN) */ | ||
| 2085 | ) | ||
| 2086 | { | ||
| 2087 | for (s = p; *s && (!IS_DIRECTORY_SEP (*s) | ||
| 2088 | #ifdef VMS | ||
| 2089 | && *s != ':' | ||
| 2090 | #endif /* VMS */ | ||
| 2091 | ); s++); | ||
| 2092 | if (p[0] == '~' && s > p + 1) /* we've got "/~something/" */ | ||
| 2093 | { | ||
| 2094 | unsigned char *o = alloca (s - p + 1); | ||
| 2095 | struct passwd *pw; | ||
| 2096 | bcopy (p, o, s - p); | ||
| 2097 | o [s - p] = 0; | ||
| 2098 | |||
| 2099 | /* If we have ~user and `user' exists, discard | ||
| 2100 | everything up to ~. But if `user' does not exist, leave | ||
| 2101 | ~user alone, it might be a literal file name. */ | ||
| 2102 | if ((pw = getpwnam (o + 1))) | ||
| 2103 | return p; | ||
| 2104 | else | ||
| 2105 | xfree (pw); | ||
| 2106 | } | ||
| 2107 | else | ||
| 2108 | return p; | ||
| 2109 | } | ||
| 2110 | } | ||
| 2111 | return NULL; | ||
| 2112 | } | ||
| 2113 | |||
| 2045 | DEFUN ("substitute-in-file-name", Fsubstitute_in_file_name, | 2114 | DEFUN ("substitute-in-file-name", Fsubstitute_in_file_name, |
| 2046 | Ssubstitute_in_file_name, 1, 1, 0, | 2115 | Ssubstitute_in_file_name, 1, 1, 0, |
| 2047 | doc: /* Substitute environment variables referred to in FILENAME. | 2116 | doc: /* Substitute environment variables referred to in FILENAME. |
| @@ -2063,7 +2132,6 @@ duplicates what `expand-file-name' does. */) | |||
| 2063 | int total = 0; | 2132 | int total = 0; |
| 2064 | int substituted = 0; | 2133 | int substituted = 0; |
| 2065 | unsigned char *xnm; | 2134 | unsigned char *xnm; |
| 2066 | struct passwd *pw; | ||
| 2067 | Lisp_Object handler; | 2135 | Lisp_Object handler; |
| 2068 | 2136 | ||
| 2069 | CHECK_STRING (filename); | 2137 | CHECK_STRING (filename); |
| @@ -2083,61 +2151,17 @@ duplicates what `expand-file-name' does. */) | |||
| 2083 | endp = nm + SBYTES (filename); | 2151 | endp = nm + SBYTES (filename); |
| 2084 | 2152 | ||
| 2085 | /* If /~ or // appears, discard everything through first slash. */ | 2153 | /* If /~ or // appears, discard everything through first slash. */ |
| 2086 | 2154 | p = search_embedded_absfilename (nm, endp); | |
| 2087 | for (p = nm; p != endp; p++) | 2155 | if (p) |
| 2088 | { | 2156 | /* Start over with the new string, so we check the file-name-handler |
| 2089 | if ((p[0] == '~' | 2157 | again. Important with filenames like "/home/foo//:/hello///there" |
| 2090 | #if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN) | 2158 | which whould substitute to "/:/hello///there" rather than "/there". */ |
| 2091 | /* // at start of file name is meaningful in Apollo, | 2159 | return Fsubstitute_in_file_name |
| 2092 | WindowsNT and Cygwin systems. */ | 2160 | (make_specified_string (p, -1, endp - p, |
| 2093 | || (IS_DIRECTORY_SEP (p[0]) && p - 1 != nm) | 2161 | STRING_MULTIBYTE (filename))); |
| 2094 | #else /* not (APOLLO || WINDOWSNT || CYGWIN) */ | ||
| 2095 | || IS_DIRECTORY_SEP (p[0]) | ||
| 2096 | #endif /* not (APOLLO || WINDOWSNT || CYGWIN) */ | ||
| 2097 | ) | ||
| 2098 | && p != nm | ||
| 2099 | && (0 | ||
| 2100 | #ifdef VMS | ||
| 2101 | || p[-1] == ':' || p[-1] == ']' || p[-1] == '>' | ||
| 2102 | #endif /* VMS */ | ||
| 2103 | || IS_DIRECTORY_SEP (p[-1]))) | ||
| 2104 | { | ||
| 2105 | for (s = p; *s && (!IS_DIRECTORY_SEP (*s) | ||
| 2106 | #ifdef VMS | ||
| 2107 | && *s != ':' | ||
| 2108 | #endif /* VMS */ | ||
| 2109 | ); s++); | ||
| 2110 | if (p[0] == '~' && s > p + 1) /* we've got "/~something/" */ | ||
| 2111 | { | ||
| 2112 | o = (unsigned char *) alloca (s - p + 1); | ||
| 2113 | bcopy ((char *) p, o, s - p); | ||
| 2114 | o [s - p] = 0; | ||
| 2115 | |||
| 2116 | pw = (struct passwd *) getpwnam (o + 1); | ||
| 2117 | } | ||
| 2118 | /* If we have ~/ or ~user and `user' exists, discard | ||
| 2119 | everything up to ~. But if `user' does not exist, leave | ||
| 2120 | ~user alone, it might be a literal file name. */ | ||
| 2121 | if (IS_DIRECTORY_SEP (p[0]) || s == p + 1 || pw) | ||
| 2122 | { | ||
| 2123 | nm = p; | ||
| 2124 | substituted = 1; | ||
| 2125 | } | ||
| 2126 | } | ||
| 2127 | #ifdef DOS_NT | ||
| 2128 | /* see comment in expand-file-name about drive specifiers */ | ||
| 2129 | else if (IS_DRIVE (p[0]) && p[1] == ':' | ||
| 2130 | && p > nm && IS_DIRECTORY_SEP (p[-1])) | ||
| 2131 | { | ||
| 2132 | nm = p; | ||
| 2133 | substituted = 1; | ||
| 2134 | } | ||
| 2135 | #endif /* DOS_NT */ | ||
| 2136 | } | ||
| 2137 | 2162 | ||
| 2138 | #ifdef VMS | 2163 | #ifdef VMS |
| 2139 | return make_specified_string (nm, -1, strlen (nm), | 2164 | return filename; |
| 2140 | STRING_MULTIBYTE (filename)); | ||
| 2141 | #else | 2165 | #else |
| 2142 | 2166 | ||
| 2143 | /* See if any variables are substituted into the string | 2167 | /* See if any variables are substituted into the string |
| @@ -2263,22 +2287,11 @@ duplicates what `expand-file-name' does. */) | |||
| 2263 | *x = 0; | 2287 | *x = 0; |
| 2264 | 2288 | ||
| 2265 | /* If /~ or // appears, discard everything through first slash. */ | 2289 | /* If /~ or // appears, discard everything through first slash. */ |
| 2266 | 2290 | while ((p = search_embedded_absfilename (xnm, x))) | |
| 2267 | for (p = xnm; p != x; p++) | 2291 | /* This time we do not start over because we've already expanded envvars |
| 2268 | if ((p[0] == '~' | 2292 | and replaced $$ with $. Maybe we should start over as well, but we'd |
| 2269 | #if defined (APOLLO) || defined (WINDOWSNT) || defined(CYGWIN) | 2293 | need to quote some $ to $$ first. */ |
| 2270 | || (IS_DIRECTORY_SEP (p[0]) && p - 1 != xnm) | 2294 | xnm = p; |
| 2271 | #else /* not (APOLLO || WINDOWSNT || CYGWIN) */ | ||
| 2272 | || IS_DIRECTORY_SEP (p[0]) | ||
| 2273 | #endif /* not (APOLLO || WINDOWSNT || CYGWIN) */ | ||
| 2274 | ) | ||
| 2275 | && p != xnm && IS_DIRECTORY_SEP (p[-1])) | ||
| 2276 | xnm = p; | ||
| 2277 | #ifdef DOS_NT | ||
| 2278 | else if (IS_DRIVE (p[0]) && p[1] == ':' | ||
| 2279 | && p > xnm && IS_DIRECTORY_SEP (p[-1])) | ||
| 2280 | xnm = p; | ||
| 2281 | #endif | ||
| 2282 | 2295 | ||
| 2283 | return make_specified_string (xnm, -1, x - xnm, STRING_MULTIBYTE (filename)); | 2296 | return make_specified_string (xnm, -1, x - xnm, STRING_MULTIBYTE (filename)); |
| 2284 | 2297 | ||
| @@ -2961,24 +2974,8 @@ On Unix, this is a name starting with a `/' or a `~'. */) | |||
| 2961 | (filename) | 2974 | (filename) |
| 2962 | Lisp_Object filename; | 2975 | Lisp_Object filename; |
| 2963 | { | 2976 | { |
| 2964 | const unsigned char *ptr; | ||
| 2965 | |||
| 2966 | CHECK_STRING (filename); | 2977 | CHECK_STRING (filename); |
| 2967 | ptr = SDATA (filename); | 2978 | return file_name_absolute_p (SDATA (filename)) ? Qt : Qnil; |
| 2968 | if (IS_DIRECTORY_SEP (*ptr) || *ptr == '~' | ||
| 2969 | #ifdef VMS | ||
| 2970 | /* ??? This criterion is probably wrong for '<'. */ | ||
| 2971 | || index (ptr, ':') || index (ptr, '<') | ||
| 2972 | || (*ptr == '[' && (ptr[1] != '-' || (ptr[2] != '.' && ptr[2] != ']')) | ||
| 2973 | && ptr[1] != '.') | ||
| 2974 | #endif /* VMS */ | ||
| 2975 | #ifdef DOS_NT | ||
| 2976 | || (IS_DRIVE (*ptr) && ptr[1] == ':' && IS_DIRECTORY_SEP (ptr[2])) | ||
| 2977 | #endif | ||
| 2978 | ) | ||
| 2979 | return Qt; | ||
| 2980 | else | ||
| 2981 | return Qnil; | ||
| 2982 | } | 2979 | } |
| 2983 | 2980 | ||
| 2984 | /* Return nonzero if file FILENAME exists and can be executed. */ | 2981 | /* Return nonzero if file FILENAME exists and can be executed. */ |
diff --git a/src/keyboard.c b/src/keyboard.c index f29a7676d34..39891b1a95d 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -514,6 +514,10 @@ Lisp_Object Qmake_frame_visible; | |||
| 514 | Lisp_Object Qselect_window; | 514 | Lisp_Object Qselect_window; |
| 515 | Lisp_Object Qhelp_echo; | 515 | Lisp_Object Qhelp_echo; |
| 516 | 516 | ||
| 517 | #ifdef HAVE_MOUSE | ||
| 518 | Lisp_Object Qmouse_fixup_help_message; | ||
| 519 | #endif | ||
| 520 | |||
| 517 | /* Symbols to denote kinds of events. */ | 521 | /* Symbols to denote kinds of events. */ |
| 518 | Lisp_Object Qfunction_key; | 522 | Lisp_Object Qfunction_key; |
| 519 | Lisp_Object Qmouse_click; | 523 | Lisp_Object Qmouse_click; |
| @@ -2298,6 +2302,11 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo) | |||
| 2298 | return; | 2302 | return; |
| 2299 | } | 2303 | } |
| 2300 | 2304 | ||
| 2305 | #ifdef HAVE_MOUSE | ||
| 2306 | if (!noninteractive && STRINGP (help)) | ||
| 2307 | help = call1 (Qmouse_fixup_help_message, help); | ||
| 2308 | #endif | ||
| 2309 | |||
| 2301 | if (STRINGP (help) || NILP (help)) | 2310 | if (STRINGP (help) || NILP (help)) |
| 2302 | { | 2311 | { |
| 2303 | if (!NILP (Vshow_help_function)) | 2312 | if (!NILP (Vshow_help_function)) |
| @@ -11010,6 +11019,11 @@ syms_of_keyboard () | |||
| 11010 | Qmenu_bar = intern ("menu-bar"); | 11019 | Qmenu_bar = intern ("menu-bar"); |
| 11011 | staticpro (&Qmenu_bar); | 11020 | staticpro (&Qmenu_bar); |
| 11012 | 11021 | ||
| 11022 | #ifdef HAVE_MOUSE | ||
| 11023 | Qmouse_fixup_help_message = intern ("mouse-fixup-help-message"); | ||
| 11024 | staticpro (&Qmouse_fixup_help_message); | ||
| 11025 | #endif | ||
| 11026 | |||
| 11013 | Qabove_handle = intern ("above-handle"); | 11027 | Qabove_handle = intern ("above-handle"); |
| 11014 | staticpro (&Qabove_handle); | 11028 | staticpro (&Qabove_handle); |
| 11015 | Qhandle = intern ("handle"); | 11029 | Qhandle = intern ("handle"); |
diff --git a/src/lisp.h b/src/lisp.h index f770a29cf4f..e1727697802 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1861,7 +1861,8 @@ extern Lisp_Object case_temp2; | |||
| 1861 | NATNUMP (case_temp2)) \ | 1861 | NATNUMP (case_temp2)) \ |
| 1862 | ? XFASTINT (case_temp2) : case_temp1) | 1862 | ? XFASTINT (case_temp2) : case_temp1) |
| 1863 | 1863 | ||
| 1864 | extern Lisp_Object Vascii_downcase_table; | 1864 | extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table; |
| 1865 | extern Lisp_Object Vascii_canon_table, Vascii_eqv_table; | ||
| 1865 | 1866 | ||
| 1866 | /* Number of bytes of structure consed since last GC. */ | 1867 | /* Number of bytes of structure consed since last GC. */ |
| 1867 | 1868 | ||
diff --git a/src/ralloc.c b/src/ralloc.c index 75c25258a9d..fd0d62e1977 100644 --- a/src/ralloc.c +++ b/src/ralloc.c | |||
| @@ -28,6 +28,7 @@ Boston, MA 02111-1307, USA. */ | |||
| 28 | 28 | ||
| 29 | #include <config.h> | 29 | #include <config.h> |
| 30 | #include "lisp.h" /* Needed for VALBITS. */ | 30 | #include "lisp.h" /* Needed for VALBITS. */ |
| 31 | #include "blockinput.h" | ||
| 31 | 32 | ||
| 32 | #ifdef HAVE_UNISTD_H | 33 | #ifdef HAVE_UNISTD_H |
| 33 | #include <unistd.h> | 34 | #include <unistd.h> |
| @@ -1255,7 +1256,9 @@ r_alloc_init () | |||
| 1255 | #endif | 1256 | #endif |
| 1256 | 1257 | ||
| 1257 | #ifdef DOUG_LEA_MALLOC | 1258 | #ifdef DOUG_LEA_MALLOC |
| 1258 | mallopt (M_TOP_PAD, 64 * 4096); | 1259 | BLOCK_INPUT; |
| 1260 | mallopt (M_TOP_PAD, 64 * 4096); | ||
| 1261 | UNBLOCK_INPUT; | ||
| 1259 | #else | 1262 | #else |
| 1260 | #ifndef SYSTEM_MALLOC | 1263 | #ifndef SYSTEM_MALLOC |
| 1261 | /* Give GNU malloc's morecore some hysteresis | 1264 | /* Give GNU malloc's morecore some hysteresis |
diff --git a/src/search.c b/src/search.c index 7e990f2bfd7..d86a7cca7b2 100644 --- a/src/search.c +++ b/src/search.c | |||
| @@ -293,7 +293,7 @@ looking_at_1 (string, posix) | |||
| 293 | CHECK_STRING (string); | 293 | CHECK_STRING (string); |
| 294 | bufp = compile_pattern (string, &search_regs, | 294 | bufp = compile_pattern (string, &search_regs, |
| 295 | (!NILP (current_buffer->case_fold_search) | 295 | (!NILP (current_buffer->case_fold_search) |
| 296 | ? DOWNCASE_TABLE : Qnil), | 296 | ? current_buffer->case_canon_table : Qnil), |
| 297 | posix, | 297 | posix, |
| 298 | !NILP (current_buffer->enable_multibyte_characters)); | 298 | !NILP (current_buffer->enable_multibyte_characters)); |
| 299 | 299 | ||
| @@ -399,7 +399,7 @@ string_match_1 (regexp, string, start, posix) | |||
| 399 | 399 | ||
| 400 | bufp = compile_pattern (regexp, &search_regs, | 400 | bufp = compile_pattern (regexp, &search_regs, |
| 401 | (!NILP (current_buffer->case_fold_search) | 401 | (!NILP (current_buffer->case_fold_search) |
| 402 | ? DOWNCASE_TABLE : Qnil), | 402 | ? current_buffer->case_canon_table : Qnil), |
| 403 | posix, | 403 | posix, |
| 404 | STRING_MULTIBYTE (string)); | 404 | STRING_MULTIBYTE (string)); |
| 405 | immediate_quit = 1; | 405 | immediate_quit = 1; |
| @@ -499,7 +499,7 @@ fast_c_string_match_ignore_case (regexp, string) | |||
| 499 | regexp = string_make_unibyte (regexp); | 499 | regexp = string_make_unibyte (regexp); |
| 500 | re_match_object = Qt; | 500 | re_match_object = Qt; |
| 501 | bufp = compile_pattern (regexp, 0, | 501 | bufp = compile_pattern (regexp, 0, |
| 502 | Vascii_downcase_table, 0, | 502 | Vascii_canon_table, 0, |
| 503 | 0); | 503 | 0); |
| 504 | immediate_quit = 1; | 504 | immediate_quit = 1; |
| 505 | val = re_search (bufp, string, len, 0, len, 0); | 505 | val = re_search (bufp, string, len, 0, len, 0); |
| @@ -516,7 +516,7 @@ fast_string_match_ignore_case (regexp, string) | |||
| 516 | int val; | 516 | int val; |
| 517 | struct re_pattern_buffer *bufp; | 517 | struct re_pattern_buffer *bufp; |
| 518 | 518 | ||
| 519 | bufp = compile_pattern (regexp, 0, Vascii_downcase_table, | 519 | bufp = compile_pattern (regexp, 0, Vascii_canon_table, |
| 520 | 0, STRING_MULTIBYTE (string)); | 520 | 0, STRING_MULTIBYTE (string)); |
| 521 | immediate_quit = 1; | 521 | immediate_quit = 1; |
| 522 | re_match_object = string; | 522 | re_match_object = string; |
| @@ -1175,7 +1175,9 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, | |||
| 1175 | unsigned char *patbuf; | 1175 | unsigned char *patbuf; |
| 1176 | int multibyte = !NILP (current_buffer->enable_multibyte_characters); | 1176 | int multibyte = !NILP (current_buffer->enable_multibyte_characters); |
| 1177 | unsigned char *base_pat = SDATA (string); | 1177 | unsigned char *base_pat = SDATA (string); |
| 1178 | int charset_base = -1; | 1178 | /* Set to nozero if we find a non-ASCII char that need |
| 1179 | translation. */ | ||
| 1180 | int charset_base = 0; | ||
| 1179 | int boyer_moore_ok = 1; | 1181 | int boyer_moore_ok = 1; |
| 1180 | 1182 | ||
| 1181 | /* MULTIBYTE says whether the text to be searched is multibyte. | 1183 | /* MULTIBYTE says whether the text to be searched is multibyte. |
| @@ -1221,9 +1223,17 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, | |||
| 1221 | base_pat = raw_pattern; | 1223 | base_pat = raw_pattern; |
| 1222 | if (multibyte) | 1224 | if (multibyte) |
| 1223 | { | 1225 | { |
| 1226 | /* Fill patbuf by translated characters in STRING while | ||
| 1227 | checking if we can use boyer-moore search. If TRT is | ||
| 1228 | non-nil, we can use boyer-moore search only if TRT can be | ||
| 1229 | represented by the byte array of 256 elements. For that, | ||
| 1230 | all non-ASCII case-equivalents of all case-senstive | ||
| 1231 | characters in STRING must belong to the same charset and | ||
| 1232 | row. */ | ||
| 1233 | |||
| 1224 | while (--len >= 0) | 1234 | while (--len >= 0) |
| 1225 | { | 1235 | { |
| 1226 | unsigned char str[MAX_MULTIBYTE_LENGTH]; | 1236 | unsigned char str_base[MAX_MULTIBYTE_LENGTH], *str; |
| 1227 | int c, translated, inverse; | 1237 | int c, translated, inverse; |
| 1228 | int in_charlen, charlen; | 1238 | int in_charlen, charlen; |
| 1229 | 1239 | ||
| @@ -1233,50 +1243,62 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, | |||
| 1233 | if (RE && *base_pat == '\\') | 1243 | if (RE && *base_pat == '\\') |
| 1234 | { | 1244 | { |
| 1235 | len--; | 1245 | len--; |
| 1246 | raw_pattern_size--; | ||
| 1236 | len_byte--; | 1247 | len_byte--; |
| 1237 | base_pat++; | 1248 | base_pat++; |
| 1238 | } | 1249 | } |
| 1239 | 1250 | ||
| 1240 | c = STRING_CHAR_AND_LENGTH (base_pat, len_byte, in_charlen); | 1251 | c = STRING_CHAR_AND_LENGTH (base_pat, len_byte, in_charlen); |
| 1241 | 1252 | ||
| 1242 | /* Translate the character, if requested. */ | 1253 | if (NILP (trt)) |
| 1243 | TRANSLATE (translated, trt, c); | ||
| 1244 | /* If translation changed the byte-length, go back | ||
| 1245 | to the original character. */ | ||
| 1246 | charlen = CHAR_STRING (translated, str); | ||
| 1247 | if (in_charlen != charlen) | ||
| 1248 | { | 1254 | { |
| 1249 | translated = c; | 1255 | str = base_pat; |
| 1250 | charlen = CHAR_STRING (c, str); | 1256 | charlen = in_charlen; |
| 1251 | } | 1257 | } |
| 1252 | 1258 | else | |
| 1253 | /* If we are searching for something strange, | ||
| 1254 | an invalid multibyte code, don't use boyer-moore. */ | ||
| 1255 | if (! ASCII_BYTE_P (translated) | ||
| 1256 | && (charlen == 1 /* 8bit code */ | ||
| 1257 | || charlen != in_charlen /* invalid multibyte code */ | ||
| 1258 | )) | ||
| 1259 | boyer_moore_ok = 0; | ||
| 1260 | |||
| 1261 | TRANSLATE (inverse, inverse_trt, c); | ||
| 1262 | |||
| 1263 | /* Did this char actually get translated? | ||
| 1264 | Would any other char get translated into it? */ | ||
| 1265 | if (translated != c || inverse != c) | ||
| 1266 | { | 1259 | { |
| 1267 | /* Keep track of which character set row | 1260 | /* Translate the character. */ |
| 1268 | contains the characters that need translation. */ | 1261 | TRANSLATE (translated, trt, c); |
| 1269 | int charset_base_code = c & ~CHAR_FIELD3_MASK; | 1262 | charlen = CHAR_STRING (translated, str_base); |
| 1270 | int inverse_charset_base = inverse & ~CHAR_FIELD3_MASK; | 1263 | str = str_base; |
| 1271 | 1264 | ||
| 1272 | if (charset_base_code != inverse_charset_base) | 1265 | /* Check if C has any other case-equivalents. */ |
| 1273 | boyer_moore_ok = 0; | 1266 | TRANSLATE (inverse, inverse_trt, c); |
| 1274 | else if (charset_base == -1) | 1267 | /* If so, check if we can use boyer-moore. */ |
| 1275 | charset_base = charset_base_code; | 1268 | if (c != inverse && boyer_moore_ok) |
| 1276 | else if (charset_base != charset_base_code) | 1269 | { |
| 1277 | /* If two different rows appear, needing translation, | 1270 | /* Check if all equivalents belong to the same |
| 1278 | then we cannot use boyer_moore search. */ | 1271 | charset & row. Note that the check of C |
| 1279 | boyer_moore_ok = 0; | 1272 | itself is done by the last iteration. Note |
| 1273 | also that we don't have to check ASCII | ||
| 1274 | characters because boyer-moore search can | ||
| 1275 | always handle their translation. */ | ||
| 1276 | while (1) | ||
| 1277 | { | ||
| 1278 | if (! ASCII_BYTE_P (inverse)) | ||
| 1279 | { | ||
| 1280 | if (SINGLE_BYTE_CHAR_P (inverse)) | ||
| 1281 | { | ||
| 1282 | /* Boyer-moore search can't handle a | ||
| 1283 | translation of an eight-bit | ||
| 1284 | character. */ | ||
| 1285 | boyer_moore_ok = 0; | ||
| 1286 | break; | ||
| 1287 | } | ||
| 1288 | else if (charset_base == 0) | ||
| 1289 | charset_base = inverse & ~CHAR_FIELD3_MASK; | ||
| 1290 | else if ((inverse & ~CHAR_FIELD3_MASK) | ||
| 1291 | != charset_base) | ||
| 1292 | { | ||
| 1293 | boyer_moore_ok = 0; | ||
| 1294 | break; | ||
| 1295 | } | ||
| 1296 | } | ||
| 1297 | if (c == inverse) | ||
| 1298 | break; | ||
| 1299 | TRANSLATE (inverse, inverse_trt, inverse); | ||
| 1300 | } | ||
| 1301 | } | ||
| 1280 | } | 1302 | } |
| 1281 | 1303 | ||
| 1282 | /* Store this character into the translated pattern. */ | 1304 | /* Store this character into the translated pattern. */ |
| @@ -1300,6 +1322,7 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, | |||
| 1300 | if (RE && *base_pat == '\\') | 1322 | if (RE && *base_pat == '\\') |
| 1301 | { | 1323 | { |
| 1302 | len--; | 1324 | len--; |
| 1325 | raw_pattern_size--; | ||
| 1303 | base_pat++; | 1326 | base_pat++; |
| 1304 | } | 1327 | } |
| 1305 | c = *base_pat++; | 1328 | c = *base_pat++; |
| @@ -1533,16 +1556,18 @@ simple_search (n, pat, len, len_byte, trt, pos, pos_byte, lim, lim_byte) | |||
| 1533 | return n; | 1556 | return n; |
| 1534 | } | 1557 | } |
| 1535 | 1558 | ||
| 1536 | /* Do Boyer-Moore search N times for the string PAT, | 1559 | /* Do Boyer-Moore search N times for the string BASE_PAT, |
| 1537 | whose length is LEN/LEN_BYTE, | 1560 | whose length is LEN/LEN_BYTE, |
| 1538 | from buffer position POS/POS_BYTE until LIM/LIM_BYTE. | 1561 | from buffer position POS/POS_BYTE until LIM/LIM_BYTE. |
| 1539 | DIRECTION says which direction we search in. | 1562 | DIRECTION says which direction we search in. |
| 1540 | TRT and INVERSE_TRT are translation tables. | 1563 | TRT and INVERSE_TRT are translation tables. |
| 1564 | Characters in PAT are already translated by TRT. | ||
| 1541 | 1565 | ||
| 1542 | This kind of search works if all the characters in PAT that have | 1566 | This kind of search works if all the characters in BASE_PAT that |
| 1543 | nontrivial translation are the same aside from the last byte. This | 1567 | have nontrivial translation are the same aside from the last byte. |
| 1544 | makes it possible to translate just the last byte of a character, | 1568 | This makes it possible to translate just the last byte of a |
| 1545 | and do so after just a simple test of the context. | 1569 | character, and do so after just a simple test of the context. |
| 1570 | CHARSET_BASE is nonzero iff there is such a non-ASCII character. | ||
| 1546 | 1571 | ||
| 1547 | If that criterion is not satisfied, do not call this function. */ | 1572 | If that criterion is not satisfied, do not call this function. */ |
| 1548 | 1573 | ||
| @@ -1569,8 +1594,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt, | |||
| 1569 | int multibyte = ! NILP (current_buffer->enable_multibyte_characters); | 1594 | int multibyte = ! NILP (current_buffer->enable_multibyte_characters); |
| 1570 | 1595 | ||
| 1571 | unsigned char simple_translate[0400]; | 1596 | unsigned char simple_translate[0400]; |
| 1572 | int translate_prev_byte = 0; | 1597 | /* These are set to the preceding bytes of a byte to be translated |
| 1573 | int translate_anteprev_byte = 0; | 1598 | if charset_base is nonzero. As the maximum byte length of a |
| 1599 | multibyte character is 4, we have to check at most three previous | ||
| 1600 | bytes. */ | ||
| 1601 | int translate_prev_byte1 = 0; | ||
| 1602 | int translate_prev_byte2 = 0; | ||
| 1603 | int translate_prev_byte3 = 0; | ||
| 1574 | 1604 | ||
| 1575 | #ifdef C_ALLOCA | 1605 | #ifdef C_ALLOCA |
| 1576 | int BM_tab_space[0400]; | 1606 | int BM_tab_space[0400]; |
| @@ -1636,6 +1666,23 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt, | |||
| 1636 | for (i = 0; i < 0400; i++) | 1666 | for (i = 0; i < 0400; i++) |
| 1637 | simple_translate[i] = i; | 1667 | simple_translate[i] = i; |
| 1638 | 1668 | ||
| 1669 | if (charset_base) | ||
| 1670 | { | ||
| 1671 | /* Setup translate_prev_byte1/2/3 from CHARSET_BASE. Only a | ||
| 1672 | byte following them are the target of translation. */ | ||
| 1673 | int sample_char = charset_base | 0x20; | ||
| 1674 | unsigned char str[MAX_MULTIBYTE_LENGTH]; | ||
| 1675 | int len = CHAR_STRING (sample_char, str); | ||
| 1676 | |||
| 1677 | translate_prev_byte1 = str[len - 2]; | ||
| 1678 | if (len > 2) | ||
| 1679 | { | ||
| 1680 | translate_prev_byte2 = str[len - 3]; | ||
| 1681 | if (len > 3) | ||
| 1682 | translate_prev_byte3 = str[len - 4]; | ||
| 1683 | } | ||
| 1684 | } | ||
| 1685 | |||
| 1639 | i = 0; | 1686 | i = 0; |
| 1640 | while (i != infinity) | 1687 | while (i != infinity) |
| 1641 | { | 1688 | { |
| @@ -1645,57 +1692,37 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt, | |||
| 1645 | i = infinity; | 1692 | i = infinity; |
| 1646 | if (! NILP (trt)) | 1693 | if (! NILP (trt)) |
| 1647 | { | 1694 | { |
| 1648 | int ch; | 1695 | /* If the byte currently looking at is a head of a character |
| 1649 | int untranslated; | 1696 | to check case-equivalents, set CH to that character. An |
| 1650 | int this_translated = 1; | 1697 | ASCII character and a non-ASCII character matching with |
| 1651 | 1698 | CHARSET_BASE are to be checked. */ | |
| 1652 | if (multibyte | 1699 | int ch = -1; |
| 1653 | /* Is *PTR the last byte of a character? */ | 1700 | |
| 1654 | && (pat_end - ptr == 1 || CHAR_HEAD_P (ptr[1]))) | 1701 | if (ASCII_BYTE_P (*ptr) || ! multibyte) |
| 1702 | ch = *ptr; | ||
| 1703 | else if (charset_base && CHAR_HEAD_P (*ptr)) | ||
| 1655 | { | 1704 | { |
| 1656 | unsigned char *charstart = ptr; | 1705 | ch = STRING_CHAR (ptr, pat_end - ptr); |
| 1657 | while (! CHAR_HEAD_P (*charstart)) | 1706 | if (charset_base != (ch & ~CHAR_FIELD3_MASK)) |
| 1658 | charstart--; | 1707 | ch = -1; |
| 1659 | untranslated = STRING_CHAR (charstart, ptr - charstart + 1); | ||
| 1660 | if (charset_base == (untranslated & ~CHAR_FIELD3_MASK)) | ||
| 1661 | { | ||
| 1662 | TRANSLATE (ch, trt, untranslated); | ||
| 1663 | if (! CHAR_HEAD_P (*ptr)) | ||
| 1664 | { | ||
| 1665 | translate_prev_byte = ptr[-1]; | ||
| 1666 | if (! CHAR_HEAD_P (translate_prev_byte)) | ||
| 1667 | translate_anteprev_byte = ptr[-2]; | ||
| 1668 | } | ||
| 1669 | } | ||
| 1670 | else | ||
| 1671 | { | ||
| 1672 | this_translated = 0; | ||
| 1673 | ch = *ptr; | ||
| 1674 | } | ||
| 1675 | } | 1708 | } |
| 1676 | else if (!multibyte) | ||
| 1677 | TRANSLATE (ch, trt, *ptr); | ||
| 1678 | else | ||
| 1679 | { | ||
| 1680 | ch = *ptr; | ||
| 1681 | this_translated = 0; | ||
| 1682 | } | ||
| 1683 | |||
| 1684 | if (ch > 0400) | ||
| 1685 | j = ((unsigned char) ch) | 0200; | ||
| 1686 | else | ||
| 1687 | j = (unsigned char) ch; | ||
| 1688 | 1709 | ||
| 1710 | j = *ptr; | ||
| 1689 | if (i == infinity) | 1711 | if (i == infinity) |
| 1690 | stride_for_teases = BM_tab[j]; | 1712 | stride_for_teases = BM_tab[j]; |
| 1691 | 1713 | ||
| 1692 | BM_tab[j] = dirlen - i; | 1714 | BM_tab[j] = dirlen - i; |
| 1693 | /* A translation table is accompanied by its inverse -- see */ | 1715 | /* A translation table is accompanied by its inverse -- see */ |
| 1694 | /* comment following downcase_table for details */ | 1716 | /* comment following downcase_table for details */ |
| 1695 | if (this_translated) | 1717 | if (ch >= 0) |
| 1696 | { | 1718 | { |
| 1697 | int starting_ch = ch; | 1719 | int starting_ch = ch; |
| 1698 | int starting_j = j; | 1720 | int starting_j; |
| 1721 | |||
| 1722 | if (ch > 0400) | ||
| 1723 | starting_j = ((unsigned char) ch) | 0200; | ||
| 1724 | else | ||
| 1725 | starting_j = (unsigned char) ch; | ||
| 1699 | while (1) | 1726 | while (1) |
| 1700 | { | 1727 | { |
| 1701 | TRANSLATE (ch, inverse_trt, ch); | 1728 | TRANSLATE (ch, inverse_trt, ch); |
| @@ -1821,9 +1848,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt, | |||
| 1821 | || ((cursor == tail_end_ptr | 1848 | || ((cursor == tail_end_ptr |
| 1822 | || CHAR_HEAD_P (cursor[1])) | 1849 | || CHAR_HEAD_P (cursor[1])) |
| 1823 | && (CHAR_HEAD_P (cursor[0]) | 1850 | && (CHAR_HEAD_P (cursor[0]) |
| 1824 | || (translate_prev_byte == cursor[-1] | 1851 | /* Check if this is the last byte of |
| 1825 | && (CHAR_HEAD_P (translate_prev_byte) | 1852 | a translable character. */ |
| 1826 | || translate_anteprev_byte == cursor[-2]))))) | 1853 | || (translate_prev_byte1 == cursor[-1] |
| 1854 | && (CHAR_HEAD_P (translate_prev_byte1) | ||
| 1855 | || (translate_prev_byte2 == cursor[-2] | ||
| 1856 | && (CHAR_HEAD_P (translate_prev_byte2) | ||
| 1857 | || (translate_prev_byte3 == cursor[-3])))))))) | ||
| 1827 | ch = simple_translate[*cursor]; | 1858 | ch = simple_translate[*cursor]; |
| 1828 | else | 1859 | else |
| 1829 | ch = *cursor; | 1860 | ch = *cursor; |
| @@ -1901,9 +1932,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt, | |||
| 1901 | || ((ptr == tail_end_ptr | 1932 | || ((ptr == tail_end_ptr |
| 1902 | || CHAR_HEAD_P (ptr[1])) | 1933 | || CHAR_HEAD_P (ptr[1])) |
| 1903 | && (CHAR_HEAD_P (ptr[0]) | 1934 | && (CHAR_HEAD_P (ptr[0]) |
| 1904 | || (translate_prev_byte == ptr[-1] | 1935 | /* Check if this is the last byte of a |
| 1905 | && (CHAR_HEAD_P (translate_prev_byte) | 1936 | translable character. */ |
| 1906 | || translate_anteprev_byte == ptr[-2]))))) | 1937 | || (translate_prev_byte1 == ptr[-1] |
| 1938 | && (CHAR_HEAD_P (translate_prev_byte1) | ||
| 1939 | || (translate_prev_byte2 == ptr[-2] | ||
| 1940 | && (CHAR_HEAD_P (translate_prev_byte2) | ||
| 1941 | || translate_prev_byte3 == ptr[-3]))))))) | ||
| 1907 | ch = simple_translate[*ptr]; | 1942 | ch = simple_translate[*ptr]; |
| 1908 | else | 1943 | else |
| 1909 | ch = *ptr; | 1944 | ch = *ptr; |
diff --git a/src/xdisp.c b/src/xdisp.c index bfb6ba5bf4c..ffbbfaaba7f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -462,7 +462,7 @@ static Lisp_Object Vwindow_size_change_functions; | |||
| 462 | 462 | ||
| 463 | Lisp_Object Qmenu_bar_update_hook, Vmenu_bar_update_hook; | 463 | Lisp_Object Qmenu_bar_update_hook, Vmenu_bar_update_hook; |
| 464 | 464 | ||
| 465 | /* Nonzero if overlay arrow has been displayed once in this window. */ | 465 | /* Nonzero if an overlay arrow has been displayed in this window. */ |
| 466 | 466 | ||
| 467 | static int overlay_arrow_seen; | 467 | static int overlay_arrow_seen; |
| 468 | 468 | ||
| @@ -15262,10 +15262,9 @@ display_line (it) | |||
| 15262 | mark this glyph row as the one containing the overlay arrow. | 15262 | mark this glyph row as the one containing the overlay arrow. |
| 15263 | This is clearly a mess with variable size fonts. It would be | 15263 | This is clearly a mess with variable size fonts. It would be |
| 15264 | better to let it be displayed like cursors under X. */ | 15264 | better to let it be displayed like cursors under X. */ |
| 15265 | if (! overlay_arrow_seen | 15265 | if ((overlay_arrow_string |
| 15266 | && (overlay_arrow_string | 15266 | = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap), |
| 15267 | = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap), | 15267 | !NILP (overlay_arrow_string))) |
| 15268 | !NILP (overlay_arrow_string))) | ||
| 15269 | { | 15268 | { |
| 15270 | /* Overlay arrow in window redisplay is a fringe bitmap. */ | 15269 | /* Overlay arrow in window redisplay is a fringe bitmap. */ |
| 15271 | if (STRINGP (overlay_arrow_string)) | 15270 | if (STRINGP (overlay_arrow_string)) |
diff --git a/src/xterm.c b/src/xterm.c index 0c1f7ddab74..ebd0954edb7 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -129,9 +129,7 @@ extern void _XEditResCheckMessages (); | |||
| 129 | #ifdef HAVE_XAW3D | 129 | #ifdef HAVE_XAW3D |
| 130 | #include <X11/Xaw3d/Simple.h> | 130 | #include <X11/Xaw3d/Simple.h> |
| 131 | #include <X11/Xaw3d/Scrollbar.h> | 131 | #include <X11/Xaw3d/Scrollbar.h> |
| 132 | #define ARROW_SCROLLBAR | 132 | #include <X11/Xaw3d/ThreeD.h> |
| 133 | #define XAW_ARROW_SCROLLBARS | ||
| 134 | #include <X11/Xaw3d/ScrollbarP.h> | ||
| 135 | #else /* !HAVE_XAW3D */ | 133 | #else /* !HAVE_XAW3D */ |
| 136 | #include <X11/Xaw/Simple.h> | 134 | #include <X11/Xaw/Simple.h> |
| 137 | #include <X11/Xaw/Scrollbar.h> | 135 | #include <X11/Xaw/Scrollbar.h> |
| @@ -4560,6 +4558,7 @@ x_create_toolkit_scroll_bar (f, bar) | |||
| 4560 | f->output_data.x->scroll_bar_bottom_shadow_pixel = pixel; | 4558 | f->output_data.x->scroll_bar_bottom_shadow_pixel = pixel; |
| 4561 | } | 4559 | } |
| 4562 | 4560 | ||
| 4561 | #ifdef XtNbeNiceToColormap | ||
| 4563 | /* Tell the toolkit about them. */ | 4562 | /* Tell the toolkit about them. */ |
| 4564 | if (f->output_data.x->scroll_bar_top_shadow_pixel == -1 | 4563 | if (f->output_data.x->scroll_bar_top_shadow_pixel == -1 |
| 4565 | || f->output_data.x->scroll_bar_bottom_shadow_pixel == -1) | 4564 | || f->output_data.x->scroll_bar_bottom_shadow_pixel == -1) |
| @@ -4583,16 +4582,17 @@ x_create_toolkit_scroll_bar (f, bar) | |||
| 4583 | pixel = f->output_data.x->scroll_bar_top_shadow_pixel; | 4582 | pixel = f->output_data.x->scroll_bar_top_shadow_pixel; |
| 4584 | if (pixel != -1) | 4583 | if (pixel != -1) |
| 4585 | { | 4584 | { |
| 4586 | XtSetArg (av[ac], "topShadowPixel", pixel); | 4585 | XtSetArg (av[ac], XtNtopShadowPixel, pixel); |
| 4587 | ++ac; | 4586 | ++ac; |
| 4588 | } | 4587 | } |
| 4589 | pixel = f->output_data.x->scroll_bar_bottom_shadow_pixel; | 4588 | pixel = f->output_data.x->scroll_bar_bottom_shadow_pixel; |
| 4590 | if (pixel != -1) | 4589 | if (pixel != -1) |
| 4591 | { | 4590 | { |
| 4592 | XtSetArg (av[ac], "bottomShadowPixel", pixel); | 4591 | XtSetArg (av[ac], XtNbottomShadowPixel, pixel); |
| 4593 | ++ac; | 4592 | ++ac; |
| 4594 | } | 4593 | } |
| 4595 | } | 4594 | } |
| 4595 | #endif | ||
| 4596 | 4596 | ||
| 4597 | widget = XtCreateWidget (scroll_bar_name, scrollbarWidgetClass, | 4597 | widget = XtCreateWidget (scroll_bar_name, scrollbarWidgetClass, |
| 4598 | f->output_data.x->edit_widget, av, ac); | 4598 | f->output_data.x->edit_widget, av, ac); |
| @@ -4738,30 +4738,11 @@ x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole) | |||
| 4738 | XawScrollbarSetThumb (widget, top, shown); | 4738 | XawScrollbarSetThumb (widget, top, shown); |
| 4739 | else | 4739 | else |
| 4740 | { | 4740 | { |
| 4741 | #ifdef HAVE_XAW3D | ||
| 4742 | ScrollbarWidget sb = (ScrollbarWidget) widget; | ||
| 4743 | int scroll_mode = 0; | ||
| 4744 | |||
| 4745 | /* `scroll_mode' only exists with Xaw3d + ARROW_SCROLLBAR. */ | ||
| 4746 | if (xaw3d_arrow_scroll) | ||
| 4747 | { | ||
| 4748 | /* Xaw3d stupidly ignores resize requests while dragging | ||
| 4749 | so we have to make it believe it's not in dragging mode. */ | ||
| 4750 | scroll_mode = sb->scrollbar.scroll_mode; | ||
| 4751 | if (scroll_mode == 2) | ||
| 4752 | sb->scrollbar.scroll_mode = 0; | ||
| 4753 | } | ||
| 4754 | #endif | ||
| 4755 | /* Try to make the scrolling a tad smoother. */ | 4741 | /* Try to make the scrolling a tad smoother. */ |
| 4756 | if (!xaw3d_pick_top) | 4742 | if (!xaw3d_pick_top) |
| 4757 | shown = min (shown, old_shown); | 4743 | shown = min (shown, old_shown); |
| 4758 | 4744 | ||
| 4759 | XawScrollbarSetThumb (widget, top, shown); | 4745 | XawScrollbarSetThumb (widget, top, shown); |
| 4760 | |||
| 4761 | #ifdef HAVE_XAW3D | ||
| 4762 | if (xaw3d_arrow_scroll && scroll_mode == 2) | ||
| 4763 | sb->scrollbar.scroll_mode = scroll_mode; | ||
| 4764 | #endif | ||
| 4765 | } | 4746 | } |
| 4766 | } | 4747 | } |
| 4767 | } | 4748 | } |