Merge lp:~laney/ubuntu/quantal/emacs23/merge-23.4 into lp:ubuntu/quantal/emacs23
- Quantal (12.10)
- merge-23.4
- Merge into quantal
Status: | Merged |
---|---|
Merge reported by: | Bryce Harrington |
Merged at revision: | not available |
Proposed branch: | lp:~laney/ubuntu/quantal/emacs23/merge-23.4 |
Merge into: | lp:ubuntu/quantal/emacs23 |
Diff against target: | 453578 lines |
To merge this branch: | bzr merge lp:~laney/ubuntu/quantal/emacs23/merge-23.4 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Bryce Harrington | Needs Fixing | ||
Barry Warsaw | Pending | ||
Review via email:
|
Commit message
Description of the change
I stole this from barry without asking (well, he wasn't on IRC, what was I supposed to do?). I suspect he won't mind :P.
Perhaps he wants to review. :-)
It might make sense for bug #998460 to be processed first, but I suspect that not many people will have it installed so it shouldn't matter in practice.

Barry Warsaw (barry) wrote : | # |

Bryce Harrington (bryce) wrote : | # |
<slangasek> it sounds like it might be easier to just shuffle the pockets, and keep the packages in sync with Debian
<infinity> Laney: If... Err, what vorlon said. :P
<infinity> If emacs23-non-dfsg really is just the same stuff that we're adding back in our diff, that seems like a silly amount of effort for us.
<slangasek> the only binary package it builds is emacs23-
<slangasek> honestly, either way, I think that may be the simpler route
<slangasek> i.e. I don't see any barrier to having it in main if that's where it belongs
<slangasek> in fact since it's just a binary package split, it shouldn't need a MIR
<Laney> if we're OK having it in main as a Depends, that should get us to ~ where we are now
<Laney> and let us drop a bunch of delta
<infinity> Sounds reasonable to me.
<bryceh> dropping delta sounds nice
<slangasek> it's just the docs, after all
<slangasek> Laney: I'm in favor of just making it a binary dep from emacs23 and avoiding the horror deltas :)
<slangasek> rather, from emacs23-common
<Laney> rock
<Laney> deleted debian/
Preview Diff
1 | === removed directory '.pc/0001-Prefer-usr-share-info-emacs-23-over-usr-share-info.patch' |
2 | === removed directory '.pc/0001-Prefer-usr-share-info-emacs-23-over-usr-share-info.patch/lisp' |
3 | === removed file '.pc/0001-Prefer-usr-share-info-emacs-23-over-usr-share-info.patch/lisp/site-init.el' |
4 | === removed directory '.pc/0002-Run-debian-startup-and-set-debian-emacs-flavor.patch' |
5 | === removed directory '.pc/0002-Run-debian-startup-and-set-debian-emacs-flavor.patch/lisp' |
6 | === removed file '.pc/0002-Run-debian-startup-and-set-debian-emacs-flavor.patch/lisp/startup.el' |
7 | --- .pc/0002-Run-debian-startup-and-set-debian-emacs-flavor.patch/lisp/startup.el 2011-04-10 10:33:31 +0000 |
8 | +++ .pc/0002-Run-debian-startup-and-set-debian-emacs-flavor.patch/lisp/startup.el 1970-01-01 00:00:00 +0000 |
9 | @@ -1,2346 +0,0 @@ |
10 | -;;; startup.el --- process Emacs shell arguments |
11 | - |
12 | -;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
13 | -;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
14 | -;; Free Software Foundation, Inc. |
15 | - |
16 | -;; Maintainer: FSF |
17 | -;; Keywords: internal |
18 | - |
19 | -;; This file is part of GNU Emacs. |
20 | - |
21 | -;; GNU Emacs is free software: you can redistribute it and/or modify |
22 | -;; it under the terms of the GNU General Public License as published by |
23 | -;; the Free Software Foundation, either version 3 of the License, or |
24 | -;; (at your option) any later version. |
25 | - |
26 | -;; GNU Emacs is distributed in the hope that it will be useful, |
27 | -;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
28 | -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
29 | -;; GNU General Public License for more details. |
30 | - |
31 | -;; You should have received a copy of the GNU General Public License |
32 | -;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
33 | - |
34 | -;;; Commentary: |
35 | - |
36 | -;; This file parses the command line and gets Emacs running. Options |
37 | -;; on the command line are handled in precedence order. For priorities |
38 | -;; see the structure standard_args in the emacs.c file. |
39 | - |
40 | -;;; Code: |
41 | - |
42 | -(setq top-level '(normal-top-level)) |
43 | - |
44 | -(defvar command-line-processed nil |
45 | - "Non-nil once command line has been processed.") |
46 | - |
47 | -(defgroup initialization nil |
48 | - "Emacs start-up procedure." |
49 | - :group 'environment) |
50 | - |
51 | -(defcustom initial-buffer-choice nil |
52 | - "Buffer to show after starting Emacs. |
53 | -If the value is nil and `inhibit-startup-screen' is nil, show the |
54 | -startup screen. If the value is string, visit the specified file or |
55 | -directory using `find-file'. If t, open the `*scratch*' buffer." |
56 | - :type '(choice |
57 | - (const :tag "Startup screen" nil) |
58 | - (directory :tag "Directory" :value "~/") |
59 | - (file :tag "File" :value "~/.emacs") |
60 | - (const :tag "Lisp scratch buffer" t)) |
61 | - :version "23.1" |
62 | - :group 'initialization) |
63 | - |
64 | -(defcustom inhibit-startup-screen nil |
65 | - "Non-nil inhibits the startup screen. |
66 | - |
67 | -This is for use in your personal init file (but NOT site-start.el), |
68 | -once you are familiar with the contents of the startup screen." |
69 | - :type 'boolean |
70 | - :group 'initialization) |
71 | - |
72 | -(defvaralias 'inhibit-splash-screen 'inhibit-startup-screen) |
73 | -(defvaralias 'inhibit-startup-message 'inhibit-startup-screen) |
74 | - |
75 | -(defvar startup-screen-inhibit-startup-screen nil) |
76 | - |
77 | -(defcustom inhibit-startup-echo-area-message nil |
78 | - "Non-nil inhibits the initial startup echo area message. |
79 | -Setting this variable takes effect |
80 | -only if you do it with the customization buffer |
81 | -or if your `.emacs' file contains a line of this form: |
82 | - (setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\") |
83 | -If your `.emacs' file is byte-compiled, use the following form instead: |
84 | - (eval '(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\")) |
85 | -Thus, someone else using a copy of your `.emacs' file will see |
86 | -the startup message unless he personally acts to inhibit it." |
87 | - :type '(choice (const :tag "Don't inhibit") |
88 | - (string :tag "Enter your user name, to inhibit")) |
89 | - :group 'initialization) |
90 | - |
91 | -(defcustom inhibit-default-init nil |
92 | - "Non-nil inhibits loading the `default' library." |
93 | - :type 'boolean |
94 | - :group 'initialization) |
95 | - |
96 | -(defcustom inhibit-startup-buffer-menu nil |
97 | - "Non-nil inhibits display of buffer list when more than 2 files are loaded." |
98 | - :type 'boolean |
99 | - :group 'initialization) |
100 | - |
101 | -(defvar command-switch-alist nil |
102 | - "Alist of command-line switches. |
103 | -Elements look like (SWITCH-STRING . HANDLER-FUNCTION). |
104 | -HANDLER-FUNCTION receives the switch string as its sole argument; |
105 | -the remaining command-line args are in the variable `command-line-args-left'.") |
106 | - |
107 | -(defvar command-line-args-left nil |
108 | - "List of command-line args not yet processed.") |
109 | - |
110 | -(defvaralias 'argv 'command-line-args-left |
111 | - "List of command-line args not yet processed. |
112 | -This is a convenience alias, so that one can write \(pop argv\) |
113 | -inside of --eval command line arguments in order to access |
114 | -following arguments.") |
115 | - |
116 | -(defvar command-line-functions nil ;; lrs 7/31/89 |
117 | - "List of functions to process unrecognized command-line arguments. |
118 | -Each function should access the dynamically bound variables |
119 | -`argi' (the current argument) and `command-line-args-left' (the remaining |
120 | -arguments). The function should return non-nil only if it recognizes and |
121 | -processes `argi'. If it does so, it may consume successive arguments by |
122 | -altering `command-line-args-left' to remove them.") |
123 | - |
124 | -(defvar command-line-default-directory nil |
125 | - "Default directory to use for command line arguments. |
126 | -This is normally copied from `default-directory' when Emacs starts.") |
127 | - |
128 | -;;; This is here, rather than in x-win.el, so that we can ignore these |
129 | -;;; options when we are not using X. |
130 | -(defconst command-line-x-option-alist |
131 | - '(("-bw" 1 x-handle-numeric-switch border-width) |
132 | - ("-d" 1 x-handle-display) |
133 | - ("-display" 1 x-handle-display) |
134 | - ("-name" 1 x-handle-name-switch) |
135 | - ("-title" 1 x-handle-switch title) |
136 | - ("-T" 1 x-handle-switch title) |
137 | - ("-r" 0 x-handle-switch reverse t) |
138 | - ("-rv" 0 x-handle-switch reverse t) |
139 | - ("-reverse" 0 x-handle-switch reverse t) |
140 | - ("-reverse-video" 0 x-handle-switch reverse t) |
141 | - ("-fn" 1 x-handle-switch font) |
142 | - ("-font" 1 x-handle-switch font) |
143 | - ("-fs" 0 x-handle-initial-switch fullscreen fullboth) |
144 | - ("-fw" 0 x-handle-initial-switch fullscreen fullwidth) |
145 | - ("-fh" 0 x-handle-initial-switch fullscreen fullheight) |
146 | - ("-mm" 0 x-handle-initial-switch fullscreen maximized) |
147 | - ("-ib" 1 x-handle-numeric-switch internal-border-width) |
148 | - ("-g" 1 x-handle-geometry) |
149 | - ("-lsp" 1 x-handle-numeric-switch line-spacing) |
150 | - ("-geometry" 1 x-handle-geometry) |
151 | - ("-fg" 1 x-handle-switch foreground-color) |
152 | - ("-foreground" 1 x-handle-switch foreground-color) |
153 | - ("-bg" 1 x-handle-switch background-color) |
154 | - ("-background" 1 x-handle-switch background-color) |
155 | - ("-ms" 1 x-handle-switch mouse-color) |
156 | - ("-nbi" 0 x-handle-switch icon-type nil) |
157 | - ("-iconic" 0 x-handle-iconic) |
158 | - ("-xrm" 1 x-handle-xrm-switch) |
159 | - ("-cr" 1 x-handle-switch cursor-color) |
160 | - ("-vb" 0 x-handle-switch vertical-scroll-bars t) |
161 | - ("-hb" 0 x-handle-switch horizontal-scroll-bars t) |
162 | - ("-bd" 1 x-handle-switch) |
163 | - ("--border-width" 1 x-handle-numeric-switch border-width) |
164 | - ("--display" 1 x-handle-display) |
165 | - ("--name" 1 x-handle-name-switch) |
166 | - ("--title" 1 x-handle-switch title) |
167 | - ("--reverse-video" 0 x-handle-switch reverse t) |
168 | - ("--font" 1 x-handle-switch font) |
169 | - ("--fullscreen" 0 x-handle-initial-switch fullscreen fullboth) |
170 | - ("--fullwidth" 0 x-handle-initial-switch fullscreen fullwidth) |
171 | - ("--fullheight" 0 x-handle-initial-switch fullscreen fullheight) |
172 | - ("--maximized" 0 x-handle-initial-switch fullscreen maximized) |
173 | - ("--internal-border" 1 x-handle-numeric-switch internal-border-width) |
174 | - ("--geometry" 1 x-handle-geometry) |
175 | - ("--foreground-color" 1 x-handle-switch foreground-color) |
176 | - ("--background-color" 1 x-handle-switch background-color) |
177 | - ("--mouse-color" 1 x-handle-switch mouse-color) |
178 | - ("--no-bitmap-icon" 0 x-handle-no-bitmap-icon) |
179 | - ("--iconic" 0 x-handle-iconic) |
180 | - ("--xrm" 1 x-handle-xrm-switch) |
181 | - ("--cursor-color" 1 x-handle-switch cursor-color) |
182 | - ("--vertical-scroll-bars" 0 x-handle-switch vertical-scroll-bars t) |
183 | - ("--line-spacing" 1 x-handle-numeric-switch line-spacing) |
184 | - ("--border-color" 1 x-handle-switch border-color) |
185 | - ("--smid" 1 x-handle-smid) |
186 | - ("--parent-id" 1 x-handle-parent-id)) |
187 | - "Alist of X Windows options. |
188 | -Each element has the form |
189 | - (NAME NUMARGS HANDLER FRAME-PARAM VALUE) |
190 | -where NAME is the option name string, NUMARGS is the number of arguments |
191 | -that the option accepts, HANDLER is a function to call to handle the option. |
192 | -FRAME-PARAM (optional) is the frame parameter this option specifies, |
193 | -and VALUE is the value which is given to that frame parameter |
194 | -\(most options use the argument for this, so VALUE is not present).") |
195 | - |
196 | -(defconst command-line-ns-option-alist |
197 | - '(("-NSAutoLaunch" 1 ns-ignore-1-arg) |
198 | - ("-NXAutoLaunch" 1 ns-ignore-1-arg) |
199 | - ("-macosx" 0 ignore) |
200 | - ("-NSHost" 1 ns-ignore-1-arg) |
201 | - ("-_NSMachLaunch" 1 ns-ignore-1-arg) |
202 | - ("-MachLaunch" 1 ns-ignore-1-arg) |
203 | - ("-NXOpen" 1 ns-ignore-1-arg) |
204 | - ("-NSOpen" 1 ns-handle-nxopen) |
205 | - ("-NXOpenTemp" 1 ns-ignore-1-arg) |
206 | - ("-NSOpenTemp" 1 ns-handle-nxopentemp) |
207 | - ("-GSFilePath" 1 ns-handle-nxopen) |
208 | - ;;("-bw" . x-handle-numeric-switch) |
209 | - ;;("-d" . x-handle-display) |
210 | - ;;("-display" . x-handle-display) |
211 | - ("-name" 1 ns-handle-name-switch) |
212 | - ("-title" 1 ns-handle-switch title) |
213 | - ("-T" 1 ns-handle-switch title) |
214 | - ("-r" 0 ns-handle-switch reverse t) |
215 | - ("-rv" 0 ns-handle-switch reverse t) |
216 | - ("-reverse" 0 ns-handle-switch reverse t) |
217 | - ("-fn" 1 ns-handle-switch font) |
218 | - ("-font" 1 ns-handle-switch font) |
219 | - ("-ib" 1 ns-handle-numeric-switch internal-border-width) |
220 | - ;;("-g" . x-handle-geometry) |
221 | - ;;("-geometry" . x-handle-geometry) |
222 | - ("-fg" 1 ns-handle-switch foreground-color) |
223 | - ("-foreground" 1 ns-handle-switch foreground-color) |
224 | - ("-bg" 1 ns-handle-switch background-color) |
225 | - ("-background" 1 ns-handle-switch background-color) |
226 | -; ("-ms" 1 ns-handle-switch mouse-color) |
227 | - ("-itype" 0 ns-handle-switch icon-type t) |
228 | - ("-i" 0 ns-handle-switch icon-type t) |
229 | - ("-iconic" 0 ns-handle-iconic icon-type t) |
230 | - ;;("-xrm" . x-handle-xrm-switch) |
231 | - ("-cr" 1 ns-handle-switch cursor-color) |
232 | - ("-vb" 0 ns-handle-switch vertical-scroll-bars t) |
233 | - ("-hb" 0 ns-handle-switch horizontal-scroll-bars t) |
234 | - ("-bd" 1 ns-handle-switch) |
235 | - ;; ("--border-width" 1 ns-handle-numeric-switch border-width) |
236 | - ;; ("--display" 1 ns-handle-display) |
237 | - ("--name" 1 ns-handle-name-switch) |
238 | - ("--title" 1 ns-handle-switch title) |
239 | - ("--reverse-video" 0 ns-handle-switch reverse t) |
240 | - ("--font" 1 ns-handle-switch font) |
241 | - ("--internal-border" 1 ns-handle-numeric-switch internal-border-width) |
242 | - ;; ("--geometry" 1 ns-handle-geometry) |
243 | - ("--foreground-color" 1 ns-handle-switch foreground-color) |
244 | - ("--background-color" 1 ns-handle-switch background-color) |
245 | - ("--mouse-color" 1 ns-handle-switch mouse-color) |
246 | - ("--icon-type" 0 ns-handle-switch icon-type t) |
247 | - ("--iconic" 0 ns-handle-iconic) |
248 | - ;; ("--xrm" 1 ns-handle-xrm-switch) |
249 | - ("--cursor-color" 1 ns-handle-switch cursor-color) |
250 | - ("--vertical-scroll-bars" 0 ns-handle-switch vertical-scroll-bars t) |
251 | - ("--border-color" 1 ns-handle-switch border-width)) |
252 | - "Alist of NS options. |
253 | -Each element has the form |
254 | - (NAME NUMARGS HANDLER FRAME-PARAM VALUE) |
255 | -where NAME is the option name string, NUMARGS is the number of arguments |
256 | -that the option accepts, HANDLER is a function to call to handle the option. |
257 | -FRAME-PARAM (optional) is the frame parameter this option specifies, |
258 | -and VALUE is the value which is given to that frame parameter |
259 | -\(most options use the argument for this, so VALUE is not present).") |
260 | - |
261 | - |
262 | -(defvar before-init-hook nil |
263 | - "Normal hook run after handling urgent options but before loading init files.") |
264 | - |
265 | -(defvar after-init-hook nil |
266 | - "Normal hook run after loading the init files, `~/.emacs' and `default.el'. |
267 | -There is no `condition-case' around the running of these functions; |
268 | -therefore, if you set `debug-on-error' non-nil in `.emacs', |
269 | -an error in one of these functions will invoke the debugger.") |
270 | - |
271 | -(defvar emacs-startup-hook nil |
272 | - "Normal hook run after loading init files and handling the command line.") |
273 | - |
274 | -(defvar term-setup-hook nil |
275 | - "Normal hook run after loading terminal-specific Lisp code. |
276 | -It also follows `emacs-startup-hook'. This hook exists for users to set, |
277 | -so as to override the definitions made by the terminal-specific file. |
278 | -Emacs never sets this variable itself.") |
279 | - |
280 | -(defvar inhibit-startup-hooks nil |
281 | - "Non-nil means don't run `term-setup-hook' and `emacs-startup-hook'. |
282 | -This is because we already did so.") |
283 | - |
284 | -(defvar keyboard-type nil |
285 | - "The brand of keyboard you are using. |
286 | -This variable is used to define the proper function and keypad |
287 | -keys for use under X. It is used in a fashion analogous to the |
288 | -environment variable TERM.") |
289 | - |
290 | -(defvar window-setup-hook nil |
291 | - "Normal hook run to initialize window system display. |
292 | -Emacs runs this hook after processing the command line arguments and loading |
293 | -the user's init file.") |
294 | - |
295 | -(defcustom initial-major-mode 'lisp-interaction-mode |
296 | - "Major mode command symbol to use for the initial `*scratch*' buffer." |
297 | - :type 'function |
298 | - :group 'initialization) |
299 | - |
300 | -(defvar init-file-user nil |
301 | - "Identity of user whose `.emacs' file is or was read. |
302 | -The value is nil if `-q' or `--no-init-file' was specified, |
303 | -meaning do not load any init file. |
304 | - |
305 | -Otherwise, the value may be an empty string, meaning |
306 | -use the init file for the user who originally logged in, |
307 | -or it may be a string containing a user's name meaning |
308 | -use that person's init file. |
309 | - |
310 | -In either of the latter cases, `(concat \"~\" init-file-user \"/\")' |
311 | -evaluates to the name of the directory where the `.emacs' file was |
312 | -looked for. |
313 | - |
314 | -Setting `init-file-user' does not prevent Emacs from loading |
315 | -`site-start.el'. The only way to do that is to use `--no-site-file'.") |
316 | - |
317 | -(defcustom site-run-file (purecopy "site-start") |
318 | - "File containing site-wide run-time initializations. |
319 | -This file is loaded at run-time before `~/.emacs'. It contains inits |
320 | -that need to be in place for the entire site, but which, due to their |
321 | -higher incidence of change, don't make sense to load into Emacs's |
322 | -dumped image. Thus, the run-time load order is: 1. file described in |
323 | -this variable, if non-nil; 2. `~/.emacs'; 3. `default.el'. |
324 | - |
325 | -Don't use the `site-start.el' file for things some users may not like. |
326 | -Put them in `default.el' instead, so that users can more easily |
327 | -override them. Users can prevent loading `default.el' with the `-q' |
328 | -option or by setting `inhibit-default-init' in their own init files, |
329 | -but inhibiting `site-start.el' requires `--no-site-file', which |
330 | -is less convenient. |
331 | - |
332 | -This variable is defined for customization so as to make |
333 | -it visible in the relevant context. However, actually customizing it |
334 | -is not allowed, since it would not work anyway. The only way to set |
335 | -this variable usefully is to set it while building and dumping Emacs." |
336 | - :type '(choice (const :tag "none" nil) string) |
337 | - :group 'initialization |
338 | - :initialize 'custom-initialize-default |
339 | - :set (lambda (variable value) |
340 | - (error "Customizing `site-run-file' does not work"))) |
341 | - |
342 | -(defcustom mail-host-address nil |
343 | - "Name of this machine, for purposes of naming users." |
344 | - :type '(choice (const nil) string) |
345 | - :group 'mail) |
346 | - |
347 | -(defcustom user-mail-address (if command-line-processed |
348 | - (or (getenv "EMAIL") |
349 | - (concat (user-login-name) "@" |
350 | - (or mail-host-address |
351 | - (system-name)))) |
352 | - ;; Empty string means "not set yet". |
353 | - "") |
354 | - "Full mailing address of this user. |
355 | -This is initialized with environment variable `EMAIL' or, as a |
356 | -fallback, using `mail-host-address'. This is done after your |
357 | -init file is read, in case it sets `mail-host-address'." |
358 | - :type 'string |
359 | - :group 'mail) |
360 | - |
361 | -(defcustom auto-save-list-file-prefix |
362 | - (cond ((eq system-type 'ms-dos) |
363 | - ;; MS-DOS cannot have initial dot, and allows only 8.3 names |
364 | - (concat user-emacs-directory "auto-save.list/_s")) |
365 | - (t |
366 | - (concat user-emacs-directory "auto-save-list/.saves-"))) |
367 | - "Prefix for generating `auto-save-list-file-name'. |
368 | -This is used after reading your `.emacs' file to initialize |
369 | -`auto-save-list-file-name', by appending Emacs's pid and the system name, |
370 | -if you have not already set `auto-save-list-file-name' yourself. |
371 | -Directories in the prefix will be created if necessary. |
372 | -Set this to nil if you want to prevent `auto-save-list-file-name' |
373 | -from being initialized." |
374 | - :type '(choice (const :tag "Don't record a session's auto save list" nil) |
375 | - string) |
376 | - :group 'auto-save) |
377 | - |
378 | -(defvar emacs-basic-display nil) |
379 | - |
380 | -(defvar init-file-debug nil) |
381 | - |
382 | -(defvar init-file-had-error nil |
383 | - "Non-nil if there was an error loading the user's init file.") |
384 | - |
385 | -(defvar normal-top-level-add-subdirs-inode-list nil) |
386 | - |
387 | -(defvar no-blinking-cursor nil) |
388 | - |
389 | -(defvar default-frame-background-mode) |
390 | - |
391 | -(defvar pure-space-overflow nil |
392 | - "Non-nil if building Emacs overflowed pure space.") |
393 | - |
394 | -(defvar pure-space-overflow-message (purecopy "\ |
395 | -Warning Warning!!! Pure space overflow !!!Warning Warning |
396 | -\(See the node Pure Storage in the Lisp manual for details.)\n")) |
397 | - |
398 | -(defcustom tutorial-directory |
399 | - (file-name-as-directory (expand-file-name "tutorials" data-directory)) |
400 | - "Directory containing the Emacs TUTORIAL files." |
401 | - :group 'installation |
402 | - :type 'directory |
403 | - :initialize 'custom-initialize-delay) |
404 | - |
405 | -(defun normal-top-level-add-subdirs-to-load-path () |
406 | - "Add all subdirectories of current directory to `load-path'. |
407 | -More precisely, this uses only the subdirectories whose names |
408 | -start with letters or digits; it excludes any subdirectory named `RCS' |
409 | -or `CVS', and any subdirectory that contains a file named `.nosearch'." |
410 | - (let (dirs |
411 | - attrs |
412 | - (pending (list default-directory))) |
413 | - ;; This loop does a breadth-first tree walk on DIR's subtree, |
414 | - ;; putting each subdir into DIRS as its contents are examined. |
415 | - (while pending |
416 | - (push (pop pending) dirs) |
417 | - (let* ((this-dir (car dirs)) |
418 | - (contents (directory-files this-dir)) |
419 | - (default-directory this-dir) |
420 | - (canonicalized (if (fboundp 'untranslated-canonical-name) |
421 | - (untranslated-canonical-name this-dir)))) |
422 | - ;; The Windows version doesn't report meaningful inode |
423 | - ;; numbers, so use the canonicalized absolute file name of the |
424 | - ;; directory instead. |
425 | - (setq attrs (or canonicalized |
426 | - (nthcdr 10 (file-attributes this-dir)))) |
427 | - (unless (member attrs normal-top-level-add-subdirs-inode-list) |
428 | - (push attrs normal-top-level-add-subdirs-inode-list) |
429 | - (dolist (file contents) |
430 | - ;; The lower-case variants of RCS and CVS are for DOS/Windows. |
431 | - (unless (member file '("." ".." "RCS" "CVS" "rcs" "cvs")) |
432 | - (when (and (string-match "\\`[[:alnum:]]" file) |
433 | - ;; Avoid doing a `stat' when it isn't necessary |
434 | - ;; because that can cause trouble when an NFS server |
435 | - ;; is down. |
436 | - (not (string-match "\\.elc?\\'" file)) |
437 | - (file-directory-p file)) |
438 | - (let ((expanded (expand-file-name file))) |
439 | - (unless (file-exists-p (expand-file-name ".nosearch" |
440 | - expanded)) |
441 | - (setq pending (nconc pending (list expanded))))))))))) |
442 | - (normal-top-level-add-to-load-path (cdr (nreverse dirs))))) |
443 | - |
444 | -;; This function is called from a subdirs.el file. |
445 | -;; It assumes that default-directory is the directory |
446 | -;; in which the subdirs.el file exists, |
447 | -;; and it adds to load-path the subdirs of that directory |
448 | -;; as specified in DIRS. Normally the elements of DIRS are relative. |
449 | -(defun normal-top-level-add-to-load-path (dirs) |
450 | - (let ((tail load-path) |
451 | - (thisdir (directory-file-name default-directory))) |
452 | - (while (and tail |
453 | - ;;Don't go all the way to the nil terminator. |
454 | - (cdr tail) |
455 | - (not (equal thisdir (car tail))) |
456 | - (not (and (memq system-type '(ms-dos windows-nt)) |
457 | - (equal (downcase thisdir) (downcase (car tail)))))) |
458 | - (setq tail (cdr tail))) |
459 | - ;;Splice the new section in. |
460 | - (when tail |
461 | - (setcdr tail (append (mapcar 'expand-file-name dirs) (cdr tail)))))) |
462 | - |
463 | -(defun normal-top-level () |
464 | - (if command-line-processed |
465 | - (message "Back to top level.") |
466 | - (setq command-line-processed t) |
467 | - (let ((dir default-directory)) |
468 | - (with-current-buffer "*Messages*" |
469 | - ;; Make it easy to do like "tail -f". |
470 | - (set (make-local-variable 'window-point-insertion-type) t) |
471 | - ;; Give *Messages* the same default-directory as *scratch*, |
472 | - ;; just to keep things predictable. |
473 | - (setq default-directory dir))) |
474 | - ;; `user-full-name' is now known; reset its standard-value here. |
475 | - (put 'user-full-name 'standard-value |
476 | - (list (default-value 'user-full-name))) |
477 | - ;; For root, preserve owner and group when editing files. |
478 | - (if (equal (user-uid) 0) |
479 | - (setq backup-by-copying-when-mismatch t)) |
480 | - ;; Look in each dir in load-path for a subdirs.el file. |
481 | - ;; If we find one, load it, which will add the appropriate subdirs |
482 | - ;; of that dir into load-path, |
483 | - ;; Look for a leim-list.el file too. Loading it will register |
484 | - ;; available input methods. |
485 | - (let ((tail load-path) dir) |
486 | - (while tail |
487 | - (setq dir (car tail)) |
488 | - (let ((default-directory dir)) |
489 | - (load (expand-file-name "subdirs.el") t t t)) |
490 | - (let ((default-directory dir)) |
491 | - (load (expand-file-name "leim-list.el") t t t)) |
492 | - ;; We don't use a dolist loop and we put this "setq-cdr" command at |
493 | - ;; the end, because the subdirs.el files may add elements to the end |
494 | - ;; of load-path and we want to take it into account. |
495 | - (setq tail (cdr tail)))) |
496 | - ;; If the PWD environment variable isn't accurate, delete it. |
497 | - (let ((pwd (getenv "PWD"))) |
498 | - (and (stringp pwd) |
499 | - ;; Use FOO/., so that if FOO is a symlink, file-attributes |
500 | - ;; describes the directory linked to, not FOO itself. |
501 | - (or (equal (file-attributes |
502 | - (concat (file-name-as-directory pwd) ".")) |
503 | - (file-attributes |
504 | - (concat (file-name-as-directory default-directory) |
505 | - "."))) |
506 | - (setq process-environment |
507 | - (delete (concat "PWD=" pwd) |
508 | - process-environment))))) |
509 | - (setq default-directory (abbreviate-file-name default-directory)) |
510 | - (let ((old-face-font-rescale-alist face-font-rescale-alist)) |
511 | - (unwind-protect |
512 | - (command-line) |
513 | - ;; Do this again, in case .emacs defined more abbreviations. |
514 | - (setq default-directory (abbreviate-file-name default-directory)) |
515 | - ;; Specify the file for recording all the auto save files of this session. |
516 | - ;; This is used by recover-session. |
517 | - (or auto-save-list-file-name |
518 | - (and auto-save-list-file-prefix |
519 | - (setq auto-save-list-file-name |
520 | - ;; Under MS-DOS our PID is almost always reused between |
521 | - ;; Emacs invocations. We need something more unique. |
522 | - (cond ((eq system-type 'ms-dos) |
523 | - ;; We are going to access the auto-save |
524 | - ;; directory, so make sure it exists. |
525 | - (make-directory |
526 | - (file-name-directory auto-save-list-file-prefix) |
527 | - t) |
528 | - (concat |
529 | - (make-temp-name |
530 | - (expand-file-name |
531 | - auto-save-list-file-prefix)) |
532 | - "~")) |
533 | - (t |
534 | - (expand-file-name |
535 | - (format "%s%d-%s~" |
536 | - auto-save-list-file-prefix |
537 | - (emacs-pid) |
538 | - (system-name)))))))) |
539 | - (unless inhibit-startup-hooks |
540 | - (run-hooks 'emacs-startup-hook) |
541 | - (and term-setup-hook |
542 | - (run-hooks 'term-setup-hook))) |
543 | - |
544 | - ;; Don't do this if we failed to create the initial frame, |
545 | - ;; for instance due to a dense colormap. |
546 | - (when (or frame-initial-frame |
547 | - ;; If frame-initial-frame has no meaning, do this anyway. |
548 | - (not (and initial-window-system |
549 | - (not noninteractive) |
550 | - (not (eq initial-window-system 'pc))))) |
551 | - |
552 | - ;; FIXME: The user's init file may change |
553 | - ;; face-font-rescale-alist. However, the default face |
554 | - ;; already has an assigned font object, which does not take |
555 | - ;; face-font-rescale-alist into account. For such |
556 | - ;; situations, we ought to have a way to find all font |
557 | - ;; objects and regenerate them; currently we do not. As a |
558 | - ;; workaround, we specifically reset te default face's :font |
559 | - ;; attribute here. See bug#1785. |
560 | - (unless (eq face-font-rescale-alist |
561 | - old-face-font-rescale-alist) |
562 | - (set-face-attribute 'default nil :font (font-spec))) |
563 | - |
564 | - ;; Modify the initial frame based on what .emacs puts into |
565 | - ;; ...-frame-alist. |
566 | - (if (fboundp 'frame-notice-user-settings) |
567 | - (frame-notice-user-settings)) |
568 | - ;; Set the faces for the initial background mode even if |
569 | - ;; frame-notice-user-settings didn't (such as on a tty). |
570 | - ;; frame-set-background-mode is idempotent, so it won't |
571 | - ;; cause any harm if it's already been done. |
572 | - (if (fboundp 'frame-set-background-mode) |
573 | - (frame-set-background-mode (selected-frame)))) |
574 | - |
575 | - ;; Now we know the user's default font, so add it to the menu. |
576 | - (if (fboundp 'font-menu-add-default) |
577 | - (font-menu-add-default)) |
578 | - (and window-setup-hook |
579 | - (run-hooks 'window-setup-hook)))) |
580 | - ;; Subprocesses of Emacs do not have direct access to the terminal, so |
581 | - ;; unless told otherwise they should only assume a dumb terminal. |
582 | - ;; We are careful to do it late (after term-setup-hook), although the |
583 | - ;; new multi-tty code does not use $TERM any more there anyway. |
584 | - (setenv "TERM" "dumb") |
585 | - ;; Remove DISPLAY from the process-environment as well. This allows |
586 | - ;; `callproc.c' to give it a useful adaptive default which is either |
587 | - ;; the value of the `display' frame-parameter or the DISPLAY value |
588 | - ;; from initial-environment. |
589 | - (let ((display (frame-parameter nil 'display))) |
590 | - ;; Be careful which DISPLAY to remove from process-environment: follow |
591 | - ;; the logic of `callproc.c'. |
592 | - (if (stringp display) (setq display (concat "DISPLAY=" display)) |
593 | - (dolist (varval initial-environment) |
594 | - (if (string-match "\\`DISPLAY=" varval) |
595 | - (setq display varval)))) |
596 | - (when display |
597 | - (delete display process-environment))))) |
598 | - |
599 | -;; Precompute the keyboard equivalents in the menu bar items. |
600 | -;; Command-line options supported by tty's: |
601 | -(defconst tty-long-option-alist |
602 | - '(("--name" . "-name") |
603 | - ("--title" . "-T") |
604 | - ("--reverse-video" . "-reverse") |
605 | - ("--foreground-color" . "-fg") |
606 | - ("--background-color" . "-bg") |
607 | - ("--color" . "-color"))) |
608 | - |
609 | -(defconst tool-bar-images-pixel-height 24 |
610 | - "Height in pixels of images in the tool-bar.") |
611 | - |
612 | -(defvar tool-bar-originally-present nil |
613 | - "Non-nil if tool-bars are present before user and site init files are read.") |
614 | - |
615 | -(defvar handle-args-function-alist '((nil . tty-handle-args)) |
616 | - "Functions for processing window-system dependent command-line arguments. |
617 | -Window system startup files should add their own function to this |
618 | -alist, which should parse the command line arguments. Those |
619 | -pertaining to the window system should be processed and removed |
620 | -from the returned command line.") |
621 | - |
622 | -(defvar window-system-initialization-alist '((nil . ignore)) |
623 | - "Alist of window-system initialization functions. |
624 | -Window-system startup files should add their own initialization |
625 | -function to this list. The function should take no arguments, |
626 | -and initialize the window system environment to prepare for |
627 | -opening the first frame (e.g. open a connection to an X server).") |
628 | - |
629 | -;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc. |
630 | -(defun tty-handle-args (args) |
631 | - (let (rest) |
632 | - (message "%S" args) |
633 | - (while (and args |
634 | - (not (equal (car args) "--"))) |
635 | - (let* ((argi (pop args)) |
636 | - (orig-argi argi) |
637 | - argval completion) |
638 | - ;; Check for long options with attached arguments |
639 | - ;; and separate out the attached option argument into argval. |
640 | - (when (string-match "^\\(--[^=]*\\)=" argi) |
641 | - (setq argval (substring argi (match-end 0)) |
642 | - argi (match-string 1 argi))) |
643 | - (when (string-match "^--" argi) |
644 | - (setq completion (try-completion argi tty-long-option-alist)) |
645 | - (if (eq completion t) |
646 | - ;; Exact match for long option. |
647 | - (setq argi (cdr (assoc argi tty-long-option-alist))) |
648 | - (if (stringp completion) |
649 | - (let ((elt (assoc completion tty-long-option-alist))) |
650 | - ;; Check for abbreviated long option. |
651 | - (or elt |
652 | - (error "Option `%s' is ambiguous" argi)) |
653 | - (setq argi (cdr elt))) |
654 | - ;; Check for a short option. |
655 | - (setq argval nil |
656 | - argi orig-argi)))) |
657 | - (cond ((member argi '("-fg" "-foreground")) |
658 | - (push (cons 'foreground-color (or argval (pop args))) |
659 | - default-frame-alist)) |
660 | - ((member argi '("-bg" "-background")) |
661 | - (push (cons 'background-color (or argval (pop args))) |
662 | - default-frame-alist)) |
663 | - ((member argi '("-T" "-name")) |
664 | - (unless argval (setq argval (pop args))) |
665 | - (push (cons 'title |
666 | - (if (stringp argval) |
667 | - argval |
668 | - (let ((case-fold-search t) |
669 | - i) |
670 | - (setq argval (invocation-name)) |
671 | - |
672 | - ;; Change any . or * characters in name to |
673 | - ;; hyphens, so as to emulate behavior on X. |
674 | - (while |
675 | - (setq i (string-match "[.*]" argval)) |
676 | - (aset argval i ?-)) |
677 | - argval))) |
678 | - default-frame-alist)) |
679 | - ((member argi '("-r" "-rv" "-reverse")) |
680 | - (push '(reverse . t) |
681 | - default-frame-alist)) |
682 | - ((equal argi "-color") |
683 | - (unless argval (setq argval 8)) ; default --color means 8 ANSI colors |
684 | - (push (cons 'tty-color-mode |
685 | - (cond |
686 | - ((numberp argval) argval) |
687 | - ((string-match "-?[0-9]+" argval) |
688 | - (string-to-number argval)) |
689 | - (t (intern argval)))) |
690 | - default-frame-alist)) |
691 | - (t |
692 | - (push argi rest))))) |
693 | - (nreverse rest))) |
694 | - |
695 | -(declare-function x-get-resource "frame.c" |
696 | - (attribute class &optional component subclass)) |
697 | -(declare-function tool-bar-mode "tool-bar" (&optional arg)) |
698 | -(declare-function tool-bar-setup "tool-bar") |
699 | - |
700 | -(defvar server-name) |
701 | -(defvar server-process) |
702 | - |
703 | -(defun command-line () |
704 | - (setq before-init-time (current-time) |
705 | - after-init-time nil |
706 | - command-line-default-directory default-directory) |
707 | - |
708 | - ;; Force recomputation, in case it was computed during the dump. |
709 | - (setq abbreviated-home-dir nil) |
710 | - |
711 | - ;; See if we should import version-control from the environment variable. |
712 | - (let ((vc (getenv "VERSION_CONTROL"))) |
713 | - (cond ((eq vc nil)) ;don't do anything if not set |
714 | - ((member vc '("t" "numbered")) |
715 | - (setq version-control t)) |
716 | - ((member vc '("nil" "existing")) |
717 | - (setq version-control nil)) |
718 | - ((member vc '("never" "simple")) |
719 | - (setq version-control 'never)))) |
720 | - |
721 | - ;;! This has been commented out; I currently find the behavior when |
722 | - ;;! split-window-keep-point is nil disturbing, but if I can get used |
723 | - ;;! to it, then it would be better to eliminate the option. |
724 | - ;;! ;; Choose a good default value for split-window-keep-point. |
725 | - ;;! (setq split-window-keep-point (> baud-rate 2400)) |
726 | - |
727 | - ;; Set the default strings to display in mode line for |
728 | - ;; end-of-line formats that aren't native to this platform. |
729 | - (cond |
730 | - ((memq system-type '(ms-dos windows-nt)) |
731 | - (setq eol-mnemonic-unix "(Unix)" |
732 | - eol-mnemonic-mac "(Mac)")) |
733 | - (t ; this is for Unix/GNU/Linux systems |
734 | - (setq eol-mnemonic-dos "(DOS)" |
735 | - eol-mnemonic-mac "(Mac)"))) |
736 | - |
737 | - (set-locale-environment nil) |
738 | - |
739 | - ;; Convert preloaded file names in load-history to absolute. |
740 | - (let ((simple-file-name |
741 | - ;; Look for simple.el or simple.elc and use their directory |
742 | - ;; as the place where all Lisp files live. |
743 | - (locate-file "simple" load-path (get-load-suffixes))) |
744 | - lisp-dir) |
745 | - ;; Don't abort if simple.el cannot be found, but print a warning. |
746 | - (if (null simple-file-name) |
747 | - (progn |
748 | - (princ "Warning: Could not find simple.el nor simple.elc" |
749 | - 'external-debugging-output) |
750 | - (terpri 'external-debugging-output)) |
751 | - (setq lisp-dir (file-truename (file-name-directory simple-file-name))) |
752 | - (setq load-history |
753 | - (mapcar (lambda (elt) |
754 | - (if (and (stringp (car elt)) |
755 | - (not (file-name-absolute-p (car elt)))) |
756 | - (cons (concat lisp-dir |
757 | - (car elt)) |
758 | - (cdr elt)) |
759 | - elt)) |
760 | - load-history)))) |
761 | - |
762 | - ;; Convert the arguments to Emacs internal representation. |
763 | - (let ((args (cdr command-line-args))) |
764 | - (while args |
765 | - (setcar args |
766 | - (decode-coding-string (car args) locale-coding-system t)) |
767 | - (pop args))) |
768 | - |
769 | - (let ((done nil) |
770 | - (args (cdr command-line-args)) |
771 | - display-arg) |
772 | - |
773 | - ;; Figure out which user's init file to load, |
774 | - ;; either from the environment or from the options. |
775 | - (setq init-file-user (if noninteractive nil (user-login-name))) |
776 | - ;; If user has not done su, use current $HOME to find .emacs. |
777 | - (and init-file-user |
778 | - (equal init-file-user (user-real-login-name)) |
779 | - (setq init-file-user "")) |
780 | - |
781 | - ;; Process the command-line args, and delete the arguments |
782 | - ;; processed. This is consistent with the way main in emacs.c |
783 | - ;; does things. |
784 | - (while (and (not done) args) |
785 | - (let* ((longopts '(("--no-init-file") ("--no-site-file") ("--debug-init") |
786 | - ("--user") ("--iconic") ("--icon-type") ("--quick") |
787 | - ("--no-blinking-cursor") ("--basic-display"))) |
788 | - (argi (pop args)) |
789 | - (orig-argi argi) |
790 | - argval) |
791 | - ;; Handle --OPTION=VALUE format. |
792 | - (when (string-match "\\`\\(--[^=]*\\)=" argi) |
793 | - (setq argval (substring argi (match-end 0)) |
794 | - argi (match-string 1 argi))) |
795 | - (when (string-match "\\`--." orig-argi) |
796 | - (let ((completion (try-completion argi longopts))) |
797 | - (if (eq completion t) |
798 | - (setq argi (substring argi 1)) |
799 | - (if (stringp completion) |
800 | - (let ((elt (assoc completion longopts))) |
801 | - (or elt |
802 | - (error "Option `%s' is ambiguous" argi)) |
803 | - (setq argi (substring (car elt) 1))) |
804 | - (setq argval nil |
805 | - argi orig-argi))))) |
806 | - (cond |
807 | - ;; The --display arg is handled partly in C, partly in Lisp. |
808 | - ;; When it shows up here, we just put it back to be handled |
809 | - ;; by `command-line-1'. |
810 | - ((member argi '("-d" "-display")) |
811 | - (setq display-arg (list argi (pop args)))) |
812 | - ((member argi '("-Q" "-quick")) |
813 | - (setq init-file-user nil |
814 | - site-run-file nil |
815 | - inhibit-x-resources t)) |
816 | - ((member argi '("-D" "-basic-display")) |
817 | - (setq no-blinking-cursor t |
818 | - emacs-basic-display t) |
819 | - (push '(vertical-scroll-bars . nil) initial-frame-alist)) |
820 | - ((member argi '("-q" "-no-init-file")) |
821 | - (setq init-file-user nil)) |
822 | - ((member argi '("-u" "-user")) |
823 | - (setq init-file-user (or argval (pop args)) |
824 | - argval nil)) |
825 | - ((equal argi "-no-site-file") |
826 | - (setq site-run-file nil)) |
827 | - ((equal argi "-debug-init") |
828 | - (setq init-file-debug t)) |
829 | - ((equal argi "-iconic") |
830 | - (push '(visibility . icon) initial-frame-alist)) |
831 | - ((member argi '("-nbc" "-no-blinking-cursor")) |
832 | - (setq no-blinking-cursor t)) |
833 | - ;; Push the popped arg back on the list of arguments. |
834 | - (t |
835 | - (push argi args) |
836 | - (setq done t))) |
837 | - ;; Was argval set but not used? |
838 | - (and argval |
839 | - (error "Option `%s' doesn't allow an argument" argi)))) |
840 | - |
841 | - ;; Re-attach the --display arg. |
842 | - (and display-arg (setq args (append display-arg args))) |
843 | - |
844 | - ;; Re-attach the program name to the front of the arg list. |
845 | - (and command-line-args |
846 | - (setcdr command-line-args args))) |
847 | - |
848 | - ;; Make sure window system's init file was loaded in loadup.el if |
849 | - ;; using a window system. |
850 | - ;; Initialize the window-system only after processing the command-line |
851 | - ;; args so that -Q can influence this initialization. |
852 | - (condition-case error |
853 | - (unless noninteractive |
854 | - (if (and initial-window-system |
855 | - (not (featurep |
856 | - (intern |
857 | - (concat (symbol-name initial-window-system) "-win"))))) |
858 | - (error "Unsupported window system `%s'" initial-window-system)) |
859 | - ;; Process window-system specific command line parameters. |
860 | - (setq command-line-args |
861 | - (funcall |
862 | - (or (cdr (assq initial-window-system handle-args-function-alist)) |
863 | - (error "Unsupported window system `%s'" initial-window-system)) |
864 | - command-line-args)) |
865 | - ;; Initialize the window system. (Open connection, etc.) |
866 | - (funcall |
867 | - (or (cdr (assq initial-window-system window-system-initialization-alist)) |
868 | - (error "Unsupported window system `%s'" initial-window-system)))) |
869 | - ;; If there was an error, print the error message and exit. |
870 | - (error |
871 | - (princ |
872 | - (if (eq (car error) 'error) |
873 | - (apply 'concat (cdr error)) |
874 | - (if (memq 'file-error (get (car error) 'error-conditions)) |
875 | - (format "%s: %s" |
876 | - (nth 1 error) |
877 | - (mapconcat (lambda (obj) (prin1-to-string obj t)) |
878 | - (cdr (cdr error)) ", ")) |
879 | - (format "%s: %s" |
880 | - (get (car error) 'error-message) |
881 | - (mapconcat (lambda (obj) (prin1-to-string obj t)) |
882 | - (cdr error) ", ")))) |
883 | - 'external-debugging-output) |
884 | - (terpri 'external-debugging-output) |
885 | - (setq initial-window-system nil) |
886 | - (kill-emacs))) |
887 | - |
888 | - (run-hooks 'before-init-hook) |
889 | - |
890 | - ;; Under X Window, this creates the X frame and deletes the terminal frame. |
891 | - (unless (daemonp) |
892 | - (frame-initialize)) |
893 | - |
894 | - ;; Turn off blinking cursor if so specified in X resources. This is here |
895 | - ;; only because all other settings of no-blinking-cursor are here. |
896 | - (unless (or noninteractive |
897 | - emacs-basic-display |
898 | - (and (memq window-system '(x w32 ns)) |
899 | - (not (member (x-get-resource "cursorBlink" "CursorBlink") |
900 | - '("off" "false"))))) |
901 | - (setq no-blinking-cursor t)) |
902 | - |
903 | - ;; If frame was created with a menu bar, set menu-bar-mode on. |
904 | - (unless (or noninteractive |
905 | - emacs-basic-display |
906 | - (and (memq initial-window-system '(x w32)) |
907 | - (<= (frame-parameter nil 'menu-bar-lines) 0))) |
908 | - (menu-bar-mode 1)) |
909 | - |
910 | - (unless (or noninteractive (not (fboundp 'tool-bar-mode))) |
911 | - ;; Set up the tool-bar. Do this even in tty frames, so that there |
912 | - ;; is a tool-bar if Emacs later opens a graphical frame. |
913 | - (if (or emacs-basic-display |
914 | - (and (numberp (frame-parameter nil 'tool-bar-lines)) |
915 | - (<= (frame-parameter nil 'tool-bar-lines) 0))) |
916 | - ;; On a graphical display with the toolbar disabled via X |
917 | - ;; resources, set up the toolbar without enabling it. |
918 | - (tool-bar-setup) |
919 | - ;; Otherwise, enable tool-bar-mode. |
920 | - (tool-bar-mode 1))) |
921 | - |
922 | - ;; Re-evaluate predefined variables whose initial value depends on |
923 | - ;; the runtime context. |
924 | - (mapc 'custom-reevaluate-setting |
925 | - ;; Initialize them in the same order they were loaded, in case there |
926 | - ;; are dependencies between them. |
927 | - (prog1 (nreverse custom-delayed-init-variables) |
928 | - (setq custom-delayed-init-variables nil))) |
929 | - |
930 | - (normal-erase-is-backspace-setup-frame) |
931 | - |
932 | - ;; Register default TTY colors for the case the terminal hasn't a |
933 | - ;; terminal init file. We do this regardles of whether the terminal |
934 | - ;; supports colors or not and regardless the current display type, |
935 | - ;; since users can connect to color-capable terminals and also |
936 | - ;; switch color support on or off in mid-session by setting the |
937 | - ;; tty-color-mode frame parameter. |
938 | - ;; Exception: the `pc' ``window system'' has only 16 fixed colors, |
939 | - ;; and they are already set at this point by a suitable function in |
940 | - ;; window-system-initialization-alist. |
941 | - (or (eq initial-window-system 'pc) |
942 | - (tty-register-default-colors)) |
943 | - |
944 | - ;; Record whether the tool-bar is present before the user and site |
945 | - ;; init files are processed. frame-notice-user-settings uses this |
946 | - ;; to determine if the tool-bar has been disabled by the init files, |
947 | - ;; and the frame needs to be resized. |
948 | - (when (fboundp 'frame-notice-user-settings) |
949 | - (let ((tool-bar-lines (or (assq 'tool-bar-lines initial-frame-alist) |
950 | - (assq 'tool-bar-lines default-frame-alist)))) |
951 | - (setq tool-bar-originally-present |
952 | - (and tool-bar-lines |
953 | - (cdr tool-bar-lines) |
954 | - (not (eq 0 (cdr tool-bar-lines))))))) |
955 | - |
956 | - (let ((old-scalable-fonts-allowed scalable-fonts-allowed) |
957 | - (old-font-list-limit font-list-limit) |
958 | - (old-face-ignored-fonts face-ignored-fonts)) |
959 | - |
960 | - ;; Run the site-start library if it exists. The point of this file is |
961 | - ;; that it is run before .emacs. There is no point in doing this after |
962 | - ;; .emacs; that is useless. |
963 | - ;; Note that user-init-file is nil at this point. Code that might |
964 | - ;; be loaded from site-run-file and wants to test if -q was given |
965 | - ;; should check init-file-user instead, since that is already set. |
966 | - ;; See cus-edit.el for an example. |
967 | - (if site-run-file |
968 | - (load site-run-file t t)) |
969 | - |
970 | - ;; Sites should not disable this. Only individuals should disable |
971 | - ;; the startup screen. |
972 | - (setq inhibit-startup-screen nil) |
973 | - |
974 | - ;; Warn for invalid user name. |
975 | - (when init-file-user |
976 | - (if (string-match "[~/:\n]" init-file-user) |
977 | - (display-warning 'initialization |
978 | - (format "Invalid user name %s" |
979 | - init-file-user) |
980 | - :error) |
981 | - (if (file-directory-p (expand-file-name |
982 | - ;; We don't support ~USER on MS-Windows |
983 | - ;; and MS-DOS except for the current |
984 | - ;; user, and always load .emacs from |
985 | - ;; the current user's home directory |
986 | - ;; (see below). So always check "~", |
987 | - ;; even if invoked with "-u USER", or |
988 | - ;; if $USER or $LOGNAME are set to |
989 | - ;; something different. |
990 | - (if (memq system-type '(windows-nt ms-dos)) |
991 | - "~" |
992 | - (concat "~" init-file-user)))) |
993 | - nil |
994 | - (display-warning 'initialization |
995 | - (format "User %s has no home directory" |
996 | - init-file-user) |
997 | - :error)))) |
998 | - |
999 | - ;; Load that user's init file, or the default one, or none. |
1000 | - (let (debug-on-error-from-init-file |
1001 | - debug-on-error-should-be-set |
1002 | - (debug-on-error-initial |
1003 | - (if (eq init-file-debug t) 'startup init-file-debug)) |
1004 | - (orig-enable-multibyte (default-value 'enable-multibyte-characters))) |
1005 | - (let ((debug-on-error debug-on-error-initial) |
1006 | - ;; This function actually reads the init files. |
1007 | - (inner |
1008 | - (function |
1009 | - (lambda () |
1010 | - (if init-file-user |
1011 | - (let ((user-init-file-1 |
1012 | - (cond |
1013 | - ((eq system-type 'ms-dos) |
1014 | - (concat "~" init-file-user "/_emacs")) |
1015 | - ((eq system-type 'windows-nt) |
1016 | - ;; Prefer .emacs on Windows. |
1017 | - (if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") |
1018 | - "~/.emacs" |
1019 | - ;; Also support _emacs for compatibility. |
1020 | - (if (directory-files "~" nil "^_emacs\\(\\.elc?\\)?$") |
1021 | - "~/_emacs" |
1022 | - ;; But default to .emacs if _emacs does not exist. |
1023 | - "~/.emacs"))) |
1024 | - (t |
1025 | - (concat "~" init-file-user "/.emacs"))))) |
1026 | - ;; This tells `load' to store the file name found |
1027 | - ;; into user-init-file. |
1028 | - (setq user-init-file t) |
1029 | - (load user-init-file-1 t t) |
1030 | - |
1031 | - (when (eq user-init-file t) |
1032 | - ;; If we did not find ~/.emacs, try |
1033 | - ;; ~/.emacs.d/init.el. |
1034 | - (let ((otherfile |
1035 | - (expand-file-name |
1036 | - "init" |
1037 | - (file-name-as-directory |
1038 | - (concat "~" init-file-user "/.emacs.d"))))) |
1039 | - (load otherfile t t) |
1040 | - |
1041 | - ;; If we did not find the user's init file, |
1042 | - ;; set user-init-file conclusively. |
1043 | - ;; Don't let it be set from default.el. |
1044 | - (when (eq user-init-file t) |
1045 | - (setq user-init-file user-init-file-1)))) |
1046 | - |
1047 | - ;; If we loaded a compiled file, set |
1048 | - ;; `user-init-file' to the source version if that |
1049 | - ;; exists. |
1050 | - (when (and user-init-file |
1051 | - (equal (file-name-extension user-init-file) |
1052 | - "elc")) |
1053 | - (let* ((source (file-name-sans-extension user-init-file)) |
1054 | - (alt (concat source ".el"))) |
1055 | - (setq source (cond ((file-exists-p alt) alt) |
1056 | - ((file-exists-p source) source) |
1057 | - (t nil))) |
1058 | - (when source |
1059 | - (when (file-newer-than-file-p source user-init-file) |
1060 | - (message "Warning: %s is newer than %s" |
1061 | - source user-init-file) |
1062 | - (sit-for 1)) |
1063 | - (setq user-init-file source)))) |
1064 | - |
1065 | - (unless inhibit-default-init |
1066 | - (let ((inhibit-startup-screen nil)) |
1067 | - ;; Users are supposed to be told their rights. |
1068 | - ;; (Plus how to get help and how to undo.) |
1069 | - ;; Don't you dare turn this off for anyone |
1070 | - ;; except yourself. |
1071 | - (load "default" t t))))))))) |
1072 | - (if init-file-debug |
1073 | - ;; Do this without a condition-case if the user wants to debug. |
1074 | - (funcall inner) |
1075 | - (condition-case error |
1076 | - (progn |
1077 | - (funcall inner) |
1078 | - (setq init-file-had-error nil)) |
1079 | - (error |
1080 | - (display-warning |
1081 | - 'initialization |
1082 | - (format "An error occurred while loading `%s':\n\n%s%s%s\n\n\ |
1083 | -To ensure normal operation, you should investigate and remove the |
1084 | -cause of the error in your initialization file. Start Emacs with |
1085 | -the `--debug-init' option to view a complete error backtrace." |
1086 | - user-init-file |
1087 | - (get (car error) 'error-message) |
1088 | - (if (cdr error) ": " "") |
1089 | - (mapconcat (lambda (s) (prin1-to-string s t)) (cdr error) ", ")) |
1090 | - :warning) |
1091 | - (setq init-file-had-error t)))) |
1092 | - |
1093 | - (if (and deactivate-mark transient-mark-mode) |
1094 | - (with-current-buffer (window-buffer) |
1095 | - (deactivate-mark))) |
1096 | - |
1097 | - ;; If the user has a file of abbrevs, read it (unless -batch). |
1098 | - (when (and (not noninteractive) |
1099 | - (file-exists-p abbrev-file-name) |
1100 | - (file-readable-p abbrev-file-name)) |
1101 | - (quietly-read-abbrev-file abbrev-file-name)) |
1102 | - |
1103 | - ;; If the abbrevs came entirely from the init file or the |
1104 | - ;; abbrevs file, they do not need saving. |
1105 | - (setq abbrevs-changed nil) |
1106 | - |
1107 | - ;; If we can tell that the init file altered debug-on-error, |
1108 | - ;; arrange to preserve the value that it set up. |
1109 | - (or (eq debug-on-error debug-on-error-initial) |
1110 | - (setq debug-on-error-should-be-set t |
1111 | - debug-on-error-from-init-file debug-on-error))) |
1112 | - (if debug-on-error-should-be-set |
1113 | - (setq debug-on-error debug-on-error-from-init-file)) |
1114 | - (unless (or (default-value 'enable-multibyte-characters) |
1115 | - (eq orig-enable-multibyte (default-value |
1116 | - 'enable-multibyte-characters))) |
1117 | - ;; Init file changed to unibyte. Reset existing multibyte |
1118 | - ;; buffers (probably *scratch*, *Messages*, *Minibuff-0*). |
1119 | - ;; Arguably this should only be done if they're free of |
1120 | - ;; multibyte characters. |
1121 | - (mapc (lambda (buffer) |
1122 | - (with-current-buffer buffer |
1123 | - (if enable-multibyte-characters |
1124 | - (set-buffer-multibyte nil)))) |
1125 | - (buffer-list)) |
1126 | - ;; Also re-set the language environment in case it was |
1127 | - ;; originally done before unibyte was set and is sensitive to |
1128 | - ;; unibyte (display table, terminal coding system &c). |
1129 | - (set-language-environment current-language-environment))) |
1130 | - |
1131 | - ;; Do this here in case the init file sets mail-host-address. |
1132 | - (if (equal user-mail-address "") |
1133 | - (setq user-mail-address (or (getenv "EMAIL") |
1134 | - (concat (user-login-name) "@" |
1135 | - (or mail-host-address |
1136 | - (system-name)))))) |
1137 | - |
1138 | - ;; Originally face attributes were specified via |
1139 | - ;; `font-lock-face-attributes'. Users then changed the default |
1140 | - ;; face attributes by setting that variable. However, we try and |
1141 | - ;; be back-compatible and respect its value if set except for |
1142 | - ;; faces where M-x customize has been used to save changes for the |
1143 | - ;; face. |
1144 | - (when (boundp 'font-lock-face-attributes) |
1145 | - (let ((face-attributes font-lock-face-attributes)) |
1146 | - (while face-attributes |
1147 | - (let* ((face-attribute (pop face-attributes)) |
1148 | - (face (car face-attribute))) |
1149 | - ;; Rustle up a `defface' SPEC from a |
1150 | - ;; `font-lock-face-attributes' entry. |
1151 | - (unless (get face 'saved-face) |
1152 | - (let ((foreground (nth 1 face-attribute)) |
1153 | - (background (nth 2 face-attribute)) |
1154 | - (bold-p (nth 3 face-attribute)) |
1155 | - (italic-p (nth 4 face-attribute)) |
1156 | - (underline-p (nth 5 face-attribute)) |
1157 | - face-spec) |
1158 | - (when foreground |
1159 | - (setq face-spec (cons ':foreground (cons foreground face-spec)))) |
1160 | - (when background |
1161 | - (setq face-spec (cons ':background (cons background face-spec)))) |
1162 | - (when bold-p |
1163 | - (setq face-spec (append '(:weight bold) face-spec))) |
1164 | - (when italic-p |
1165 | - (setq face-spec (append '(:slant italic) face-spec))) |
1166 | - (when underline-p |
1167 | - (setq face-spec (append '(:underline t) face-spec))) |
1168 | - (face-spec-set face (list (list t face-spec)) nil))))))) |
1169 | - |
1170 | - ;; If parameter have been changed in the init file which influence |
1171 | - ;; face realization, clear the face cache so that new faces will |
1172 | - ;; be realized. |
1173 | - (unless (and (eq scalable-fonts-allowed old-scalable-fonts-allowed) |
1174 | - (eq font-list-limit old-font-list-limit) |
1175 | - (eq face-ignored-fonts old-face-ignored-fonts)) |
1176 | - (clear-face-cache))) |
1177 | - |
1178 | - (setq after-init-time (current-time)) |
1179 | - (run-hooks 'after-init-hook) |
1180 | - |
1181 | - ;; Decode all default-directory. |
1182 | - (if (and (default-value 'enable-multibyte-characters) locale-coding-system) |
1183 | - (save-excursion |
1184 | - (dolist (elt (buffer-list)) |
1185 | - (set-buffer elt) |
1186 | - (if default-directory |
1187 | - (setq default-directory |
1188 | - (decode-coding-string default-directory |
1189 | - locale-coding-system t)))) |
1190 | - (setq command-line-default-directory |
1191 | - (decode-coding-string command-line-default-directory |
1192 | - locale-coding-system t)))) |
1193 | - |
1194 | - ;; If *scratch* exists and init file didn't change its mode, initialize it. |
1195 | - (if (get-buffer "*scratch*") |
1196 | - (with-current-buffer "*scratch*" |
1197 | - (if (eq major-mode 'fundamental-mode) |
1198 | - (funcall initial-major-mode)))) |
1199 | - |
1200 | - ;; Load library for our terminal type. |
1201 | - ;; User init file can set term-file-prefix to nil to prevent this. |
1202 | - (unless (or noninteractive |
1203 | - initial-window-system) |
1204 | - (tty-run-terminal-initialization (selected-frame))) |
1205 | - |
1206 | - ;; Update the out-of-memory error message based on user's key bindings |
1207 | - ;; for save-some-buffers. |
1208 | - (setq memory-signal-data |
1209 | - (list 'error |
1210 | - (substitute-command-keys "Memory exhausted--use \\[save-some-buffers] then exit and restart Emacs"))) |
1211 | - |
1212 | - ;; Process the remaining args. |
1213 | - (command-line-1 (cdr command-line-args)) |
1214 | - |
1215 | - ;; If -batch, terminate after processing the command options. |
1216 | - (if noninteractive (kill-emacs t)) |
1217 | - |
1218 | - ;; In daemon mode, start the server to allow clients to connect. |
1219 | - ;; This is done after loading the user's init file and after |
1220 | - ;; processing all command line arguments to allow e.g. `server-name' |
1221 | - ;; to be changed before the server starts. |
1222 | - (let ((dn (daemonp))) |
1223 | - (when dn |
1224 | - (when (stringp dn) (setq server-name dn)) |
1225 | - (server-start) |
1226 | - (if server-process |
1227 | - (daemon-initialized) |
1228 | - (if (stringp dn) |
1229 | - (message |
1230 | - "Unable to start daemon: Emacs server named %S already running" |
1231 | - server-name) |
1232 | - (message "Unable to start the daemon.\nAnother instance of Emacs is running the server, either as daemon or interactively.\nYou can use emacsclient to connect to that Emacs process.")) |
1233 | - (kill-emacs 1)))) |
1234 | - |
1235 | - ;; Run emacs-session-restore (session management) if started by |
1236 | - ;; the session manager and we have a session manager connection. |
1237 | - (if (and (boundp 'x-session-previous-id) |
1238 | - (stringp x-session-previous-id)) |
1239 | - (with-no-warnings |
1240 | - (emacs-session-restore x-session-previous-id)))) |
1241 | - |
1242 | -(defcustom initial-scratch-message (purecopy "\ |
1243 | -;; This buffer is for notes you don't want to save, and for Lisp evaluation. |
1244 | -;; If you want to create a file, visit that file with C-x C-f, |
1245 | -;; then enter the text in that file's own buffer. |
1246 | - |
1247 | -") |
1248 | - "Initial message displayed in *scratch* buffer at startup. |
1249 | -If this is nil, no message will be displayed." |
1250 | - :type '(choice (text :tag "Message") |
1251 | - (const :tag "none" nil)) |
1252 | - :group 'initialization) |
1253 | - |
1254 | - |
1255 | |
1256 | -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1257 | -;;; Fancy splash screen |
1258 | -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1259 | - |
1260 | -(defconst fancy-startup-text |
1261 | - '((:face (variable-pitch (:foreground "red")) |
1262 | - "Welcome to " |
1263 | - :link ("GNU Emacs" |
1264 | - (lambda (button) (browse-url "http://www.gnu.org/software/emacs/")) |
1265 | - "Browse http://www.gnu.org/software/emacs/") |
1266 | - ", one component of the " |
1267 | - :link |
1268 | - (lambda () |
1269 | - (if (eq system-type 'gnu/linux) |
1270 | - '("GNU/Linux" |
1271 | - (lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html")) |
1272 | - "Browse http://www.gnu.org/gnu/linux-and-gnu.html") |
1273 | - '("GNU" (lambda (button) (describe-gnu-project)) |
1274 | - "Display info on the GNU project"))) |
1275 | - " operating system.\n\n" |
1276 | - :face variable-pitch |
1277 | - :link ("Emacs Tutorial" (lambda (button) (help-with-tutorial))) |
1278 | - "\tLearn basic keystroke commands" |
1279 | - (lambda () |
1280 | - (let* ((en "TUTORIAL") |
1281 | - (tut (or (get-language-info current-language-environment |
1282 | - 'tutorial) |
1283 | - en)) |
1284 | - (title (with-temp-buffer |
1285 | - (insert-file-contents |
1286 | - (expand-file-name tut tutorial-directory) |
1287 | - nil 0 256) |
1288 | - (search-forward ".") |
1289 | - (buffer-substring (point-min) (1- (point)))))) |
1290 | - ;; If there is a specific tutorial for the current language |
1291 | - ;; environment and it is not English, append its title. |
1292 | - (if (string= en tut) |
1293 | - "" |
1294 | - (concat " (" title ")")))) |
1295 | - "\n" |
1296 | - :link ("Emacs Guided Tour" |
1297 | - (lambda (button) (browse-url "http://www.gnu.org/software/emacs/tour/")) |
1298 | - "Browse http://www.gnu.org/software/emacs/tour/") |
1299 | - "\tOverview of Emacs features at gnu.org\n" |
1300 | - :link ("View Emacs Manual" (lambda (button) (info-emacs-manual))) |
1301 | - "\tView the Emacs manual using Info\n" |
1302 | - :link ("Absence of Warranty" (lambda (button) (describe-no-warranty))) |
1303 | - "\tGNU Emacs comes with " |
1304 | - :face (variable-pitch (:slant oblique)) |
1305 | - "ABSOLUTELY NO WARRANTY\n" |
1306 | - :face variable-pitch |
1307 | - :link ("Copying Conditions" (lambda (button) (describe-copying))) |
1308 | - "\tConditions for redistributing and changing Emacs\n" |
1309 | - :link ("Ordering Manuals" (lambda (button) (view-order-manuals))) |
1310 | - "\tPurchasing printed copies of manuals\n" |
1311 | - "\n")) |
1312 | - "A list of texts to show in the middle part of splash screens. |
1313 | -Each element in the list should be a list of strings or pairs |
1314 | -`:face FACE', like `fancy-splash-insert' accepts them.") |
1315 | - |
1316 | -(defconst fancy-about-text |
1317 | - '((:face (variable-pitch (:foreground "red")) |
1318 | - "This is " |
1319 | - :link ("GNU Emacs" |
1320 | - (lambda (button) (browse-url "http://www.gnu.org/software/emacs/")) |
1321 | - "Browse http://www.gnu.org/software/emacs/") |
1322 | - ", one component of the " |
1323 | - :link |
1324 | - (lambda () |
1325 | - (if (eq system-type 'gnu/linux) |
1326 | - '("GNU/Linux" |
1327 | - (lambda (button) (browse-url "http://www.gnu.org/gnu/linux-and-gnu.html")) |
1328 | - "Browse http://www.gnu.org/gnu/linux-and-gnu.html") |
1329 | - '("GNU" (lambda (button) (describe-gnu-project)) |
1330 | - "Display info on the GNU project."))) |
1331 | - " operating system.\n" |
1332 | - :face (lambda () |
1333 | - (list 'variable-pitch |
1334 | - (list :foreground |
1335 | - (if (eq (frame-parameter nil 'background-mode) 'dark) |
1336 | - "cyan" "darkblue")))) |
1337 | - "\n" |
1338 | - (lambda () (emacs-version)) |
1339 | - "\n" |
1340 | - :face (variable-pitch (:height 0.8)) |
1341 | - (lambda () emacs-copyright) |
1342 | - "\n\n" |
1343 | - :face variable-pitch |
1344 | - :link ("Authors" |
1345 | - (lambda (button) |
1346 | - (view-file (expand-file-name "AUTHORS" data-directory)) |
1347 | - (goto-char (point-min)))) |
1348 | - "\tMany people have contributed code included in GNU Emacs\n" |
1349 | - :link ("Contributing" |
1350 | - (lambda (button) |
1351 | - (view-file (expand-file-name "CONTRIBUTE" data-directory)) |
1352 | - (goto-char (point-min)))) |
1353 | - "\tHow to contribute improvements to Emacs\n" |
1354 | - "\n" |
1355 | - :link ("GNU and Freedom" (lambda (button) (describe-gnu-project))) |
1356 | - "\tWhy we developed GNU Emacs, and the GNU operating system\n" |
1357 | - :link ("Absence of Warranty" (lambda (button) (describe-no-warranty))) |
1358 | - "\tGNU Emacs comes with " |
1359 | - :face (variable-pitch (:slant oblique)) |
1360 | - "ABSOLUTELY NO WARRANTY\n" |
1361 | - :face variable-pitch |
1362 | - :link ("Copying Conditions" (lambda (button) (describe-copying))) |
1363 | - "\tConditions for redistributing and changing Emacs\n" |
1364 | - :link ("Getting New Versions" (lambda (button) (describe-distribution))) |
1365 | - "\tHow to obtain the latest version of Emacs\n" |
1366 | - :link ("Ordering Manuals" (lambda (button) (view-order-manuals))) |
1367 | - "\tBuying printed manuals from the FSF\n" |
1368 | - "\n" |
1369 | - :link ("Emacs Tutorial" (lambda (button) (help-with-tutorial))) |
1370 | - "\tLearn basic Emacs keystroke commands" |
1371 | - (lambda () |
1372 | - (let* ((en "TUTORIAL") |
1373 | - (tut (or (get-language-info current-language-environment |
1374 | - 'tutorial) |
1375 | - en)) |
1376 | - (title (with-temp-buffer |
1377 | - (insert-file-contents |
1378 | - (expand-file-name tut tutorial-directory) |
1379 | - nil 0 256) |
1380 | - (search-forward ".") |
1381 | - (buffer-substring (point-min) (1- (point)))))) |
1382 | - ;; If there is a specific tutorial for the current language |
1383 | - ;; environment and it is not English, append its title. |
1384 | - (if (string= en tut) |
1385 | - "" |
1386 | - (concat " (" title ")")))) |
1387 | - "\n" |
1388 | - :link ("Emacs Guided Tour" |
1389 | - (lambda (button) (browse-url "http://www.gnu.org/software/emacs/tour/")) |
1390 | - "Browse http://www.gnu.org/software/emacs/tour/") |
1391 | - "\tSee an overview of Emacs features at gnu.org" |
1392 | - )) |
1393 | - "A list of texts to show in the middle part of the About screen. |
1394 | -Each element in the list should be a list of strings or pairs |
1395 | -`:face FACE', like `fancy-splash-insert' accepts them.") |
1396 | - |
1397 | - |
1398 | -(defgroup fancy-splash-screen () |
1399 | - "Fancy splash screen when Emacs starts." |
1400 | - :version "21.1" |
1401 | - :group 'initialization) |
1402 | - |
1403 | -(defcustom fancy-splash-image nil |
1404 | - "The image to show in the splash screens, or nil for defaults." |
1405 | - :group 'fancy-splash-screen |
1406 | - :type '(choice (const :tag "Default" nil) |
1407 | - (file :tag "File"))) |
1408 | - |
1409 | - |
1410 | -(defvar splash-screen-keymap |
1411 | - (let ((map (make-sparse-keymap))) |
1412 | - (suppress-keymap map) |
1413 | - (set-keymap-parent map button-buffer-map) |
1414 | - (define-key map "\C-?" 'scroll-down) |
1415 | - (define-key map " " 'scroll-up) |
1416 | - (define-key map "q" 'exit-splash-screen) |
1417 | - map) |
1418 | - "Keymap for splash screen buffer.") |
1419 | - |
1420 | -;; These are temporary storage areas for the splash screen display. |
1421 | - |
1422 | -(defun fancy-splash-insert (&rest args) |
1423 | - "Insert text into the current buffer, with faces. |
1424 | -Arguments from ARGS should be either strings; functions called |
1425 | -with no args that return a string; pairs `:face FACE', where FACE |
1426 | -is a face specification usable with `put-text-property'; or pairs |
1427 | -`:link LINK' where LINK is a list of arguments to pass to |
1428 | -`insert-button', of the form (LABEL ACTION [HELP-ECHO]), which |
1429 | -specifies the button's label, `action' property and help-echo string. |
1430 | -FACE and LINK can also be functions, which are evaluated to obtain |
1431 | -a face or button specification." |
1432 | - (let ((current-face nil)) |
1433 | - (while args |
1434 | - (cond ((eq (car args) :face) |
1435 | - (setq args (cdr args) current-face (car args)) |
1436 | - (if (functionp current-face) |
1437 | - (setq current-face (funcall current-face)))) |
1438 | - ((eq (car args) :link) |
1439 | - (setq args (cdr args)) |
1440 | - (let ((spec (car args))) |
1441 | - (if (functionp spec) |
1442 | - (setq spec (funcall spec))) |
1443 | - (insert-button (car spec) |
1444 | - 'face (list 'link current-face) |
1445 | - 'action (cadr spec) |
1446 | - 'help-echo (concat "mouse-2, RET: " |
1447 | - (or (nth 2 spec) |
1448 | - "Follow this link")) |
1449 | - 'follow-link t))) |
1450 | - (t (insert (propertize (let ((it (car args))) |
1451 | - (if (functionp it) |
1452 | - (funcall it) |
1453 | - it)) |
1454 | - 'face current-face |
1455 | - 'help-echo (startup-echo-area-message))))) |
1456 | - (setq args (cdr args))))) |
1457 | - |
1458 | -(declare-function image-size "image.c" (spec &optional pixels frame)) |
1459 | - |
1460 | -(defun fancy-splash-head () |
1461 | - "Insert the head part of the splash screen into the current buffer." |
1462 | - (let* ((image-file (cond ((stringp fancy-splash-image) |
1463 | - fancy-splash-image) |
1464 | - ((display-color-p) |
1465 | - (cond ((<= (display-planes) 8) |
1466 | - (if (image-type-available-p 'xpm) |
1467 | - "splash.xpm" |
1468 | - "splash.pbm")) |
1469 | - ((image-type-available-p 'svg) |
1470 | - "splash.svg") |
1471 | - ((image-type-available-p 'png) |
1472 | - "splash.png") |
1473 | - ((image-type-available-p 'xpm) |
1474 | - "splash.xpm") |
1475 | - (t "splash.pbm"))) |
1476 | - (t "splash.pbm"))) |
1477 | - (img (create-image image-file)) |
1478 | - (image-width (and img (car (image-size img)))) |
1479 | - (window-width (window-width (selected-window)))) |
1480 | - (when img |
1481 | - (when (> window-width image-width) |
1482 | - ;; Center the image in the window. |
1483 | - (insert (propertize " " 'display |
1484 | - `(space :align-to (+ center (-0.5 . ,img))))) |
1485 | - |
1486 | - ;; Change the color of the XPM version of the splash image |
1487 | - ;; so that it is visible with a dark frame background. |
1488 | - (when (and (memq 'xpm img) |
1489 | - (eq (frame-parameter nil 'background-mode) 'dark)) |
1490 | - (setq img (append img '(:color-symbols (("#000000" . "gray30")))))) |
1491 | - |
1492 | - ;; Insert the image with a help-echo and a link. |
1493 | - (make-button (prog1 (point) (insert-image img)) (point) |
1494 | - 'face 'default |
1495 | - 'help-echo "mouse-2, RET: Browse http://www.gnu.org/" |
1496 | - 'action (lambda (button) (browse-url "http://www.gnu.org/")) |
1497 | - 'follow-link t) |
1498 | - (insert "\n\n"))))) |
1499 | - |
1500 | -(defun fancy-startup-tail (&optional concise) |
1501 | - "Insert the tail part of the splash screen into the current buffer." |
1502 | - (let ((fg (if (eq (frame-parameter nil 'background-mode) 'dark) |
1503 | - "cyan" "darkblue"))) |
1504 | - (unless concise |
1505 | - (fancy-splash-insert |
1506 | - :face 'variable-pitch |
1507 | - "\nTo start... " |
1508 | - :link '("Open a File" |
1509 | - (lambda (button) (call-interactively 'find-file)) |
1510 | - "Specify a new file's name, to edit the file") |
1511 | - " " |
1512 | - :link '("Open Home Directory" |
1513 | - (lambda (button) (dired "~")) |
1514 | - "Open your home directory, to operate on its files") |
1515 | - " " |
1516 | - :link '("Customize Startup" |
1517 | - (lambda (button) (customize-group 'initialization)) |
1518 | - "Change initialization settings including this screen") |
1519 | - "\n")) |
1520 | - (fancy-splash-insert |
1521 | - :face 'variable-pitch "To quit a partially entered command, type " |
1522 | - :face 'default "Control-g" |
1523 | - :face 'variable-pitch ".\n") |
1524 | - (fancy-splash-insert :face `(variable-pitch (:foreground ,fg)) |
1525 | - "\nThis is " |
1526 | - (emacs-version) |
1527 | - "\n" |
1528 | - :face '(variable-pitch (:height 0.8)) |
1529 | - emacs-copyright |
1530 | - "\n") |
1531 | - (and auto-save-list-file-prefix |
1532 | - ;; Don't signal an error if the |
1533 | - ;; directory for auto-save-list files |
1534 | - ;; does not yet exist. |
1535 | - (file-directory-p (file-name-directory |
1536 | - auto-save-list-file-prefix)) |
1537 | - (directory-files |
1538 | - (file-name-directory auto-save-list-file-prefix) |
1539 | - nil |
1540 | - (concat "\\`" |
1541 | - (regexp-quote (file-name-nondirectory |
1542 | - auto-save-list-file-prefix))) |
1543 | - t) |
1544 | - (fancy-splash-insert :face '(variable-pitch (:foreground "red")) |
1545 | - "\nIf an Emacs session crashed recently, " |
1546 | - "type " |
1547 | - :face '(fixed-pitch :foreground "red") |
1548 | - "Meta-x recover-session RET" |
1549 | - :face '(variable-pitch (:foreground "red")) |
1550 | - "\nto recover" |
1551 | - " the files you were editing.")) |
1552 | - |
1553 | - (when concise |
1554 | - (fancy-splash-insert |
1555 | - :face 'variable-pitch "\n" |
1556 | - :link '("Dismiss this startup screen" |
1557 | - (lambda (button) |
1558 | - (when startup-screen-inhibit-startup-screen |
1559 | - (customize-set-variable 'inhibit-startup-screen t) |
1560 | - (customize-mark-to-save 'inhibit-startup-screen) |
1561 | - (custom-save-all)) |
1562 | - (let ((w (get-buffer-window "*GNU Emacs*"))) |
1563 | - (and w (not (one-window-p)) (delete-window w))) |
1564 | - (kill-buffer "*GNU Emacs*"))) |
1565 | - " ") |
1566 | - (when (or user-init-file custom-file) |
1567 | - (let ((checked (create-image "\300\300\141\143\067\076\034\030" |
1568 | - 'xbm t :width 8 :height 8 :background "grey75" |
1569 | - :foreground "black" :relief -2 :ascent 'center)) |
1570 | - (unchecked (create-image (make-string 8 0) |
1571 | - 'xbm t :width 8 :height 8 :background "grey75" |
1572 | - :foreground "black" :relief -2 :ascent 'center))) |
1573 | - (insert-button |
1574 | - " " :on-glyph checked :off-glyph unchecked 'checked nil |
1575 | - 'display unchecked 'follow-link t |
1576 | - 'action (lambda (button) |
1577 | - (if (overlay-get button 'checked) |
1578 | - (progn (overlay-put button 'checked nil) |
1579 | - (overlay-put button 'display (overlay-get button :off-glyph)) |
1580 | - (setq startup-screen-inhibit-startup-screen nil)) |
1581 | - (overlay-put button 'checked t) |
1582 | - (overlay-put button 'display (overlay-get button :on-glyph)) |
1583 | - (setq startup-screen-inhibit-startup-screen t))))) |
1584 | - (fancy-splash-insert :face '(variable-pitch (:height 0.9)) |
1585 | - " Never show it again."))))) |
1586 | - |
1587 | -(defun exit-splash-screen () |
1588 | - "Stop displaying the splash screen buffer." |
1589 | - (interactive) |
1590 | - (quit-window t)) |
1591 | - |
1592 | -(defun fancy-startup-screen (&optional concise) |
1593 | - "Display fancy startup screen. |
1594 | -If CONCISE is non-nil, display a concise version of the |
1595 | -splash screen in another window." |
1596 | - (let ((splash-buffer (get-buffer-create "*GNU Emacs*"))) |
1597 | - (with-current-buffer splash-buffer |
1598 | - (let ((inhibit-read-only t)) |
1599 | - (erase-buffer) |
1600 | - (setq default-directory command-line-default-directory) |
1601 | - (make-local-variable 'startup-screen-inhibit-startup-screen) |
1602 | - (if pure-space-overflow |
1603 | - (insert pure-space-overflow-message)) |
1604 | - (unless concise |
1605 | - (fancy-splash-head)) |
1606 | - (dolist (text fancy-startup-text) |
1607 | - (apply #'fancy-splash-insert text) |
1608 | - (insert "\n")) |
1609 | - (skip-chars-backward "\n") |
1610 | - (delete-region (point) (point-max)) |
1611 | - (insert "\n") |
1612 | - (fancy-startup-tail concise)) |
1613 | - (use-local-map splash-screen-keymap) |
1614 | - (setq tab-width 22 |
1615 | - buffer-read-only t) |
1616 | - (set-buffer-modified-p nil) |
1617 | - (if (and view-read-only (not view-mode)) |
1618 | - (view-mode-enter nil 'kill-buffer)) |
1619 | - (goto-char (point-min)) |
1620 | - (forward-line (if concise 2 4))) |
1621 | - (if concise |
1622 | - (progn |
1623 | - (display-buffer splash-buffer) |
1624 | - ;; If the splash screen is in a split window, fit it. |
1625 | - (let ((window (get-buffer-window splash-buffer t))) |
1626 | - (or (null window) |
1627 | - (eq window (selected-window)) |
1628 | - (eq window (next-window window)) |
1629 | - (fit-window-to-buffer window)))) |
1630 | - (switch-to-buffer splash-buffer)))) |
1631 | - |
1632 | -(defun fancy-about-screen () |
1633 | - "Display fancy About screen." |
1634 | - (let ((frame (fancy-splash-frame))) |
1635 | - (save-selected-window |
1636 | - (select-frame frame) |
1637 | - (switch-to-buffer "*About GNU Emacs*") |
1638 | - (setq buffer-undo-list t |
1639 | - mode-line-format |
1640 | - (concat "----" |
1641 | - (propertize "%b" 'face 'mode-line-buffer-id) |
1642 | - "%-")) |
1643 | - (let ((inhibit-read-only t)) |
1644 | - (erase-buffer) |
1645 | - (if pure-space-overflow |
1646 | - (insert pure-space-overflow-message)) |
1647 | - (fancy-splash-head) |
1648 | - (dolist (text fancy-about-text) |
1649 | - (apply #'fancy-splash-insert text) |
1650 | - (insert "\n")) |
1651 | - (set-buffer-modified-p nil) |
1652 | - (goto-char (point-min)) |
1653 | - (force-mode-line-update)) |
1654 | - (use-local-map splash-screen-keymap) |
1655 | - (setq tab-width 22) |
1656 | - (message "%s" (startup-echo-area-message)) |
1657 | - (setq buffer-read-only t) |
1658 | - (goto-char (point-min)) |
1659 | - (forward-line 3)))) |
1660 | - |
1661 | -(defun fancy-splash-frame () |
1662 | - "Return the frame to use for the fancy splash screen. |
1663 | -Returning non-nil does not mean we should necessarily |
1664 | -use the fancy splash screen, but if we do use it, |
1665 | -we put it on this frame." |
1666 | - (let (chosen-frame) |
1667 | - (dolist (frame (append (frame-list) (list (selected-frame)))) |
1668 | - (if (and (frame-visible-p frame) |
1669 | - (not (window-minibuffer-p (frame-selected-window frame)))) |
1670 | - (setq chosen-frame frame))) |
1671 | - chosen-frame)) |
1672 | - |
1673 | -(defun use-fancy-splash-screens-p () |
1674 | - "Return t if fancy splash screens should be used." |
1675 | - (when (and (display-graphic-p) |
1676 | - (or (and (display-color-p) |
1677 | - (image-type-available-p 'xpm)) |
1678 | - (image-type-available-p 'pbm))) |
1679 | - (let ((frame (fancy-splash-frame))) |
1680 | - (when frame |
1681 | - (let* ((img (create-image (or fancy-splash-image |
1682 | - (if (and (display-color-p) |
1683 | - (image-type-available-p 'xpm)) |
1684 | - "splash.xpm" "splash.pbm")))) |
1685 | - (image-height (and img (cdr (image-size img nil frame)))) |
1686 | - ;; We test frame-height so that, if the frame is split |
1687 | - ;; by displaying a warning, that doesn't cause the normal |
1688 | - ;; splash screen to be used. |
1689 | - (frame-height (1- (frame-height frame)))) |
1690 | - (> frame-height (+ image-height 19))))))) |
1691 | - |
1692 | - |
1693 | -(defun normal-splash-screen (&optional startup concise) |
1694 | - "Display non-graphic splash screen. |
1695 | -If optional argument STARTUP is non-nil, display the startup screen |
1696 | -after Emacs starts. If STARTUP is nil, display the About screen. |
1697 | -If CONCISE is non-nil, display a concise version of the |
1698 | -splash screen in another window." |
1699 | - (let ((splash-buffer (get-buffer-create "*About GNU Emacs*"))) |
1700 | - (with-current-buffer splash-buffer |
1701 | - (setq buffer-read-only nil) |
1702 | - (erase-buffer) |
1703 | - (setq default-directory command-line-default-directory) |
1704 | - (set (make-local-variable 'tab-width) 8) |
1705 | - (if (not startup) |
1706 | - (set (make-local-variable 'mode-line-format) |
1707 | - (propertize "---- %b %-" 'face 'mode-line-buffer-id))) |
1708 | - |
1709 | - (if pure-space-overflow |
1710 | - (insert pure-space-overflow-message)) |
1711 | - |
1712 | - ;; The convention for this piece of code is that |
1713 | - ;; each piece of output starts with one or two newlines |
1714 | - ;; and does not end with any newlines. |
1715 | - (insert (if startup "Welcome to GNU Emacs" "This is GNU Emacs")) |
1716 | - (insert |
1717 | - (if (eq system-type 'gnu/linux) |
1718 | - ", one component of the GNU/Linux operating system.\n" |
1719 | - ", a part of the GNU operating system.\n")) |
1720 | - |
1721 | - (if startup |
1722 | - (if (display-mouse-p) |
1723 | - ;; The user can use the mouse to activate menus |
1724 | - ;; so give help in terms of menu items. |
1725 | - (normal-mouse-startup-screen) |
1726 | - |
1727 | - ;; No mouse menus, so give help using kbd commands. |
1728 | - (normal-no-mouse-startup-screen)) |
1729 | - |
1730 | - (normal-about-screen)) |
1731 | - |
1732 | - ;; The rest of the startup screen is the same on all |
1733 | - ;; kinds of terminals. |
1734 | - |
1735 | - ;; Give information on recovering, if there was a crash. |
1736 | - (and startup |
1737 | - auto-save-list-file-prefix |
1738 | - ;; Don't signal an error if the |
1739 | - ;; directory for auto-save-list files |
1740 | - ;; does not yet exist. |
1741 | - (file-directory-p (file-name-directory |
1742 | - auto-save-list-file-prefix)) |
1743 | - (directory-files |
1744 | - (file-name-directory auto-save-list-file-prefix) |
1745 | - nil |
1746 | - (concat "\\`" |
1747 | - (regexp-quote (file-name-nondirectory |
1748 | - auto-save-list-file-prefix))) |
1749 | - t) |
1750 | - (insert "\n\nIf an Emacs session crashed recently, " |
1751 | - "type Meta-x recover-session RET\nto recover" |
1752 | - " the files you were editing.\n")) |
1753 | - |
1754 | - (use-local-map splash-screen-keymap) |
1755 | - |
1756 | - ;; Display the input that we set up in the buffer. |
1757 | - (set-buffer-modified-p nil) |
1758 | - (setq buffer-read-only t) |
1759 | - (if (and view-read-only (not view-mode)) |
1760 | - (view-mode-enter nil 'kill-buffer)) |
1761 | - (if startup (rename-buffer "*GNU Emacs*" t)) |
1762 | - (goto-char (point-min))) |
1763 | - (if concise |
1764 | - (display-buffer splash-buffer) |
1765 | - (switch-to-buffer splash-buffer)))) |
1766 | - |
1767 | -(defun normal-mouse-startup-screen () |
1768 | - ;; The user can use the mouse to activate menus |
1769 | - ;; so give help in terms of menu items. |
1770 | - (insert "\ |
1771 | -To follow a link, click Mouse-1 on it, or move to it and type RET. |
1772 | -To quit a partially entered command, type Control-g.\n") |
1773 | - |
1774 | - (insert "\nImportant Help menu items:\n") |
1775 | - (insert-button "Emacs Tutorial" |
1776 | - 'action (lambda (button) (help-with-tutorial)) |
1777 | - 'follow-link t) |
1778 | - (insert "\t\tLearn basic Emacs keystroke commands\n") |
1779 | - (insert-button "Read the Emacs Manual" |
1780 | - 'action (lambda (button) (info-emacs-manual)) |
1781 | - 'follow-link t) |
1782 | - (insert "\tView the Emacs manual using Info\n") |
1783 | - (insert-button "\(Non)Warranty" |
1784 | - 'action (lambda (button) (describe-no-warranty)) |
1785 | - 'follow-link t) |
1786 | - (insert "\t\tGNU Emacs comes with ABSOLUTELY NO WARRANTY\n") |
1787 | - (insert-button "Copying Conditions" |
1788 | - 'action (lambda (button) (describe-copying)) |
1789 | - 'follow-link t) |
1790 | - (insert "\tConditions for redistributing and changing Emacs\n") |
1791 | - (insert-button "More Manuals / Ordering Manuals" |
1792 | - 'action (lambda (button) (view-order-manuals)) |
1793 | - 'follow-link t) |
1794 | - (insert " How to order printed manuals from the FSF\n") |
1795 | - |
1796 | - (insert "\nUseful tasks:\n") |
1797 | - (insert-button "Visit New File" |
1798 | - 'action (lambda (button) (call-interactively 'find-file)) |
1799 | - 'follow-link t) |
1800 | - (insert "\t\tSpecify a new file's name, to edit the file\n") |
1801 | - (insert-button "Open Home Directory" |
1802 | - 'action (lambda (button) (dired "~")) |
1803 | - 'follow-link t) |
1804 | - (insert "\tOpen your home directory, to operate on its files\n") |
1805 | - (insert-button "Customize Startup" |
1806 | - 'action (lambda (button) (customize-group 'initialization)) |
1807 | - 'follow-link t) |
1808 | - (insert "\tChange initialization settings including this screen\n") |
1809 | - |
1810 | - (insert "\n" (emacs-version) |
1811 | - "\n" emacs-copyright)) |
1812 | - |
1813 | -;; No mouse menus, so give help using kbd commands. |
1814 | -(defun normal-no-mouse-startup-screen () |
1815 | - |
1816 | - ;; If keys have their default meanings, |
1817 | - ;; use precomputed string to save lots of time. |
1818 | - (let* ((c-h-accessible |
1819 | - ;; If normal-erase-is-backspace is used on a tty, there's |
1820 | - ;; no way to invoke C-h and you have to use F1 instead. |
1821 | - (or (not (char-table-p keyboard-translate-table)) |
1822 | - (eq (aref keyboard-translate-table ?\C-h) ?\C-h))) |
1823 | - (minor-mode-overriding-map-alist |
1824 | - (cons (cons (not c-h-accessible) |
1825 | - ;; If C-h can't be invoked, temporarily disable its |
1826 | - ;; binding, so where-is uses alternative bindings. |
1827 | - (let ((map (make-sparse-keymap))) |
1828 | - (define-key map [?\C-h] 'undefined) |
1829 | - map)) |
1830 | - minor-mode-overriding-map-alist))) |
1831 | - |
1832 | - (insert (format "\nGet help\t %s\n" |
1833 | - (let ((where (where-is-internal 'help-command nil t))) |
1834 | - (cond |
1835 | - ((equal where [?\C-h]) |
1836 | - "C-h (Hold down CTRL and press h)") |
1837 | - (where (key-description where)) |
1838 | - (t "M-x help"))))) |
1839 | - (insert-button "Emacs manual" |
1840 | - 'action (lambda (button) (info-emacs-manual)) |
1841 | - 'follow-link t) |
1842 | - (insert (substitute-command-keys"\t \\[info-emacs-manual]\t")) |
1843 | - (insert-button "Browse manuals" |
1844 | - 'action (lambda (button) (Info-directory)) |
1845 | - 'follow-link t) |
1846 | - (insert (substitute-command-keys "\t \\[info]\n")) |
1847 | - (insert-button "Emacs tutorial" |
1848 | - 'action (lambda (button) (help-with-tutorial)) |
1849 | - 'follow-link t) |
1850 | - (insert (substitute-command-keys |
1851 | - "\t \\[help-with-tutorial]\tUndo changes\t \\[undo]\n")) |
1852 | - (insert-button "Buy manuals" |
1853 | - 'action (lambda (button) (view-order-manuals)) |
1854 | - 'follow-link t) |
1855 | - (insert (substitute-command-keys |
1856 | - "\t \\[view-order-manuals]\tExit Emacs\t \\[save-buffers-kill-terminal]"))) |
1857 | - |
1858 | - ;; Say how to use the menu bar with the keyboard. |
1859 | - (insert "\n") |
1860 | - (insert-button "Activate menubar" |
1861 | - 'action (lambda (button) (tmm-menubar)) |
1862 | - 'follow-link t) |
1863 | - (if (and (eq (key-binding "\M-`") 'tmm-menubar) |
1864 | - (eq (key-binding [f10]) 'tmm-menubar)) |
1865 | - (insert " F10 or ESC ` or M-`") |
1866 | - (insert (substitute-command-keys " \\[tmm-menubar]"))) |
1867 | - |
1868 | - ;; Many users seem to have problems with these. |
1869 | - (insert " |
1870 | -\(`C-' means use the CTRL key. `M-' means use the Meta (or Alt) key. |
1871 | -If you have no Meta key, you may instead type ESC followed by the character.)") |
1872 | - |
1873 | - ;; Insert links to useful tasks |
1874 | - (insert "\nUseful tasks:\n") |
1875 | - |
1876 | - (insert-button "Visit New File" |
1877 | - 'action (lambda (button) (call-interactively 'find-file)) |
1878 | - 'follow-link t) |
1879 | - (insert "\t\t\t") |
1880 | - (insert-button "Open Home Directory" |
1881 | - 'action (lambda (button) (dired "~")) |
1882 | - 'follow-link t) |
1883 | - (insert "\n") |
1884 | - |
1885 | - (insert-button "Customize Startup" |
1886 | - 'action (lambda (button) (customize-group 'initialization)) |
1887 | - 'follow-link t) |
1888 | - (insert "\t\t") |
1889 | - (insert-button "Open *scratch* buffer" |
1890 | - 'action (lambda (button) (switch-to-buffer |
1891 | - (get-buffer-create "*scratch*"))) |
1892 | - 'follow-link t) |
1893 | - (insert "\n") |
1894 | - (insert "\n" (emacs-version) "\n" emacs-copyright "\n") |
1895 | - |
1896 | - (if (and (eq (key-binding "\C-h\C-c") 'describe-copying) |
1897 | - (eq (key-binding "\C-h\C-d") 'describe-distribution) |
1898 | - (eq (key-binding "\C-h\C-w") 'describe-no-warranty)) |
1899 | - (progn |
1900 | - (insert |
1901 | - " |
1902 | -GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for ") |
1903 | - (insert-button "full details" |
1904 | - 'action (lambda (button) (describe-no-warranty)) |
1905 | - 'follow-link t) |
1906 | - (insert ". |
1907 | -Emacs is Free Software--Free as in Freedom--so you can redistribute copies |
1908 | -of Emacs and modify it; type C-h C-c to see ") |
1909 | - (insert-button "the conditions" |
1910 | - 'action (lambda (button) (describe-copying)) |
1911 | - 'follow-link t) |
1912 | - (insert ". |
1913 | -Type C-h C-d for information on ") |
1914 | - (insert-button "getting the latest version" |
1915 | - 'action (lambda (button) (describe-distribution)) |
1916 | - 'follow-link t) |
1917 | - (insert ".")) |
1918 | - (insert (substitute-command-keys |
1919 | - " |
1920 | -GNU Emacs comes with ABSOLUTELY NO WARRANTY; type \\[describe-no-warranty] for ")) |
1921 | - (insert-button "full details" |
1922 | - 'action (lambda (button) (describe-no-warranty)) |
1923 | - 'follow-link t) |
1924 | - (insert (substitute-command-keys ". |
1925 | -Emacs is Free Software--Free as in Freedom--so you can redistribute copies |
1926 | -of Emacs and modify it; type \\[describe-copying] to see ")) |
1927 | - (insert-button "the conditions" |
1928 | - 'action (lambda (button) (describe-copying)) |
1929 | - 'follow-link t) |
1930 | - (insert (substitute-command-keys". |
1931 | -Type \\[describe-distribution] for information on ")) |
1932 | - (insert-button "getting the latest version" |
1933 | - 'action (lambda (button) (describe-distribution)) |
1934 | - 'follow-link t) |
1935 | - (insert "."))) |
1936 | - |
1937 | -(defun normal-about-screen () |
1938 | - (insert "\n" (emacs-version) "\n" emacs-copyright "\n\n") |
1939 | - |
1940 | - (insert "To follow a link, click Mouse-1 on it, or move to it and type RET.\n\n") |
1941 | - |
1942 | - (insert-button "Authors" |
1943 | - 'action |
1944 | - (lambda (button) |
1945 | - (view-file (expand-file-name "AUTHORS" data-directory)) |
1946 | - (goto-char (point-min))) |
1947 | - 'follow-link t) |
1948 | - (insert "\t\tMany people have contributed code included in GNU Emacs\n") |
1949 | - |
1950 | - (insert-button "Contributing" |
1951 | - 'action |
1952 | - (lambda (button) |
1953 | - (view-file (expand-file-name "CONTRIBUTE" data-directory)) |
1954 | - (goto-char (point-min))) |
1955 | - 'follow-link t) |
1956 | - (insert "\tHow to contribute improvements to Emacs\n\n") |
1957 | - |
1958 | - (insert-button "GNU and Freedom" |
1959 | - 'action (lambda (button) (describe-gnu-project)) |
1960 | - 'follow-link t) |
1961 | - (insert "\t\tWhy we developed GNU Emacs and the GNU system\n") |
1962 | - |
1963 | - (insert-button "Absence of Warranty" |
1964 | - 'action (lambda (button) (describe-no-warranty)) |
1965 | - 'follow-link t) |
1966 | - (insert "\tGNU Emacs comes with ABSOLUTELY NO WARRANTY\n") |
1967 | - |
1968 | - (insert-button "Copying Conditions" |
1969 | - 'action (lambda (button) (describe-copying)) |
1970 | - 'follow-link t) |
1971 | - (insert "\tConditions for redistributing and changing Emacs\n") |
1972 | - |
1973 | - (insert-button "Getting New Versions" |
1974 | - 'action (lambda (button) (describe-distribution)) |
1975 | - 'follow-link t) |
1976 | - (insert "\tHow to get the latest version of GNU Emacs\n") |
1977 | - |
1978 | - (insert-button "More Manuals / Ordering Manuals" |
1979 | - 'action (lambda (button) (view-order-manuals)) |
1980 | - 'follow-link t) |
1981 | - (insert "\tBuying printed manuals from the FSF\n")) |
1982 | - |
1983 | -(defun startup-echo-area-message () |
1984 | - (cond ((daemonp) |
1985 | - "Starting Emacs daemon.") |
1986 | - ((eq (key-binding "\C-h\C-a") 'about-emacs) |
1987 | - "For information about GNU Emacs and the GNU system, type C-h C-a.") |
1988 | - (t |
1989 | - (substitute-command-keys |
1990 | - "For information about GNU Emacs and the GNU system, type \ |
1991 | -\\[about-emacs].")))) |
1992 | - |
1993 | -(defun display-startup-echo-area-message () |
1994 | - (let ((resize-mini-windows t)) |
1995 | - (or noninteractive ;(input-pending-p) init-file-had-error |
1996 | - ;; t if the init file says to inhibit the echo area startup message. |
1997 | - (and inhibit-startup-echo-area-message |
1998 | - user-init-file |
1999 | - (or (and (get 'inhibit-startup-echo-area-message 'saved-value) |
2000 | - (equal inhibit-startup-echo-area-message |
2001 | - (if (equal init-file-user "") |
2002 | - (user-login-name) |
2003 | - init-file-user))) |
2004 | - ;; Wasn't set with custom; see if .emacs has a setq. |
2005 | - (let ((buffer (get-buffer-create " *temp*"))) |
2006 | - (prog1 |
2007 | - (condition-case nil |
2008 | - (with-current-buffer buffer |
2009 | - (insert-file-contents user-init-file) |
2010 | - (re-search-forward |
2011 | - (concat |
2012 | - "([ \t\n]*setq[ \t\n]+" |
2013 | - "inhibit-startup-echo-area-message[ \t\n]+" |
2014 | - (regexp-quote |
2015 | - (prin1-to-string |
2016 | - (if (equal init-file-user "") |
2017 | - (user-login-name) |
2018 | - init-file-user))) |
2019 | - "[ \t\n]*)") |
2020 | - nil t)) |
2021 | - (error nil)) |
2022 | - (kill-buffer buffer))))) |
2023 | - (message "%s" (startup-echo-area-message))))) |
2024 | - |
2025 | -(defun display-startup-screen (&optional concise) |
2026 | - "Display startup screen according to display. |
2027 | -A fancy display is used on graphic displays, normal otherwise. |
2028 | - |
2029 | -If CONCISE is non-nil, display a concise version of the startup |
2030 | -screen." |
2031 | - ;; Prevent recursive calls from server-process-filter. |
2032 | - (if (not (get-buffer "*GNU Emacs*")) |
2033 | - (if (use-fancy-splash-screens-p) |
2034 | - (fancy-startup-screen concise) |
2035 | - (normal-splash-screen t concise)))) |
2036 | - |
2037 | -(defun display-about-screen () |
2038 | - "Display the *About GNU Emacs* buffer. |
2039 | -A fancy display is used on graphic displays, normal otherwise." |
2040 | - (interactive) |
2041 | - (if (use-fancy-splash-screens-p) |
2042 | - (fancy-about-screen) |
2043 | - (normal-splash-screen nil))) |
2044 | - |
2045 | -(defalias 'about-emacs 'display-about-screen) |
2046 | -(defalias 'display-splash-screen 'display-startup-screen) |
2047 | - |
2048 | -(defun command-line-1 (command-line-args-left) |
2049 | - (display-startup-echo-area-message) |
2050 | - (when (and pure-space-overflow |
2051 | - (not noninteractive)) |
2052 | - (display-warning |
2053 | - 'initialization |
2054 | - "Building Emacs overflowed pure space.\ |
2055 | - (See the node Pure Storage in the Lisp manual for details.)" |
2056 | - :warning)) |
2057 | - |
2058 | - (let ((file-count 0) |
2059 | - first-file-buffer) |
2060 | - (when command-line-args-left |
2061 | - ;; We have command args; process them. |
2062 | - ;; Note that any local variables in this function affect the |
2063 | - ;; ability of -f batch-byte-compile to detect free variables. |
2064 | - ;; So we give some of them with common names a cl1- prefix. |
2065 | - (let ((cl1-dir command-line-default-directory) |
2066 | - cl1-tem |
2067 | - ;; This approach loses for "-batch -L DIR --eval "(require foo)", |
2068 | - ;; if foo is intended to be found in DIR. |
2069 | - ;; |
2070 | - ;; ;; The directories listed in --directory/-L options will *appear* |
2071 | - ;; ;; at the front of `load-path' in the order they appear on the |
2072 | - ;; ;; command-line. We cannot do this by *placing* them at the front |
2073 | - ;; ;; in the order they appear, so we need this variable to hold them, |
2074 | - ;; ;; temporarily. |
2075 | - ;; extra-load-path |
2076 | - ;; |
2077 | - ;; To DTRT we keep track of the splice point and modify `load-path' |
2078 | - ;; straight away upon any --directory/-L option. |
2079 | - splice |
2080 | - just-files ;; t if this follows the magic -- option. |
2081 | - ;; This includes our standard options' long versions |
2082 | - ;; and long versions of what's on command-switch-alist. |
2083 | - (longopts |
2084 | - (append '("--funcall" "--load" "--insert" "--kill" |
2085 | - "--directory" "--eval" "--execute" "--no-splash" |
2086 | - "--find-file" "--visit" "--file" "--no-desktop") |
2087 | - (mapcar (lambda (elt) (concat "-" (car elt))) |
2088 | - command-switch-alist))) |
2089 | - (cl1-line 0) |
2090 | - (cl1-column 0)) |
2091 | - |
2092 | - ;; Add the long X options to longopts. |
2093 | - (dolist (tem command-line-x-option-alist) |
2094 | - (if (string-match "^--" (car tem)) |
2095 | - (push (car tem) longopts))) |
2096 | - |
2097 | - ;; Add the long NS options to longopts. |
2098 | - (dolist (tem command-line-ns-option-alist) |
2099 | - (if (string-match "^--" (car tem)) |
2100 | - (push (list (car tem)) longopts))) |
2101 | - |
2102 | - ;; Loop, processing options. |
2103 | - (while command-line-args-left |
2104 | - (let* ((argi (car command-line-args-left)) |
2105 | - (orig-argi argi) |
2106 | - argval completion) |
2107 | - (setq command-line-args-left (cdr command-line-args-left)) |
2108 | - |
2109 | - ;; Do preliminary decoding of the option. |
2110 | - (if just-files |
2111 | - ;; After --, don't look for options; treat all args as files. |
2112 | - (setq argi "") |
2113 | - ;; Convert long options to ordinary options |
2114 | - ;; and separate out an attached option argument into argval. |
2115 | - (when (string-match "\\`\\(--[^=]*\\)=" argi) |
2116 | - (setq argval (substring argi (match-end 0)) |
2117 | - argi (match-string 1 argi))) |
2118 | - (when (string-match "\\`--?[^-]" orig-argi) |
2119 | - (setq completion (try-completion argi longopts)) |
2120 | - (if (eq completion t) |
2121 | - (setq argi (substring argi 1)) |
2122 | - (if (stringp completion) |
2123 | - (let ((elt (member completion longopts))) |
2124 | - (or elt |
2125 | - (error "Option `%s' is ambiguous" argi)) |
2126 | - (setq argi (substring (car elt) 1))) |
2127 | - (setq argval nil |
2128 | - argi orig-argi))))) |
2129 | - |
2130 | - ;; Execute the option. |
2131 | - (cond ((setq cl1-tem (assoc argi command-switch-alist)) |
2132 | - (if argval |
2133 | - (let ((command-line-args-left |
2134 | - (cons argval command-line-args-left))) |
2135 | - (funcall (cdr cl1-tem) argi)) |
2136 | - (funcall (cdr cl1-tem) argi))) |
2137 | - |
2138 | - ((equal argi "-no-splash") |
2139 | - (setq inhibit-startup-screen t)) |
2140 | - |
2141 | - ((member argi '("-f" ; what the manual claims |
2142 | - "-funcall" |
2143 | - "-e")) ; what the source used to say |
2144 | - (setq inhibit-startup-screen t) |
2145 | - (setq cl1-tem (intern (or argval (pop command-line-args-left)))) |
2146 | - (if (commandp cl1-tem) |
2147 | - (command-execute cl1-tem) |
2148 | - (funcall cl1-tem))) |
2149 | - |
2150 | - ((member argi '("-eval" "-execute")) |
2151 | - (setq inhibit-startup-screen t) |
2152 | - (eval (read (or argval (pop command-line-args-left))))) |
2153 | - |
2154 | - ((member argi '("-L" "-directory")) |
2155 | - (setq cl1-tem (expand-file-name |
2156 | - (command-line-normalize-file-name |
2157 | - (or argval (pop command-line-args-left))))) |
2158 | - (cond (splice (setcdr splice (cons cl1-tem (cdr splice))) |
2159 | - (setq splice (cdr splice))) |
2160 | - (t (setq load-path (cons cl1-tem load-path) |
2161 | - splice load-path)))) |
2162 | - |
2163 | - ((member argi '("-l" "-load")) |
2164 | - (let* ((file (command-line-normalize-file-name |
2165 | - (or argval (pop command-line-args-left)))) |
2166 | - ;; Take file from default dir if it exists there; |
2167 | - ;; otherwise let `load' search for it. |
2168 | - (file-ex (expand-file-name file))) |
2169 | - (when (file-exists-p file-ex) |
2170 | - (setq file file-ex)) |
2171 | - (load file nil t))) |
2172 | - |
2173 | - ;; This is used to handle -script. It's not clear |
2174 | - ;; we need to document it (it is totally internal). |
2175 | - ((member argi '("-scriptload")) |
2176 | - (let* ((file (command-line-normalize-file-name |
2177 | - (or argval (pop command-line-args-left)))) |
2178 | - ;; Take file from default dir. |
2179 | - (file-ex (expand-file-name file))) |
2180 | - (load file-ex nil t t))) |
2181 | - |
2182 | - ((equal argi "-insert") |
2183 | - (setq inhibit-startup-screen t) |
2184 | - (setq cl1-tem (or argval (pop command-line-args-left))) |
2185 | - (or (stringp cl1-tem) |
2186 | - (error "File name omitted from `-insert' option")) |
2187 | - (insert-file-contents (command-line-normalize-file-name cl1-tem))) |
2188 | - |
2189 | - ((equal argi "-kill") |
2190 | - (kill-emacs t)) |
2191 | - |
2192 | - ;; This is for when they use --no-desktop with -q, or |
2193 | - ;; don't load Desktop in their .emacs. If desktop.el |
2194 | - ;; _is_ loaded, it will handle this switch, and we |
2195 | - ;; won't see it by the time we get here. |
2196 | - ((equal argi "-no-desktop") |
2197 | - (message "\"--no-desktop\" ignored because the Desktop package is not loaded")) |
2198 | - |
2199 | - ((string-match "^\\+[0-9]+\\'" argi) |
2200 | - (setq cl1-line (string-to-number argi))) |
2201 | - |
2202 | - ((string-match "^\\+\\([0-9]+\\):\\([0-9]+\\)\\'" argi) |
2203 | - (setq cl1-line (string-to-number (match-string 1 argi)) |
2204 | - cl1-column (string-to-number (match-string 2 argi)))) |
2205 | - |
2206 | - ((setq cl1-tem (assoc orig-argi command-line-x-option-alist)) |
2207 | - ;; Ignore X-windows options and their args if not using X. |
2208 | - (setq command-line-args-left |
2209 | - (nthcdr (nth 1 cl1-tem) command-line-args-left))) |
2210 | - |
2211 | - ((setq cl1-tem (assoc orig-argi command-line-ns-option-alist)) |
2212 | - ;; Ignore NS-windows options and their args if not using NS. |
2213 | - (setq command-line-args-left |
2214 | - (nthcdr (nth 1 cl1-tem) command-line-args-left))) |
2215 | - |
2216 | - ((member argi '("-find-file" "-file" "-visit")) |
2217 | - (setq inhibit-startup-screen t) |
2218 | - ;; An explicit option to specify visiting a file. |
2219 | - (setq cl1-tem (or argval (pop command-line-args-left))) |
2220 | - (unless (stringp cl1-tem) |
2221 | - (error "File name omitted from `%s' option" argi)) |
2222 | - (setq file-count (1+ file-count)) |
2223 | - (let ((file (expand-file-name |
2224 | - (command-line-normalize-file-name cl1-tem) |
2225 | - cl1-dir))) |
2226 | - (if (= file-count 1) |
2227 | - (setq first-file-buffer (find-file file)) |
2228 | - (find-file-other-window file))) |
2229 | - (unless (zerop cl1-line) |
2230 | - (goto-char (point-min)) |
2231 | - (forward-line (1- cl1-line))) |
2232 | - (setq cl1-line 0) |
2233 | - (unless (< cl1-column 1) |
2234 | - (move-to-column (1- cl1-column))) |
2235 | - (setq cl1-column 0)) |
2236 | - |
2237 | - ((equal argi "--") |
2238 | - (setq just-files t)) |
2239 | - (t |
2240 | - ;; We have almost exhausted our options. See if the |
2241 | - ;; user has made any other command-line options available |
2242 | - (let ((hooks command-line-functions) |
2243 | - (did-hook nil)) |
2244 | - (while (and hooks |
2245 | - (not (setq did-hook (funcall (car hooks))))) |
2246 | - (setq hooks (cdr hooks))) |
2247 | - (if (not did-hook) |
2248 | - ;; Presume that the argument is a file name. |
2249 | - (progn |
2250 | - (if (string-match "\\`-" argi) |
2251 | - (error "Unknown option `%s'" argi)) |
2252 | - (unless initial-window-system |
2253 | - (setq inhibit-startup-screen t)) |
2254 | - (setq file-count (1+ file-count)) |
2255 | - (let ((file |
2256 | - (expand-file-name |
2257 | - (command-line-normalize-file-name orig-argi) |
2258 | - cl1-dir))) |
2259 | - (cond ((= file-count 1) |
2260 | - (setq first-file-buffer (find-file file))) |
2261 | - (inhibit-startup-screen |
2262 | - (find-file-other-window file)) |
2263 | - (t (find-file file)))) |
2264 | - (unless (zerop cl1-line) |
2265 | - (goto-char (point-min)) |
2266 | - (forward-line (1- cl1-line))) |
2267 | - (setq cl1-line 0) |
2268 | - (unless (< cl1-column 1) |
2269 | - (move-to-column (1- cl1-column))) |
2270 | - (setq cl1-column 0)))))) |
2271 | - ;; In unusual circumstances, the execution of Lisp code due |
2272 | - ;; to command-line options can cause the last visible frame |
2273 | - ;; to be deleted. In this case, kill emacs to avoid an |
2274 | - ;; abort later. |
2275 | - (unless (frame-live-p (selected-frame)) (kill-emacs nil)))))) |
2276 | - |
2277 | - (when initial-buffer-choice |
2278 | - (cond ((eq initial-buffer-choice t) |
2279 | - (switch-to-buffer (get-buffer-create "*scratch*"))) |
2280 | - ((stringp initial-buffer-choice) |
2281 | - (find-file initial-buffer-choice)))) |
2282 | - |
2283 | - ;; If *scratch* exists and is empty, insert initial-scratch-message. |
2284 | - (and initial-scratch-message |
2285 | - (get-buffer "*scratch*") |
2286 | - (with-current-buffer "*scratch*" |
2287 | - (when (zerop (buffer-size)) |
2288 | - (insert initial-scratch-message) |
2289 | - (set-buffer-modified-p nil)))) |
2290 | - |
2291 | - (if (or inhibit-startup-screen |
2292 | - initial-buffer-choice |
2293 | - noninteractive |
2294 | - inhibit-x-resources) |
2295 | - |
2296 | - ;; Not displaying a startup screen. If 3 or more files |
2297 | - ;; visited, and not all visible, show user what they all are. |
2298 | - (and (> file-count 2) |
2299 | - (not noninteractive) |
2300 | - (not inhibit-startup-buffer-menu) |
2301 | - (or (get-buffer-window first-file-buffer) |
2302 | - (list-buffers))) |
2303 | - |
2304 | - ;; Display a startup screen, after some preparations. |
2305 | - |
2306 | - ;; If there are no switches to process, we might as well |
2307 | - ;; run this hook now, and there may be some need to do it |
2308 | - ;; before doing any output. |
2309 | - (run-hooks 'emacs-startup-hook) |
2310 | - (and term-setup-hook |
2311 | - (run-hooks 'term-setup-hook)) |
2312 | - (setq inhibit-startup-hooks t) |
2313 | - |
2314 | - ;; It's important to notice the user settings before we |
2315 | - ;; display the startup message; otherwise, the settings |
2316 | - ;; won't take effect until the user gives the first |
2317 | - ;; keystroke, and that's distracting. |
2318 | - (when (fboundp 'frame-notice-user-settings) |
2319 | - (frame-notice-user-settings)) |
2320 | - |
2321 | - ;; If there are no switches to process, we might as well |
2322 | - ;; run this hook now, and there may be some need to do it |
2323 | - ;; before doing any output. |
2324 | - (when window-setup-hook |
2325 | - (run-hooks 'window-setup-hook) |
2326 | - ;; Don't let the hook be run twice. |
2327 | - (setq window-setup-hook nil)) |
2328 | - |
2329 | - ;; ;; Do this now to avoid an annoying delay if the user |
2330 | - ;; ;; clicks the menu bar during the sit-for. |
2331 | - ;; (when (display-popup-menus-p) |
2332 | - ;; (precompute-menubar-bindings)) |
2333 | - ;; (with-no-warnings |
2334 | - ;; (setq menubar-bindings-done t)) |
2335 | - |
2336 | - (if (> file-count 0) |
2337 | - (display-startup-screen t) |
2338 | - (display-startup-screen nil))))) |
2339 | - |
2340 | -(defun command-line-normalize-file-name (file) |
2341 | - "Collapse multiple slashes to one, to handle non-Emacs file names." |
2342 | - (save-match-data |
2343 | - ;; Use arg 1 so that we don't collapse // at the start of the file name. |
2344 | - ;; That is significant on some systems. |
2345 | - ;; However, /// at the beginning is supposed to mean just /, not //. |
2346 | - (if (string-match "^///+" file) |
2347 | - (setq file (replace-match "/" t t file))) |
2348 | - (and (memq system-type '(ms-dos windows-nt)) |
2349 | - (string-match "^[A-Za-z]:\\(\\\\[\\\\/]\\)" file) ; C:\/ or C:\\ |
2350 | - (setq file (replace-match "/" t t file 1))) |
2351 | - (while (string-match "//+" file 1) |
2352 | - (setq file (replace-match "/" t t file))) |
2353 | - file)) |
2354 | - |
2355 | -;; arch-tag: 7e294698-244d-4758-984b-4047f887a5db |
2356 | -;;; startup.el ends here |
2357 | |
2358 | === removed directory '.pc/0004-Adjust-documentation-references-for-Debian.patch' |
2359 | === removed directory '.pc/0004-Adjust-documentation-references-for-Debian.patch/etc' |
2360 | === removed file '.pc/0004-Adjust-documentation-references-for-Debian.patch/etc/NEWS' |
2361 | --- .pc/0004-Adjust-documentation-references-for-Debian.patch/etc/NEWS 2011-04-10 10:33:31 +0000 |
2362 | +++ .pc/0004-Adjust-documentation-references-for-Debian.patch/etc/NEWS 1970-01-01 00:00:00 +0000 |
2363 | @@ -1,2515 +0,0 @@ |
2364 | -GNU Emacs NEWS -- history of user-visible changes. |
2365 | - |
2366 | -Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
2367 | -See the end of the file for license conditions. |
2368 | - |
2369 | -Please send Emacs bug reports to bug-gnu-emacs@gnu.org. |
2370 | -If possible, use M-x report-emacs-bug. |
2371 | - |
2372 | -This file is about changes in Emacs version 23. |
2373 | - |
2374 | -See files NEWS.22, NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 |
2375 | -for changes in older Emacs versions. |
2376 | - |
2377 | -You can narrow news to a specific version by calling `view-emacs-news' |
2378 | -with a prefix argument or by typing C-u C-h C-n. |
2379 | - |
2380 | - |
2381 | |
2382 | -* Installation Changes in Emacs 23.3 |
2383 | - |
2384 | -** New configure option --with-crt-dir specifies the location of your |
2385 | -crt*.o files, if they are in a non-standard location. This is only |
2386 | -used on x86-64 and s390x GNU/Linux architectures. |
2387 | - |
2388 | -* Changes in Emacs 23.3 |
2389 | - |
2390 | -** The last-resort backup file `%backup%~' is now written to |
2391 | -`user-emacs-directory', instead of the user's home directory. |
2392 | - |
2393 | -** If Emacs creates `user-emacs-directory', that directory's |
2394 | -permissions are now set to rwx------, ignoring the umask. |
2395 | - |
2396 | - |
2397 | |
2398 | -* Changes in Specialized Modes and Packages in Emacs 23.3 |
2399 | - |
2400 | -** Calendar and diary |
2401 | - |
2402 | -*** The appt-add command takes an optional argument, the warning time. |
2403 | -This can be used in place of the default appt-message-warning-time. |
2404 | - |
2405 | -** Python mode |
2406 | - |
2407 | -*** You can allow inferior Python processes to load modules from the |
2408 | -current directory by setting `python-remove-cwd-from-path' to nil. |
2409 | - |
2410 | -** Rmail |
2411 | - |
2412 | -*** The default value of `rmail-enable-mime' is now t. Rmail decodes |
2413 | -MIME contents automatically. You can customize the variable |
2414 | -`rmail-enable-mime' back to `nil' to disable this automatic MIME |
2415 | -decoding. |
2416 | - |
2417 | -*** The command `rmail-mime' change the displaying of a MIME message |
2418 | -between decoded presentation form and raw data if `rmail-enable-mime' |
2419 | -is non-nil. And, with prefix argument, it change only the displaying |
2420 | -of the MIME entity at point. |
2421 | - |
2422 | -*** The new command `rmail-mime-next-item' (bound to TAB) moves point |
2423 | -to the next item of MIME message. |
2424 | - |
2425 | -*** The new command `rmail-mime-previous-item' (bound to backtab) moves |
2426 | -point to the previous item of MIME message. |
2427 | - |
2428 | -*** The new command `rmail-mime-toggle-hidden' (RET) hide or show the |
2429 | -body of the MIME entity at point. |
2430 | - |
2431 | -** VC and related modes |
2432 | - |
2433 | -*** New VC command `vc-log-incoming', bound to `C-x v I'. |
2434 | -This shows a log of changes to be received with a pull operation. |
2435 | -For Git, this runs "git fetch" to make the necessary data available |
2436 | -locally; this requires version 1.7 or newer. |
2437 | - |
2438 | -*** New VC command `vc-log-outgoing', bound to `C-x v O'. |
2439 | -This shows a log of changes to be sent in the next commit. |
2440 | - |
2441 | -*** New VC command vc-find-conflicted-file. |
2442 | - |
2443 | -*** The 'g' key in VC diff, log, log-incoming and log-outgoing buffers |
2444 | -reruns the corresponding VC command to compute an up to date version |
2445 | -of the buffer. |
2446 | - |
2447 | -*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots. |
2448 | - |
2449 | -*** Special markup can be added to log-edit buffers. |
2450 | -You can add headers specifying additional information to be supplied |
2451 | -to the version control system. For example: |
2452 | - |
2453 | - Author: J. R. Hacker <jrh@example.com> |
2454 | - Fixes: 4204 |
2455 | - Actual text of log entry... |
2456 | - |
2457 | -Bazaar recognizes the headers "Author", "Date" and "Fixes". |
2458 | -Git, Mercurial, and Monotone recognize "Author" and "Date". |
2459 | -Any unknown header is left as is in the message, so it is not lost. |
2460 | - |
2461 | -** Obsolete packages |
2462 | - |
2463 | -*** lmenu.el and cl-compat.el are now obsolete. |
2464 | - |
2465 | - |
2466 | |
2467 | -* New Modes and Packages in Emacs 23.3 |
2468 | - |
2469 | -** smie.el is a generic navigation and indentation engine. |
2470 | -It takes a simple BNF description of the grammar, and provides both |
2471 | -sexp-style navigation (jumping over begin..end pairs) as well as |
2472 | -indentation, which can be adjusted via ad-hoc indentation rules. |
2473 | - |
2474 | - |
2475 | |
2476 | -* Incompatible Lisp Changes in Emacs 23.3 |
2477 | - |
2478 | -** posn-col-row now excludes the header line from the row count |
2479 | -If the frame has a header line, posn-col-row will count row numbers |
2480 | -starting from the first line of text below the header line. |
2481 | - |
2482 | - |
2483 | |
2484 | -* Lisp changes in Emacs 23.3 |
2485 | - |
2486 | -** `e' and `pi' are now called `float-e' and `float-pi'. |
2487 | - The old names are obsolete. |
2488 | - |
2489 | -** The use of unintern without an obarray arg is now obsolete. |
2490 | - |
2491 | -** The function `princ-list' is now obsolete. |
2492 | - |
2493 | -** The yank-handler argument to kill-region and friends is now obsolete. |
2494 | - |
2495 | -** New function byte-to-string, like char-to-string but for bytes. |
2496 | - |
2497 | - |
2498 | |
2499 | -* Changes in Emacs 23.3 on non-free operating systems |
2500 | - |
2501 | -** The nextstep port can have different modifiers for the left and right |
2502 | -alt/option key by customizing the value for ns-right-alternate-modifier. |
2503 | - |
2504 | - |
2505 | |
2506 | -* Installation Changes in Emacs 23.2 |
2507 | - |
2508 | -** New configure options for Emacs developers. |
2509 | -These are not new features; only the configure flags are new. |
2510 | - |
2511 | -*** --enable-profiling builds Emacs with profiling enabled. |
2512 | -This might not work on all platforms. |
2513 | - |
2514 | -*** --enable-checking[=OPTIONS] builds emacs with extra runtime checks. |
2515 | - |
2516 | -** `make install' now consistently ignores umask, creating a |
2517 | -world-readable install. |
2518 | - |
2519 | -** Emacs compiles with Gconf support, if it is detected. |
2520 | -Use the configure option --without-gconf to disable this. |
2521 | -This is used by the `font-use-system-font' feature (see below). |
2522 | - |
2523 | -* Startup Changes in Emacs 23.2 |
2524 | - |
2525 | -** The command-line option -Q (--quick) also inhibits loading X resources. |
2526 | -However, if Emacs is compiled with the Lucid or Motif toolkit, X |
2527 | -resource settings for the graphical widgets are still applied. |
2528 | -On Windows, the -Q option causes Emacs to ignore Registry settings, |
2529 | -but environment variables set on the Registry are still honored. |
2530 | - |
2531 | -*** The new variable `inhibit-x-resources' shows whether X resources |
2532 | -were loaded. |
2533 | - |
2534 | -** New command-line option -mm (--maximized) maximizes the initial frame. |
2535 | - |
2536 | -* Changes in Emacs 23.2 |
2537 | - |
2538 | -** The maximum size of buffers (and the largest fixnum) is doubled. |
2539 | -On typical 32bit systems, buffers can now be up to 512MB. |
2540 | - |
2541 | -** The default value of `trash-directory' is now nil. |
2542 | -This means that `move-file-to-trash' trashes files according to |
2543 | -freedesktop.org specifications, the same method used by the Gnome, |
2544 | -KDE, and XFCE desktops. (This change has no effect on Windows, which |
2545 | -uses `system-move-file-to-trash' for trashing.) |
2546 | - |
2547 | -** The pointer now becomes invisible when typing. |
2548 | -Customize `make-pointer-invisible' to disable this feature. |
2549 | - |
2550 | -** Font changes |
2551 | - |
2552 | -*** Emacs can use the system default monospaced font in Gnome. |
2553 | -To enable this feature, set `font-use-system-font' to non-nil (it is |
2554 | -nil by default). If the system default changes, Emacs changes also. |
2555 | -This feature requires Gconf support, which is automatically included |
2556 | -at compile-time if configure detects the gconf libraries (you can |
2557 | -disable this with the configure option --without-gconf). |
2558 | - |
2559 | -*** On X11, Emacs reacts to Xft changes made by configuration tools, |
2560 | -via the XSETTINGS mechanism. This includes antialias, hinting, |
2561 | -hintstyle, RGBA, DPI and lcdfilter changes. |
2562 | - |
2563 | -** Killing a buffer with a running process now asks for confirmation. |
2564 | -To remove this query, remove `process-kill-buffer-query-function' from |
2565 | -`kill-buffer-query-functions', or set the appropriate process flag |
2566 | -with `set-process-query-on-exit-flag'. |
2567 | - |
2568 | -** File-local variable changes |
2569 | - |
2570 | -*** Specifying a minor mode as a local variables enables that mode, |
2571 | -unconditionally. The previous behavior, toggling the mode, was |
2572 | -neither reliable nor generally desirable. |
2573 | - |
2574 | -*** There are new commands for adding and removing file-local variables: |
2575 | -`add-file-local-variable', `delete-file-local-variable', |
2576 | -`add-file-local-variable-prop-line', and |
2577 | -`delete-file-local-variable-prop-line'. |
2578 | - |
2579 | -*** There are new commands for adding and removing directory-local variables, |
2580 | -and copying them to and from file-local variable lists: |
2581 | -`add-dir-local-variable', `delete-dir-local-variable', |
2582 | -`copy-dir-locals-to-file-locals', |
2583 | -`copy-dir-locals-to-file-locals-prop-line' and |
2584 | -`copy-file-locals-to-dir-locals'. |
2585 | - |
2586 | -** Internationalization changes |
2587 | - |
2588 | -*** Unibyte sessions are now considered obsolete. |
2589 | -This refers to the EMACS_UNIBYTE environment variable as well as the |
2590 | ---unibyte, --multibyte, --no-multibyte, and --no-unibyte command line |
2591 | -arguments. Customizing enable-multibyte-characters and setting |
2592 | -default-enable-multibyte-characters are also deprecated. |
2593 | - |
2594 | -*** New coding system `utf-8-hfs'. |
2595 | -This is suitable for default-file-name-coding-system on Mac OS X; see |
2596 | -international/ucs-normalize.el. |
2597 | - |
2598 | -** Function arguments in *Help* buffers are now shown in upper-case. |
2599 | -Customize `help-downcase-arguments' to t to show them in lower-case. |
2600 | - |
2601 | -** New command `async-shell-command', bound globally to `M-&'. |
2602 | -This executes the command asynchronously, similar to calling `M-!' and |
2603 | -manually adding an ampersand to the end of the command. With `M-&', |
2604 | -you don't need the ampersand. The output appears in the buffer |
2605 | -`*Async Shell Command*'. |
2606 | - |
2607 | -** When running in a new enough xterm (newer than version 242), Emacs |
2608 | -asks xterm what the background color is and it sets up faces |
2609 | -accordingly for a dark background if needed (the current default is to |
2610 | -consider the background light). |
2611 | - |
2612 | - |
2613 | |
2614 | -* Editing Changes in Emacs 23.2 |
2615 | - |
2616 | -** Kill-ring and selection changes |
2617 | - |
2618 | -*** If `select-active-regions' is t, any active region automatically |
2619 | -becomes the primary selection (for interaction with other window |
2620 | -applications). If you enable this, you might want to bind |
2621 | -`mouse-yank-primary' to Mouse-2. |
2622 | - |
2623 | -*** When `save-interprogram-paste-before-kill' is non-nil, the kill |
2624 | -commands save the interprogram-paste selection into the kill ring |
2625 | -before doing anything else. This avoids losing the selection. |
2626 | - |
2627 | -*** When `kill-do-not-save-duplicates' is non-nil, identical |
2628 | -subsequent kills are not duplicated in the `kill-ring'. |
2629 | - |
2630 | -** Completion changes |
2631 | - |
2632 | -*** The new command `completion-at-point' provides mode-sensitive completion. |
2633 | - |
2634 | -*** tab-always-indent set to `complete' lets TAB do completion as well. |
2635 | - |
2636 | -*** The new completion-style `initials' is available. |
2637 | -For instance, this can complete M-x lch to list-command-history. |
2638 | - |
2639 | -*** The new variable `completions-format' determines how completions |
2640 | -are displayed in the *Completions* buffer. If you set it to |
2641 | -`vertical', completions are sorted vertically in columns. |
2642 | - |
2643 | -** The default value of `blink-matching-paren-distance' is increased. |
2644 | - |
2645 | -** M-n provides more default values in the minibuffer for commands |
2646 | -that read file names. These include the file name at point (when ffap |
2647 | -is loaded without ffap-bindings), the file name on the current line |
2648 | -(in Dired buffers), and the directory names of adjacent Dired windows |
2649 | -(for Dired commands that operate on several directories, such as copy, |
2650 | -rename, or diff). |
2651 | - |
2652 | -** M-r is bound to the new `move-to-window-line-top-bottom'. |
2653 | -This moves point to the window center, top and bottom on successive |
2654 | -invocations, in the same spirit as the C-l (recenter-top-bottom) |
2655 | -command. |
2656 | - |
2657 | -** The new variable `recenter-positions' determines the default |
2658 | -cycling order of C-l (`recenter-top-bottom'). |
2659 | - |
2660 | -** The abbrevs file is now a file named abbrev_defs in |
2661 | -user-emacs-directory; but the old location, ~/.abbrev_defs, is used if |
2662 | -that file exists. |
2663 | - |
2664 | - |
2665 | |
2666 | -* Changes in Specialized Modes and Packages in Emacs 23.2 |
2667 | - |
2668 | -** The bookmark menu has a narrowing search via bookmark-bmenu-search. |
2669 | - |
2670 | -** Calc |
2671 | - |
2672 | -*** The Calc settings file is now a file named calc.el in |
2673 | -user-emacs-directory; but the old location, ~/.calc.el, is used if |
2674 | -that file exists. |
2675 | - |
2676 | -*** Graphing commands (`g f' etc.) now work on MS-Windows, if you have |
2677 | -the native Windows port of Gnuplot version 3.8 or later installed. |
2678 | - |
2679 | -** Calendar and diary |
2680 | - |
2681 | -*** Fancy diary display is now the default. |
2682 | -If you prefer the simple display, customize `diary-display-function'. |
2683 | - |
2684 | -*** The diary's fancy display now enables view-mode. |
2685 | - |
2686 | -*** The command `calendar-current-date' accepts an optional argument |
2687 | -giving an offset from today. |
2688 | - |
2689 | -** Desktop |
2690 | - |
2691 | -*** The default value for `desktop-buffers-not-to-save' is nil. |
2692 | -This means Desktop will try restoring all buffers, when you restart |
2693 | -your Emacs session. Also, `desktop-buffers-not-to-save' is only |
2694 | -effective for buffers that have no associated file. If you want to |
2695 | -exempt buffers that do correspond to files, customize the value of |
2696 | -`desktop-files-not-to-save' instead. |
2697 | - |
2698 | -** Dired |
2699 | - |
2700 | -*** The new variable `dired-auto-revert-buffer', if non-nil, causes |
2701 | -Dired buffers to be reverted automatically on revisiting them. |
2702 | - |
2703 | -** DocView |
2704 | - |
2705 | -*** When `doc-view-continuous' is non-nil, scrolling a line |
2706 | -on the page edge advances to the next/previous page. |
2707 | - |
2708 | -** Elint |
2709 | - |
2710 | -*** Elint now uses compilation-mode. |
2711 | - |
2712 | -*** Elint can now scan individual files and whole directories, |
2713 | -and can be run in batch mode. |
2714 | - |
2715 | -*** Elint does a more thorough initialization, and recognizes more built-in |
2716 | -functions and variables. Customize `elint-scan-preloaded' if you want |
2717 | -to sacrifice some accuracy for a faster startup. |
2718 | - |
2719 | -*** Elint attempts some basic understanding of featurep and (f)boundp tests. |
2720 | - |
2721 | -*** Customize `elint-ignored-warnings' to suppress some warnings. |
2722 | - |
2723 | -** GDB-UI |
2724 | - |
2725 | -*** Toolbar functionality for reverse debugging. Display of STL |
2726 | -collections as watch expressions. These features require GDB 7.0 or later. |
2727 | - |
2728 | -** Grep |
2729 | - |
2730 | -*** A new command `zrgrep' searches recursively in gzipped files. |
2731 | - |
2732 | -** Info |
2733 | - |
2734 | -*** The new command `Info-virtual-index' bound to "I" displays a menu of |
2735 | -matched topics found in the index. |
2736 | - |
2737 | -*** The new command `info-finder' replaces finder.el with a virtual Info |
2738 | -manual that generates an Info file which gives the same information |
2739 | -through a menu structure. |
2740 | - |
2741 | -** LaTeX mode now provides completion (via completion-at-point). |
2742 | - |
2743 | -** Message mode is now the default mode for composing mail. |
2744 | - |
2745 | -The default for `mail-user-agent' is now message-user-agent, so the |
2746 | -C-x m (`compose-mail') command uses Message mode instead of Mail mode. |
2747 | - |
2748 | -Message mode has been included in Emacs, as part of the Gnus package, |
2749 | -for several years. It provides several features that are absent in |
2750 | -Mail mode, such as MIME handling. |
2751 | - |
2752 | -*** If the user has not customized mail-user-agent, `compose-mail' |
2753 | -checks for Mail mode customizations, and issues a warning if these |
2754 | -customizations are found. This alerts users who may otherwise be |
2755 | -unaware that their mail configuration has changed. |
2756 | - |
2757 | -To disable this check, set compose-mail-user-agent-warnings to nil. |
2758 | - |
2759 | -** The default value of mail-interactive is t, since Emacs 23.1. |
2760 | -(This was not announced at the time.) It means that when sending mail, |
2761 | -Emacs will wait for the process sending mail to return. If you |
2762 | -experience delays when sending mail, you may wish to set this to nil. |
2763 | - |
2764 | -** nXML mode is now the default for editing XML files. |
2765 | - |
2766 | -** pcomplete provides a new command `pcomplete-std-completion' which |
2767 | -is similar to `pcomplete' but using the standard completion UI code. |
2768 | - |
2769 | -** Shell (and other comint modes) |
2770 | - |
2771 | -*** M-s is no longer bound to `comint-next-matching-input'. |
2772 | - |
2773 | -*** M-r is now bound to `comint-history-isearch-backward-regexp'. |
2774 | -This starts an incremental search of the comint/shell input history. |
2775 | - |
2776 | -*** ansi-color is now enabled by default in Shell mode. |
2777 | -To disable it, set ansi-color-for-comint-mode to nil. |
2778 | - |
2779 | -** Tramp |
2780 | - |
2781 | -*** New connection methods "rsyncc", "imap" and "imaps". |
2782 | -On systems which support GVFS-Fuse, Tramp offers also the new |
2783 | -connection methods "dav", "davs", "obex" and "synce". |
2784 | - |
2785 | -** VC and related modes |
2786 | - |
2787 | -*** When using C-x v v or C-x v i on a unregistered file that is in a |
2788 | -directory not controlled by any VCS, ask the user what VC backend to |
2789 | -use to create a repository, create a new repository and register the |
2790 | -file. |
2791 | - |
2792 | -*** New command `vc-root-print-log', bound to `C-x v L'. |
2793 | -This displays a `*vc-change-log*' buffer showing the history of the |
2794 | -version-controlled directory tree as a whole. |
2795 | - |
2796 | -*** New command `vc-root-diff', bound to `C-x v D'. |
2797 | -This is similar to `vc-diff', but compares the entire directory tree |
2798 | -of the current VC directory with its working revision. |
2799 | - |
2800 | -*** `C-x v l' and `C-x v L' do not show the full log by default. |
2801 | -The number of entries shown can be chosen interactively with a prefix |
2802 | -argument, or by customizing vc-log-show-limit. The `*vc-change-log*' |
2803 | -buffer now contains buttons at the end of the buffer, which can be |
2804 | -used to increase the number of entries shown. RCS, SCCS, and CVS do |
2805 | -not support this feature. |
2806 | - |
2807 | -*** vc-annotate supports annotations through file copies and renames, |
2808 | -it displays the old names for the files and it can show logs/diffs for |
2809 | -the corresponding lines. Currently only Git and Mercurial take |
2810 | -advantage of this feature. |
2811 | - |
2812 | -*** The log command in vc-annotate can display a single log entry |
2813 | -instead of redisplaying the full log. The RCS, CVS and SCCS VC |
2814 | -backends do not support this. |
2815 | - |
2816 | -*** When a file is not found, VC will not try to check it out of RCS anymore. |
2817 | - |
2818 | -*** Diff and log operations can be used from Dired buffers. |
2819 | - |
2820 | -*** vc-git changes |
2821 | - |
2822 | -**** The short log format for git makes use of the graph display, |
2823 | -so it's not supported on git versions earlier than 1.5.6. |
2824 | - |
2825 | -**** vc-dir uses the --relative option of git, and so requires at least |
2826 | -git version 1.5.5. |
2827 | - |
2828 | -**** Support for operating with stashes has been added to vc-dir: |
2829 | -the stash list is displayed in the *vc-dir* header, stashes can be |
2830 | -created, removed, applied and their content displayed. |
2831 | - |
2832 | -*** vc-bzr supports operating with shelves: the shelve list is |
2833 | -displayed in the *vc-dir* header, shelves can be created, removed and applied. |
2834 | - |
2835 | -*** log-edit-strip-single-file-name controls whether or not single filenames |
2836 | -are stripped when copying text from the ChangeLog to the *VC-Log* buffer. |
2837 | - |
2838 | -** Miscellaneous |
2839 | - |
2840 | -*** Interactively `multi-isearch-buffers' and `multi-isearch-buffers-regexp' |
2841 | -read buffer names to search, one by one, ended with RET. With a prefix |
2842 | -argument, they ask for a regexp, and search in buffers whose names match |
2843 | -the specified regexp. Interactively `multi-isearch-files' and |
2844 | -`multi-isearch-files-regexp' read file names to search, one by one, |
2845 | -ended with RET. With a prefix argument, they ask for a wildcard, and |
2846 | -search in file buffers whose file names match the specified wildcard. |
2847 | - |
2848 | -*** Autorevert Tail mode now works also for remote files. |
2849 | - |
2850 | -*** The new eshell built-in commands `su' and `sudo' support Tramp. |
2851 | -Thus, they change `default-directory' to reflect the new user id, and |
2852 | -let commands run under that user's permissions. This works even when |
2853 | -`default-directory' is already remote. Calling the external commands |
2854 | -is possible via `*su' or `*sudo', respectively. |
2855 | - |
2856 | -** Obsolete packages |
2857 | - |
2858 | -*** sym-comp.el is now obsolete, superseded by completion-at-point. |
2859 | - |
2860 | -*** lucid.el and levents.el are now obsolete. |
2861 | - |
2862 | - |
2863 | |
2864 | -* New Modes and Packages in Emacs 23.2 |
2865 | - |
2866 | -** CEDET (the Collection of Emacs Development Tools) is now in Emacs. |
2867 | -This is a collection of packages to aid with using Emacs as an IDE |
2868 | -(integrated development environment): |
2869 | - |
2870 | -*** The Semantic package allows the use of parsers to intelligently |
2871 | -edit and navigate source code. Parsers for C/C++, Java, Javascript, |
2872 | -and several other languages are included by default, and Semantic can |
2873 | -also interface with external tools such as GNU Global and GNU Idutils. |
2874 | - |
2875 | -To enable Semantic, use the global minor mode `semantic-mode'. |
2876 | -See the Semantic manual for details. |
2877 | - |
2878 | -*** EDE (Emacs Development Environment) is a package for managing code |
2879 | -projects, including features such as automatic Makefile generation. |
2880 | - |
2881 | -To enable EDE, use the minor mode `global-ede-mode'. |
2882 | -See the EDE manual for details. |
2883 | - |
2884 | -*** SRecode is a library for recoding Semantic tags back into source |
2885 | -code. It is currently used by some parts of Semantic and EDE; in the |
2886 | -future, it may be used for code generation features. |
2887 | - |
2888 | -*** The EIEIO library implements a subset of the Common Lisp Object |
2889 | -System (CLOS). It is used by the other CEDET packages. |
2890 | - |
2891 | -** mpc.el is a front end for the Music Player Daemon. Run it with M-x mpc. |
2892 | - |
2893 | -** htmlfontify.el turns a fontified Emacs buffer into an HTML page. |
2894 | - |
2895 | -** js.el is a new major mode for JavaScript files. |
2896 | - |
2897 | -** imap-hash.el is a new library to address IMAP mailboxes as hashtables. |
2898 | - |
2899 | - |
2900 | |
2901 | -* Incompatible Lisp Changes in Emacs 23.2 |
2902 | - |
2903 | -** The Lisp reader turns integers that are too large/small into floats. |
2904 | -For instance, on machines where `536870911' is the largest integer, |
2905 | -reading `536870912' gives the floating-point object `536870912.0'. |
2906 | - |
2907 | -This change only concerns the Lisp reader; it does not affect how |
2908 | -actual integer objects overflow. |
2909 | - |
2910 | -** Several obsolete functions removed. |
2911 | -The functions have been obsolete since Emacs 19, and are unlikely to |
2912 | -be in use: |
2913 | - |
2914 | - time-stamp-month-dd-yyyy, time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy |
2915 | - time-stamp-dd-mon-yy, time-stamp-yy/mm/dd, time-stamp-yyyy/mm/dd, |
2916 | - time-stamp-yyyy-mm-dd, time-stamp-yymmdd, time-stamp-hh:mm:ss, |
2917 | - time-stamp-hhmm, baud-rate |
2918 | - |
2919 | -** Support for generating Emacs 18 compatible bytecode (by setting |
2920 | -the variable `byte-compile-compatibility') has been removed. |
2921 | - |
2922 | -** In image-mode.el `image-mode-maybe' is obsolete. |
2923 | -Instead, you can either use `image-mode' (which displays an image file |
2924 | -as the actual image initially), or `image-mode-as-text' (when you want |
2925 | -to display an image file as text initially). `image-mode-as-text' is a |
2926 | -combination of a non-image mode from `auto-mode-alist' (or Fundamental |
2927 | -mode) and `image-minor-mode'. `image-minor-mode' provides a `C-c C-c' |
2928 | -key binding to toggle image display. |
2929 | -`image-toggle-display-text' removes image properties. |
2930 | -`image-toggle-display-image' adds image properties. |
2931 | -`image-toggle-display' toggles between `image-mode-as-text' and `image-mode'. |
2932 | - |
2933 | - |
2934 | |
2935 | -* Lisp changes in Emacs 23.2 |
2936 | - |
2937 | -** All the default-FOO variables that hold the default value of the FOO |
2938 | -variable, are now declared obsolete. |
2939 | - |
2940 | -** read-key is a function halfway between read-event and read-key-sequence. |
2941 | -It reads a single key, but obeys input and escape sequence decoding. |
2942 | - |
2943 | -** Frame parameter changes |
2944 | - |
2945 | -*** You can give the `fullscreen' frame parameter the value `maximized'. |
2946 | -This maximizes the frame. |
2947 | - |
2948 | -*** The new frame parameter `sticky' makes Emacs frames sticky in |
2949 | -virtual desktops. |
2950 | - |
2951 | -** Completion changes |
2952 | - |
2953 | -*** completion-base-size is obsoleted by completion-base-position. |
2954 | -This change causes a few backward incompatibilities, mostly with |
2955 | -choose-completion-string-functions where the `mini-p' argument has |
2956 | -been replaced by a `base-position' argument, and where the `base-size' |
2957 | -argument is now always nil. |
2958 | - |
2959 | -*** New function `completion-in-region' to use the standard completion |
2960 | -facilities on a particular region of text. |
2961 | - |
2962 | -*** The 4th arg to all-completions (aka hide-spaces) is declared obsolete. |
2963 | - |
2964 | -*** completion-annotate-function specifies how to compute annotations |
2965 | -for completions displayed in *Completions*. |
2966 | - |
2967 | -** Minibuffer changes |
2968 | - |
2969 | -*** read-file-name-predicate is obsolete. It was used to pass the predicate |
2970 | -to read-file-name-internal because read-file-name-internal abused its `pred' |
2971 | -argument to pass the current directory, but this hack is not needed |
2972 | -any more. |
2973 | - |
2974 | -** Changes to file-manipulation functions |
2975 | - |
2976 | -*** `delete-directory' has an optional parameter RECURSIVE. |
2977 | - |
2978 | -*** New function `copy-directory', which copies a directory recursively. |
2979 | - |
2980 | -** called-interactively-p now takes one argument and replaces interactive-p |
2981 | -which is now marked obsolete. |
2982 | - |
2983 | -** New function set-advertised-calling-convention makes it possible |
2984 | -to obsolete arguments as well as make some arguments mandatory. |
2985 | - |
2986 | -** You can control which binding is preferentially shown in menus and |
2987 | -docstrings by adding a `:advertised-binding' property to the corresponding |
2988 | -command's symbol. That property can hold a single binding or a list |
2989 | -of bindings. |
2990 | - |
2991 | -** Network and process changes |
2992 | - |
2993 | -*** start-process-shell-command and start-file-process-shell-command |
2994 | -now only take a single `command' argument. |
2995 | - |
2996 | -*** The new variable `process-file-side-effects' should be set to nil |
2997 | -if a `process-file' call does not change a remote file. This allows |
2998 | -file name handlers such as Tramp to optimizations. |
2999 | - |
3000 | -*** make-network-process can now also create `seqpacket' Unix sockets. |
3001 | - |
3002 | -** Loading changes |
3003 | - |
3004 | -*** eval-next-after-load is obsolete. |
3005 | - |
3006 | -*** New hook `after-load-functions' run after loading an Elisp file. |
3007 | - |
3008 | -** Byte compilation changes |
3009 | - |
3010 | -*** Changing the file-names generated by byte-compilation by redefining |
3011 | -the function `byte-compile-dest-file' before loading bytecomp.el is obsolete. |
3012 | -Instead, customize byte-compile-dest-file-function. |
3013 | - |
3014 | -*** `byte-compile-warnings' has new members, `constants' and `suspicious'. |
3015 | - |
3016 | -** New macro with-silent-modifications to tweak text properties without |
3017 | -affecting the buffer's modification state. |
3018 | - |
3019 | -** Hash tables have a new printed representation that is readable. |
3020 | -The feature `hashtable-print-readable' identifies this new |
3021 | -functionality. |
3022 | - |
3023 | -** New functions for performing Unicode normalization: |
3024 | -ucs-normalize-NFD-region, ucs-normalize-NFD-string, |
3025 | -ucs-normalize-NFC-region, ucs-normalize-NFC-string, |
3026 | -ucs-normalize-NFKD-region, ucs-normalize-NFKD-string, |
3027 | -ucs-normalize-NFKC-region, ucs-normalize-NFKC-string, |
3028 | -ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFD-string, |
3029 | -ucs-normalize-HFS-NFC-region, ucs-normalize-HFS-NFC-string. |
3030 | - |
3031 | -** Face aliases can now be marked as obsolete, using the macro |
3032 | -`define-obsolete-face-alias'. |
3033 | - |
3034 | -** New function `window-full-height-p', analogous to the full-width version. |
3035 | - |
3036 | - |
3037 | |
3038 | -* Changes in Emacs 23.2 on non-free operating systems |
3039 | - |
3040 | -** On MS-Windows, `display-time' now displays the system load average |
3041 | -as well as the time, as it does on GNU and Unix. |
3042 | - |
3043 | - |
3044 | |
3045 | -* Installation Changes in Emacs 23.1 |
3046 | - |
3047 | -** The default X toolkit is now Gtk+, rather than Lucid. |
3048 | -The configure option `--with-gtk' has been removed. Gtk is now the |
3049 | -default toolkit, but you can use --with-x-toolkit=gtk if necessary. |
3050 | - |
3051 | -** New font code. |
3052 | -Fonts are handled by new code capable of dealing with multiple font |
3053 | -backends. This uses the freetype and fontconfig libraries. |
3054 | - |
3055 | -*** Emacs now accepts font names supplied in the fontconfig format |
3056 | -(e.g. "monospace-12:bold") and GTK format (e.g. "Monospace Bold 12"). |
3057 | - |
3058 | -*** Added support for local fonts (fonts installed on the machine |
3059 | -where Emacs is running). |
3060 | - |
3061 | -*** Added support for the Xft library for antialiasing. |
3062 | - |
3063 | -*** Added support for the otf library for complex text layout by |
3064 | -OpenType fonts. |
3065 | - |
3066 | -*** Added support for the m17n library for text shaping. |
3067 | - |
3068 | -** Changes to image support |
3069 | - |
3070 | -*** configure now checks for libgif before libungif when searching for |
3071 | -a GIF library. |
3072 | - |
3073 | -*** Emacs now supports the SVG image format through librsvg2. |
3074 | - |
3075 | -*** Emacs now supports multi-page TIFF images. |
3076 | - |
3077 | -** New NeXTSTEP-based port. |
3078 | -This provides support for GNUstep (via the GNUstep libraries) and Mac |
3079 | -OS X (via the Cocoa libraries). |
3080 | - |
3081 | -Specify --with-ns to configure for this. By default, a self-contained |
3082 | -app will be built (containing all lisp). To install/share lisp with |
3083 | -other emacsen (e.g. X11 build) use --disable-ns-self-contained. See |
3084 | -nextstep/README and nextstep/INSTALL in the Emacs source directory. |
3085 | - |
3086 | -** Mac OS X is no longer supported via Carbon. |
3087 | -Use the NeXTSTEP port, described above. |
3088 | - |
3089 | -** The new configuration option "--with-dbus" enables D-Bus language |
3090 | -bindings for Emacs. |
3091 | - |
3092 | -** Support for many obsolete platforms has been removed. |
3093 | -See the list at the end of etc/MACHINES for details. |
3094 | - |
3095 | -*** Support for systems without alloca has been removed. |
3096 | - |
3097 | -*** Support for Sun windows has been removed. |
3098 | - |
3099 | -*** The `emacstool' utility has been removed. |
3100 | - |
3101 | -** The following platforms will be removed in a future Emacs version: |
3102 | -If you are still using Emacs on one of these platforms, please email |
3103 | -emacs-devel@gnu.org to inform the Emacs developers. |
3104 | - |
3105 | -*** Old GNU/Linux systems based on libc version 5. |
3106 | - |
3107 | -*** Old FreeBSD, NetBSD, and OpenBSD systems based on the COFF |
3108 | -executable format. |
3109 | - |
3110 | -*** Solaris versions 2.6 and below. |
3111 | - |
3112 | -*** Solaris on IBM RS6000 machines. |
3113 | - |
3114 | -*** UNIX System V (the original SysV, not later platforms based on it). |
3115 | - |
3116 | -*** Unixware on non-x86 machines. |
3117 | - |
3118 | -*** Platforms not supporting shared libraries (i.e., requiring the |
3119 | -NO_SHARED_LIBS compilation flag). |
3120 | - |
3121 | -** The configure options `--with-gcc', `--without-gcc' have been removed. |
3122 | -Configure will use gcc by default. Set the CC environment variable if |
3123 | -you need control over which C compiler is used. |
3124 | - |
3125 | -** The refcards are now shipped as PDF files. |
3126 | - |
3127 | -** The manuals are now licensed under the GNU Free Documentation License v1.3, |
3128 | -or any later version. |
3129 | - |
3130 | -** Emacs 23 comes with a new set of default icons. |
3131 | -Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. |
3132 | -The Emacs 22 icon is available as `emacs22.png' in the same location. |
3133 | - |
3134 | |
3135 | -* Changes in Emacs 23.1 |
3136 | - |
3137 | -** Improved X Window System support |
3138 | - |
3139 | -*** Emacs now supports using both X displays and ttys in one session. |
3140 | -With an Emacs server active (M-x server-start), `emacsclient -t' |
3141 | -creates a tty frame connected to the running emacs server. You can |
3142 | -use any number of different ttys. `emacsclient -c' creates a new X11 |
3143 | -frame on the current $DISPLAY (or a tty frame if $DISPLAY is not set). |
3144 | -There may be problems if a display exits unexpectedly and Emacs is compiled |
3145 | -with Gtk+, see etc/PROBLEMS. |
3146 | - |
3147 | -You can test for the presence of this feature in your Lisp code by |
3148 | -testing for the `multi-tty' feature. |
3149 | - |
3150 | -*** Emacs starts in the background, as a daemon, when given the |
3151 | ---daemon command line argument. It disconnects from the terminal and |
3152 | -starts the server. Clients can connect and create graphical or |
3153 | -terminal frames using emacsclient. |
3154 | - |
3155 | -**** emacsclient starts emacs in daemon mode and connects to it when |
3156 | ---alternate-editor="" is used (or when the evironment variable |
3157 | -ALTERNATE_EDITOR is set to "") and emacsclient cannot connect to an |
3158 | -emacs server. |
3159 | - |
3160 | -*** The new command close-display-connection closes a connection to a |
3161 | -remote display. There are some bugs for Gtk+. See etc/PROBLEMS. |
3162 | - |
3163 | -*** Emacs now supports the XEmbed specification. |
3164 | -You can embed Emacs in another application on X11. The new command line |
3165 | -option --parent-id is used to pass the parent window id to Emacs. See |
3166 | -http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html |
3167 | -for details about XEmbed. |
3168 | - |
3169 | -*** Emacs can now set the frame opacity. |
3170 | -The opacity of a frame can be controlled by setting the `alpha' frame |
3171 | -parameter. This only takes effect on a compositing window manager for |
3172 | -the X Window System, such as Compiz, Beryl and Compiz Fusion, on Mac |
3173 | -OS X, or on Windows 2000 and later versions of Windows. |
3174 | - |
3175 | -The alpha parameter should be an integer between 0 (transparent) and |
3176 | -100 (opaque), or a float number between 0.0 and 1.0. It can also be a |
3177 | -cons cell (ACTIVE . INACTIVE), where ACTIVE is the opacity of an |
3178 | -active frame and INACTIVE is the opacity of non-active frames. |
3179 | - |
3180 | -The variable `frame-alpha-lower-limit' defines a lower bound for the |
3181 | -opacity; the default is 20. |
3182 | - |
3183 | -** Internationalization changes |
3184 | - |
3185 | -*** The Emacs character set is now a superset of Unicode. |
3186 | -(It has about four times the code space, which should be plenty). |
3187 | - |
3188 | -The internal encoding used for buffers and strings is now |
3189 | -Unicode-based and called `utf-8-emacs' (`emacs-internal' is an alias |
3190 | -for this). This encoding is backward-compatible with Unicode's UTF-8 |
3191 | -encoding. The internal encoding previously used by Emacs, |
3192 | -`emacs-mule', is still available for reading and writing files. |
3193 | - |
3194 | -During byte-compilation, Emacs 23 uses `utf-8-emacs' to write files. |
3195 | -As a result, byte-compiled files containing non-ASCII characters can't |
3196 | -be read by earlier versions of Emacs. Files compiled by Emacs 20, 21, |
3197 | -or 22 are loaded correctly as `emacs-mule' (whether or not they |
3198 | -contain multibyte characters). This takes somewhat more time, so it |
3199 | -may be worth recompiling existing .elc files which don't need to be |
3200 | -shared with older Emacsen. |
3201 | - |
3202 | -*** There are new coding systems/aliases; see M-x list-coding-systems. |
3203 | - |
3204 | -*** There is a new charset implementation with many new charsets. |
3205 | -See M-x list-character-sets. New charsets can be defined conveniently |
3206 | -as tables of unicodes. |
3207 | - |
3208 | -*** There are new language environments for Chinese-GBK, |
3209 | -Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu, |
3210 | -Sinhala, and TaiViet. |
3211 | - |
3212 | -*** The minor modes unify-8859-on-encoding-mode and |
3213 | -unify-8859-on-decoding-mode are obsolete. |
3214 | - |
3215 | -*** `ucs-insert' is bound to `C-x 8 RET' and in addition to hex numbers |
3216 | -accepts numbers in hash notation (e.g. #o21430 for octal, or #10r8984 for |
3217 | -decimal). It also accepts Unicode character names with completion. |
3218 | - |
3219 | -*** The `cyrillic-translit' input method supports many new characters. |
3220 | -Common typographical characters available from Unicode were added to |
3221 | -`cyrillic-translit': punctuation marks, accented characters, fractions, |
3222 | -and others. |
3223 | - |
3224 | -** Emacs now supports serial port access on GNU/Linux, Unix, and |
3225 | -Windows. The new command `serial-term' starts an interactive terminal |
3226 | -on a serial port. The serial port can be configured at runtime with |
3227 | -the mode-line mouse menu. |
3228 | - |
3229 | -** Menu Bar changes |
3230 | - |
3231 | -*** In the Options menu, the "Set Default Font" item applies the |
3232 | -selected font to the `default' face on all frames, not just the |
3233 | -current frame. Furthermore, if Emacs is compiled with both GTK and |
3234 | -Fontconfig support, the "Set Default Font" item uses the GTK font |
3235 | -selection dialog instead of an Emacs pop-up menu. |
3236 | - |
3237 | -*** The font setting chosen by "Set Default Font" is saved if the |
3238 | -"Save Options" item is used. |
3239 | - |
3240 | -*** The Tools menu contains a new Encryption/Decryption submenu. |
3241 | -This contains commands provided by EasyPG, the newly-included |
3242 | -interface to GnuPG (see New Modes and Packages). |
3243 | - |
3244 | -*** In the Options menu, the "Truncate Long Lines in the Buffer" entry |
3245 | -has been replaced with a submenu offering three different ways to |
3246 | -handle long lines: truncation, continuation at the window edge, and |
3247 | -the new word wrapping behavior (see Editing Changes, below). |
3248 | - |
3249 | -*** Improvements to menus for major and minor modes |
3250 | -More major and minor modes now have a mode specific menu, and existing |
3251 | -mode menus have been improved to include more functionality. |
3252 | - |
3253 | -** Mode-line changes |
3254 | - |
3255 | -*** The mode-line displays a `@', instead of `-', if the |
3256 | -default-directory for the current buffer is on a remote machine. |
3257 | - |
3258 | -*** The mode-line displays a mode menu when mouse-1 is clicked on a |
3259 | -minor mode, in the same way as it already did for major modes. |
3260 | - |
3261 | -*** The `mode-line-emphasis' face is used to highlight certain |
3262 | -mode-line information (e.g. waiting for a VC command to finish). |
3263 | - |
3264 | -*** The mode-line tooltips have been improved to provide more details. |
3265 | - |
3266 | -*** The VC, line/colum number and minor mode indicators on the mode |
3267 | -line are now interactive: mouse-1 can be used on them to pop up a menu. |
3268 | - |
3269 | -** File deletion can make use of the Recycle Bin or system Trash folder. |
3270 | -Set `delete-by-moving-to-trash' non-nil to use this. Deleted files |
3271 | -and directories will then be sent to the Recycle Bin on Windows, and |
3272 | -to `trash-directory' on other systems. |
3273 | - |
3274 | -** Directory-local variables can now be defined. |
3275 | -By default, Emacs looks in .dir-locals.el for directory-local |
3276 | -variables. For more information, see `dir-locals-set-directory-class' |
3277 | -and `dir-locals-set-class-variables'. |
3278 | - |
3279 | -** Emacs can now use `auth-source' for authentication. |
3280 | -`smtpmail' and `url' (Tramp and Gnus also) use `auth-source' to obtain |
3281 | -login names and passwords. The match, if found, is reported |
3282 | -in *Messages* with the password blanked out. |
3283 | - |
3284 | -** `where-is-preferred-modifier' can specify your favorite modifier. |
3285 | - |
3286 | - |
3287 | |
3288 | -* Startup Changes in Emacs 23.1 |
3289 | - |
3290 | -** The option `inhibit-startup-screen' (with aliases to old names |
3291 | -`inhibit-splash-screen' and `inhibit-startup-message') doesn't inhibit |
3292 | -display of the initial message in the *scratch* buffer. If you don't |
3293 | -want to display the initial message in the *scratch* buffer at startup, |
3294 | -you can set the option `initial-scratch-message' to nil. |
3295 | - |
3296 | -** New user option `initial-buffer-choice' specifies what to display |
3297 | -after starting Emacs: startup screen, *scratch* buffer, visiting a |
3298 | -file or directory. |
3299 | - |
3300 | -** New alias `argv' for `command-line-args-left' |
3301 | -This is a convenience alias, so that one can write `(pop argv)' |
3302 | -inside of --eval command line arguments in order to access |
3303 | -following arguments. |
3304 | - |
3305 | -** The abbrev file is no longer read at startup in batch mode. |
3306 | - |
3307 | -** Emacs now supports invocation by an X session manager. |
3308 | -It can save a session and restore it later. See the documentation of |
3309 | -the functions `emacs-session-save' and `emacs-session-restore'. |
3310 | -(Actually, this feature was introduced with Emacs 22, but it was not |
3311 | -documented.) |
3312 | - |
3313 | |
3314 | -* Incompatible Editing Changes in Emacs 23.1 |
3315 | - |
3316 | -** In Dired, `dired-flag-garbage-files' is rebound from `&' to `%&' |
3317 | -on the regexp command prefix map. |
3318 | - |
3319 | -** In Dired-x, all command guesses for ! are now added to the default |
3320 | -list accessible by M-n instead of pushing all guesses temporarily into |
3321 | -the history list. |
3322 | - |
3323 | -** In Isearch mode, a special case of typing `C-w' at the beginning of |
3324 | -the minibuffer that toggles word search (i.e. using key sequences |
3325 | -`C-s RET C-w' or `C-s M-e C-w') is obsolete. You can use the global key |
3326 | -`M-s w' to start word search, or type `M-s w' in Isearch mode to |
3327 | -toggle word search. To start nonincremental word search you can now use |
3328 | -`M-s w RET' and `M-s w C-r RET' instead of `C-s RET C-w' and `C-r RET C-w'. |
3329 | - |
3330 | -** In Info, `Info-search' is unbound from `M-s' to allow using `M-s w' |
3331 | -for word search as well as other search commands from the global prefix |
3332 | -key `M-s'. `Info-search' is still bound to `s', and also incremental |
3333 | -search commands `C-s', `C-M-s', `C-r', `C-M-r' are available for searching |
3334 | -through multiple Info nodes, together with their nonincremental versions |
3335 | -`C-s RET', `C-r RET', `C-M-s RET', `C-M-r RET', `M-s w RET'. |
3336 | - |
3337 | -** In Text mode, `center-line' and `center-paragraph' are rebound from |
3338 | -`M-s' and `M-S' to global keys `M-o M-s' and `M-o M-S' on the global |
3339 | -prefix map `M-o', which is intended for such formatting commands. |
3340 | - |
3341 | -** The following input methods were removed in Emacs 22.2, but this was |
3342 | -not advertised: danish-alt-postfix, esperanto-alt-postfix, |
3343 | -finnish-alt-postfix, german-alt-postfix, icelandic-alt-postfix, |
3344 | -norwegian-alt-postfix, scandinavian-alt-postfix, spanish-alt-postfix, |
3345 | -and swedish-alt-postfix. Use the versions without "alt-", which are |
3346 | -identical. |
3347 | - |
3348 | - |
3349 | |
3350 | -* Editing Changes in Emacs 23.1 |
3351 | - |
3352 | -** The C-n and C-p line-motion commands now move by screen lines, |
3353 | -taking continued lines and variable-width characters into account. |
3354 | -Setting `line-move-visual' to nil reverts this to the previous |
3355 | -behavior (i.e., motion by logical lines based on buffer contents |
3356 | -alone). |
3357 | - |
3358 | -** C-x C-c now invokes `save-buffers-kill-terminal', and C-z now |
3359 | -invokes `suspend-frame'. These changes are for compatibility with the |
3360 | -new multi-tty support (see `Improved X Window System support' above). |
3361 | - |
3362 | -** Mark changes |
3363 | - |
3364 | -*** Transient Mark mode is now on by default. |
3365 | - |
3366 | -*** mark-even-if-inactive now defaults to t |
3367 | - |
3368 | -*** When Transient Mark mode is on, C-SPC C-SPC pushes a mark without |
3369 | -activating it. |
3370 | - |
3371 | -*** When Transient Mark mode is on, M-q now fills the region if the |
3372 | -region is active. Otherwise, it fills the current paragraph. |
3373 | - |
3374 | -*** When Transient Mark mode is on, M-$ now checks spelling of the |
3375 | -region if the region is active. Otherwise, it checks spelling of the |
3376 | -word at point. |
3377 | - |
3378 | -*** When Transient Mark mode is on, TAB now indents the region if the |
3379 | -region is active. |
3380 | - |
3381 | -*** The variable `use-empty-active-region' controls whether an empty |
3382 | -active region in Transient Mark mode should make commands operate on |
3383 | -that empty region. |
3384 | - |
3385 | -** Temporarily active regions |
3386 | - |
3387 | -*** The new variable shift-select-mode, non-nil by default, controls |
3388 | -shift-selection. When Shift Select mode is on, shift-translated |
3389 | -motion keys (e.g. S-left and S-down) activate and extend a temporary |
3390 | -region, similar to mouse-selection. |
3391 | - |
3392 | -*** Temporarily active regions, created using shift-selection or |
3393 | -mouse-selection, are not necessarily deactivated in the next command. |
3394 | -They are only deactivated after point motion commands that are not |
3395 | -shift-translated, or after commands that would ordinarily deactivate |
3396 | -the mark in Transient Mark mode (e.g., any command that modifies the |
3397 | -buffer). |
3398 | - |
3399 | -** Minibuffer and completion changes |
3400 | - |
3401 | -*** Emacs may ask for confirmation before opening a non-existent file |
3402 | -or buffer. By default, Emacs requests confirmation if you type RET |
3403 | -immediately after TAB, and the resulting input is not an existing file |
3404 | -or buffer; this usually happens when the minibuffer input did not |
3405 | -complete far enough and you entered RET by mistake. In that case, |
3406 | -Emacs puts the message "[Confirm]" in the minibuffer; type RET again |
3407 | -to create the file or buffer. |
3408 | - |
3409 | -The new variable confirm-nonexistent-file-or-buffer determines whether |
3410 | -Emacs asks for confirmation. The default value is `after-completion'. |
3411 | -If you change it to t, Emacs always asks for confirmation; if you |
3412 | -change it to nil, Emacs never asks for confirmation. |
3413 | - |
3414 | -*** The rules for performing completion have been changed. |
3415 | -When generating completion alternatives, Emacs now takes the |
3416 | -minibuffer text after point, if any, into account: this text is |
3417 | -treated as a substring of the remaining part of the completion |
3418 | -alternative (i.e., the part not matched by the minibuffer text before |
3419 | -point). If no completion alternatives are found this way, Emacs |
3420 | -attempts to perform partial-completion. If still no completion |
3421 | -alternatives are found, we fall back on the Emacs 22 rules for |
3422 | -performing completion. |
3423 | - |
3424 | -The new variable `completion-styles' can be customized to choose your |
3425 | -favorite completion style. |
3426 | - |
3427 | -*** When M-n in the minibuffer reaches the end of the list of defaults, |
3428 | -it adds the completion list to the end, so next M-n continues putting |
3429 | -completion items to the minibuffer. The same principle applies to |
3430 | -incremental search commands as well: C-s or C-M-s starts searching |
3431 | -the default values and after the end of defaults they continue |
3432 | -searching minibuffer completion items. |
3433 | - |
3434 | -*** Minibuffer input of shell commands now comes with completion. |
3435 | - |
3436 | -*** In the `C-x d' (Dired) prompt, typing M-n gives the visited file |
3437 | -name of the current buffer. |
3438 | - |
3439 | -*** In the M-! (shell-command) prompt, M-n provides some default commands. |
3440 | -These are guessed using the file extension of the current file, based |
3441 | -on the file-handlers specified in the operating system's `mailcap' |
3442 | -file. The ! command in Dired (dired-do-shell-command) works |
3443 | -similarly, using the file displayed on the current line. |
3444 | - |
3445 | -*** A list of regexp default values is available via M-n for `occur', |
3446 | -`keep-lines', `flush-lines' and `how-many'. This list includes the active |
3447 | -region in transient-mark-mode, the word under the cursor, the last Isearch |
3448 | -regexp, the last Isearch string and the last replacement regexp. |
3449 | - |
3450 | -*** When enable-recursive-minibuffers is non-nil, operations which use |
3451 | -switch-to-buffer (such as C-x b and C-x C-f) do not fail any more when |
3452 | -used in a minibuffer or a dedicated window. Instead, they fallback on |
3453 | -using pop-to-buffer, which will use some other window. This change |
3454 | -has no effect when enable-recursive-minibuffers is nil (the default). |
3455 | - |
3456 | -*** Isearch started in the minibuffer searches in the minibuffer history. |
3457 | -Reverse Isearch commands (C-r, C-M-r) search in previous minibuffer |
3458 | -history elements, and forward Isearch commands (C-s, C-M-s) search in |
3459 | -next history elements. When the reverse search reaches the first history |
3460 | -element, it wraps to the last history element, and the forward search |
3461 | -wraps to the first history element. When the search is terminated, the |
3462 | -history element containing the search string becomes the current. |
3463 | - |
3464 | -*** The variable read-file-name-completion-ignore-case overrides |
3465 | -completion-ignore-case for file name completion. |
3466 | - |
3467 | -*** The variable read-buffer-completion-ignore-case overrides |
3468 | -completion-ignore-case for buffer name completion. |
3469 | - |
3470 | -*** The new command `minibuffer-force-complete' chooses one of the |
3471 | -possible completions, rather than stopping at the common prefix. |
3472 | - |
3473 | -*** If `completion-auto-help' is `lazy', Emacs shows the completions |
3474 | -buffer only on the second attempt to complete. This was already |
3475 | -supported in `partial-completion-mode'. |
3476 | - |
3477 | -** Face changes |
3478 | - |
3479 | -*** S-down-mouse-1 now pops up a menu for changing the font and text |
3480 | -size of the default face in the current buffer. The face is changed |
3481 | -via face remapping (see Lisp changes, below). |
3482 | - |
3483 | -*** New commands to change the default face size in the current buffer. |
3484 | -To increase it, type `C-x C-+' or `C-x C-='. To decrease it, type |
3485 | -`C-x C--'. To restore the default (global) face size, type `C-x C-0'. |
3486 | -These work via Text Scale mode, a new minor mode. |
3487 | - |
3488 | -The final key in the above commands may be repeated without the |
3489 | -leading `C-x', e.g. `C-x C-= C-= C-=' increases the face height by |
3490 | -three steps. Each step scales the height of the default face by the |
3491 | -value of the variable `text-scale-mode-step'. |
3492 | - |
3493 | -*** The commands buffer-face-mode and buffer-face-set can be used to |
3494 | -remap the default face in the current buffer. See "Buffer Face mode", |
3495 | -under New Modes and Packages. |
3496 | - |
3497 | -** Primary selection changes |
3498 | - |
3499 | -*** You can disable kill ring commands from accessing the primary |
3500 | -selection by setting `x-select-enable-primary' to nil. |
3501 | - |
3502 | -** Continuation lines can now be wrapped at word boundaries |
3503 | -(word-wrapping). This is controlled by the new per-buffer variable |
3504 | -`word-wrap'. Word wrapping does not take place if continuation lines |
3505 | -are not shown, e.g. if truncate-lines is non-nil. The most convenient |
3506 | -way to enable word-wrapping is using the new minor mode Visual Line |
3507 | -mode; in addition to setting `word-wrap' to t, this rebinds some |
3508 | -editing commands to work on screen lines rather than text lines. See |
3509 | -New Modes and Packages, below. |
3510 | - |
3511 | -** Window management changes |
3512 | - |
3513 | -*** truncate-partial-width-windows now accepts integer values, which |
3514 | -specify a minimum window width for partial-width windows, below which |
3515 | -lines are truncated. The default has been changed to 50. |
3516 | - |
3517 | -*** The new command balance-windows-area balances windows both |
3518 | -vertically and horizontally. |
3519 | - |
3520 | -*** pop-to-buffer now always sets input focus when the popped-to window |
3521 | -is on a different frame. |
3522 | - |
3523 | -** Miscellaneous changes: |
3524 | - |
3525 | -*** C-l is bound to the new command recenter-top-bottom, rather than recenter. |
3526 | -This moves the current line to window center, top and bottom on |
3527 | -successive invocations. |
3528 | - |
3529 | -*** scroll-preserve-screen-position also preserves the column position. |
3530 | - |
3531 | -*** If `yank-pop-change-selection' is t, rotating the kill ring also |
3532 | -updates the selection or clipboard to the current yank, just as M-w |
3533 | -would do so with the text it copies to the kill ring. |
3534 | - |
3535 | -*** C-M-% now shows replacement as it would look in the buffer, with |
3536 | -`\N' and `\&' substituted according to the match. Old behavior can be |
3537 | -restored by customizing `query-replace-show-replacement'. |
3538 | - |
3539 | -*** The command shell prompts for the default directory, when it is |
3540 | -called with a prefix and the default directory is a remote file name. |
3541 | -This is because some file name handlers (like ange-ftp) are not able to |
3542 | -run processes remotely. |
3543 | - |
3544 | -*** The new command kill-matching-buffers kills buffers whose name |
3545 | -matches a regexp. |
3546 | - |
3547 | -*** The value of comment-style now defaults to `indent'. |
3548 | -Thefore, comment-start markers are inserted at the current indentation |
3549 | -of the region to comment, rather than the leftmost column. |
3550 | - |
3551 | -*** The new commands `pp-macroexpand-expression' and |
3552 | -`pp-macroexpand-last-sexp' pretty-print macro expansions. |
3553 | - |
3554 | -*** The new command `set-file-modes' allows to set file's mode bits. |
3555 | -The mode bits can be specified in symbolic notation, like with GNU |
3556 | -Coreutils, in addition to an octal number. `chmod' is a new |
3557 | -convenience alias for this function. |
3558 | - |
3559 | -*** `next-error-recenter' specifies how next-error should recenter the |
3560 | -visited source file. Its value can be a number (for example, 0 for |
3561 | -top line, -1 for bottom line), or nil for no recentering. |
3562 | - |
3563 | -*** When typing in a password in the echo area, C-y yanks the current |
3564 | -kill into the password. |
3565 | - |
3566 | -*** Tooltip frame parameters `font' and `color' in `tooltip-frame-parameters' |
3567 | -are ignored. Customize the `tooltip' face instead. |
3568 | - |
3569 | -*** `mkdir' is a new convenience alias for `make-directory'. |
3570 | - |
3571 | |
3572 | -* New Modes and Packages in Emacs 23.1 |
3573 | - |
3574 | -** Auto Composition Mode is a minor mode that composes characters |
3575 | -automatically when they are displayed. It is globally on by default. |
3576 | -It uses `auto-composition-function' (default `auto-compose-chars'). |
3577 | - |
3578 | -** Bubbles, a new game, is similar to SameGame. |
3579 | - |
3580 | -** Buffer Face mode is a minor mode for remapping the default face in |
3581 | -the current buffer. The variable `buffer-face-mode-face' specifies |
3582 | -the face to remap to. The command `buffer-face-set' prompts for a |
3583 | -face name, sets `buffer-face-mode-face' to it, and enables |
3584 | -buffer-face-mode. See "Face changes", under Editing Changes, for a |
3585 | -description of face remapping. |
3586 | - |
3587 | -** butterfly flips the desired bit on the drive platter. |
3588 | -See http://xkcd.com/378/ |
3589 | - |
3590 | -** bug-reference.el provides clickable links to bug reports. |
3591 | - |
3592 | -** dbus.el provides D-Bus language bindings. |
3593 | -D-Bus is an inter-process communication mechanism for applications |
3594 | -residing on the same host. See the manual for details. |
3595 | - |
3596 | -** DocView mode allows viewing of PDF, PostScript and DVI documents. |
3597 | -One can also search for a regular expression in the document. For |
3598 | -details, see the commentary in doc-view.el. |
3599 | - |
3600 | -PDF and DVI files are now opened in Doc View mode by default. |
3601 | - |
3602 | -In Postcript mode, C-c C-c launches Doc View minor mode for viewing |
3603 | -the postscript file. |
3604 | - |
3605 | -** EasyPG provides an interface to the GNU Privacy Guard (GnuPG). |
3606 | -It includes a GnuPG keyring browser, cryptographic operations on |
3607 | -regions and files, and automatic encryption of *.gpg files. For |
3608 | -details, see the EasyPG Assistant User's Manual. |
3609 | - |
3610 | -** json.el is a library for parsing and generating JSON |
3611 | -(JavaScript Object Notation), a lightweight data-interchange format. |
3612 | - |
3613 | -** linum.el is a new minor mode to display line numbers for the |
3614 | -current buffer. |
3615 | - |
3616 | -** mairix.el is an interface to mairix, a free tool for indexing and |
3617 | -searching locally stored mail. It allows you to query mairix and |
3618 | -display the search results with Rmail, Gnus and VM. Note that there |
3619 | -is an existing Gnus back end, nnmairix.el, which should be used with |
3620 | -Maildir/MH setups. |
3621 | - |
3622 | -** minibuffer-depth-indicate-mode shows the minibuffer depth in the prompt. |
3623 | - |
3624 | -** nXML Mode |
3625 | -This is a new mode for editing XML documents. It allows a schema to |
3626 | -be associated with the XML document being edited, using Relax NG as |
3627 | -the schema language. The schema is used to provide two key features: |
3628 | - |
3629 | -*** Continuous validation. nXML validates as you type, highlighting |
3630 | -any invalid parts of your document. |
3631 | - |
3632 | -*** Completion. nXML can assist you in entering an element name, |
3633 | -attribute name or data value by using information about what is |
3634 | -allowed by the schema in that context. |
3635 | - |
3636 | -** proced.el provides a Dired-like interface for operating on |
3637 | -processes. Proced makes an Emacs buffer containing a listing of the |
3638 | -current processes. You can use the normal Emacs commands to move |
3639 | -around in this buffer, and special Proced commands to operate on the |
3640 | -processes listed. It is currently only functional on GNU/Linux, |
3641 | -MS-Windows and Solaris. |
3642 | - |
3643 | -** Remember Mode is a mode for jotting down things to remember. |
3644 | -Notes can be saved to a Diary file. For details, see the Remember |
3645 | -Manual. |
3646 | - |
3647 | -** RST mode is a major mode for editing reStructuredText files. |
3648 | - |
3649 | -** Ruby mode is a major mode for Ruby files. |
3650 | - |
3651 | -** Visual Line mode provides support for editing by visual lines. |
3652 | -It turns on word-wrapping in the current buffer, and rebinds C-a, C-e, |
3653 | -and C-k to commands that operate by visual lines instead of logical |
3654 | -lines. This is a more reliable replacement for longlines-mode. |
3655 | -This can also be turned on using the menu bar, via |
3656 | -Options -> Line Wrapping in this Buffer -> Word Wrap |
3657 | - |
3658 | -** xesam.el is an implementation of Xesam, an interface to (desktop) |
3659 | -search engines like Beagle, Strigi, and Tracker. The Xesam API |
3660 | -requires D-Bus for communication. |
3661 | - |
3662 | -** zeroconf.el offers service discovery and service publishing |
3663 | -interfaces according to the zeroconf specification. It communicates |
3664 | -with Avahi, a zeroconf implementation, via D-Bus messages on systems |
3665 | -which have installed this software. |
3666 | - |
3667 | -** There is a new `whitespace' package. |
3668 | -(The pre-existing one has been renamed to `old-whitespace'.) |
3669 | -Now, besides reporting bogus blanks, the whitespace package has a |
3670 | -minor mode and a global minor mode to visualize blanks (TAB, (HARD) |
3671 | -SPACE and NEWLINE). The visualization is made via faces and/or display |
3672 | -table. It can also indicate lines that extend beyond a given column, |
3673 | -trailing blanks, and empty lines at the start or end of a buffer. |
3674 | -See `whitespace-style' for more details. The `whitespace-action' option |
3675 | -specifies what to do when a buffer is visited, killed, or written. |
3676 | - |
3677 | - |
3678 | |
3679 | -* Changes in Specialized Modes and Packages in Emacs 23.1 |
3680 | - |
3681 | -** Abbrev has been rewritten in Elisp and extended with more flexibility. |
3682 | - |
3683 | -*** New functions: abbrev-get, abbrev-put, abbrev-table-get, abbrev-table-put, |
3684 | -abbrev-table-p, abbrev-insert, abbrev-table-menu. |
3685 | - |
3686 | -*** Special hook `abbrev-expand-functions' obsoletes `pre-abbrev-expand-hook'. |
3687 | - |
3688 | -*** `make-abbrev-table', `define-abbrev', `define-abbrev-table' all take |
3689 | -extra arguments for arbitrary properties. |
3690 | - |
3691 | -*** New variable `abbrev-minor-mode-table-alist'. |
3692 | - |
3693 | -*** `local-abbrev-table' can hold a list of abbrev-tables. |
3694 | - |
3695 | -*** Abbrevs have now the following special properties: |
3696 | -`:count', `:system', `:enable-function', `:case-fixed'. |
3697 | - |
3698 | -*** Abbrev-tables have now the following special properties: |
3699 | -`:parents', `:case-fixed', `:enable-function', `:regexp', |
3700 | -`abbrev-table-modiff'. |
3701 | - |
3702 | -** Apropos |
3703 | - |
3704 | -*** `apropos-library' describes the elements defined in a given library. |
3705 | - |
3706 | -*** Set `apropos-compact-layout' is you want a more compact (but wider) layout. |
3707 | - |
3708 | -** Archive Mode has basic support to browse Rar archives. |
3709 | -Note, however, that the free version of the unrar command only handles |
3710 | -versions 1 and 2 of the Rar format. |
3711 | - |
3712 | -** BibTeX mode |
3713 | - |
3714 | -*** New command `bibtex-initialize' (re)initializes BibTeX buffers. |
3715 | - |
3716 | -*** New `bibtex-entry-format' options `whitespace', `braces', and |
3717 | -`string', disabled by default. |
3718 | - |
3719 | -*** New variable `bibtex-cite-matcher-alist' contains rules to |
3720 | -identify cited keys in BibTeX entries, used by `bibtex-find-crossref'. |
3721 | - |
3722 | -*** Command `bibtex-url' allows multiple URLs per entry. |
3723 | - |
3724 | -** Bookmarks |
3725 | - |
3726 | -*** bookmark.el saves bookmarks in a pre-Emacs-23-incompatible file format |
3727 | -bookmark.el can read a .emacs.bmk file saved by an older Emacs, but an |
3728 | -older Emacs cannot read one saved by Emacs 23. |
3729 | - |
3730 | -** Calendar and diary |
3731 | - |
3732 | -*** There is a new date style, `iso', essentially year/month/day. |
3733 | -The variable `european-calendar-style' is obsolete - use `calendar-date-style'. |
3734 | -Similarly, the commands `american-calendar' and `european-calendar' |
3735 | -should be replaced by `calendar-set-date-style'. |
3736 | - |
3737 | -*** The calendar namespace has been rationalized. |
3738 | -All functions and variables now begin with a `calendar-', `diary-', or |
3739 | -`holiday-' prefix. The various calendar systems have secondary |
3740 | -prefixes, eg `calendar-french-'. The old names you are likely to use |
3741 | -directly still exist, for the time being, as aliases, but please start |
3742 | -using the new names. |
3743 | - |
3744 | -*** The whitespace in the calendar layout can be customized. |
3745 | -See the variables: |
3746 | -calendar-left-margin, calendar-intermonth-spacing, calendar-column-width, |
3747 | -calendar-day-header-width, and calendar-day-digit-width. |
3748 | - |
3749 | -*** Text (e.g. ISO weeks) can be displayed between the calendar months. |
3750 | -See the variables calendar-intermonth-header and calendar-intermonth-text. |
3751 | - |
3752 | -*** The function `holiday-chinese' computes holidays on the Chinese calendar. |
3753 | -It has been used to add items to the list `holiday-oriental-holidays'. |
3754 | - |
3755 | -*** `diary-remind' accepts a negative number -DAYS as a shorthand for |
3756 | -the list (1 2 ... DAYS). |
3757 | - |
3758 | -** Change Log mode |
3759 | - |
3760 | -*** The new command C-c C-f (change-log-find-file) finds the file |
3761 | -associated with the current log entry. |
3762 | - |
3763 | -*** The new command C-c C-c (change-log-goto-source) goes to the |
3764 | -source code associated with a log entry. |
3765 | - |
3766 | -** Compile and grep modes |
3767 | - |
3768 | -*** The mode-line entry for the *compilation* and *grep* buffer is color coded. |
3769 | -It has different colors for to show that: (a) the command is still |
3770 | -running, (b) successful completion, (c) error. |
3771 | - |
3772 | -*** compilation-auto-jump-to-first-error tells `compile' to jump to |
3773 | -the first error encountered during compilations. |
3774 | - |
3775 | -*** compilation-scroll-output accepts a new value, `first-error', which |
3776 | -says to stop auto scrolling at the first error that occurs. |
3777 | - |
3778 | -*** The `cc' alias for C++ files in `grep-file-aliases' has been |
3779 | -improved. `hh' can be used to match C++ header files and `cchh' both |
3780 | -C++ sources and headers. |
3781 | - |
3782 | -** Copyright |
3783 | - |
3784 | -*** You can specify your copyright holders' names. |
3785 | -Only copyright lines with holders matching `copyright-names-regexp' are |
3786 | -considered for update. |
3787 | - |
3788 | -*** Copyrights can be at the end of the buffer. |
3789 | -This is controlled by `copyright-at-end-flag' (used by, e.g., change-log-mode). |
3790 | - |
3791 | -** Custom |
3792 | - |
3793 | -*** defcustom accepts new keyword arguments, `:safe' and `:risky', which |
3794 | -set a variable's `safe-local-variable' and `risky-local-variable' property. |
3795 | - |
3796 | -** Diff mode |
3797 | - |
3798 | -*** diff-refine-hunk highlights word-level details of changes in a diff hunk. |
3799 | -It's used automatically as you move through hunks, see |
3800 | -diff-auto-refine-mode. It is bound to `C-c C-b'. |
3801 | - |
3802 | -*** diff-add-change-log-entries-other-window iterates through the diff |
3803 | -buffer and tries to create ChangeLog entries for each change. |
3804 | -It is bound to `C-x 4 A'. |
3805 | - |
3806 | -*** Turning on `whitespace-mode' in a diff buffer will show trailing |
3807 | -whitespace problems in the modified lines. |
3808 | - |
3809 | -** Dired |
3810 | - |
3811 | -*** In Dired, C-x C-q now runs the command wdired-change-to-wdired-mode, |
3812 | -and C-x C-q in wdired-mode exits it with asking a question about |
3813 | -saving changes. |
3814 | - |
3815 | -*** `&' runs the command `dired-do-async-shell-command' that executes |
3816 | -the command asynchronously without the need to manually add ampersand |
3817 | -to the end of the command. Its output appears in the buffer `*Async Shell |
3818 | -Command*'. |
3819 | - |
3820 | -*** `M-s f C-s' and `M-s f M-C-s' run Isearch that matches only at file names. |
3821 | -When a new user option `dired-isearch-filenames' is t, then even ordinary |
3822 | -Isearch started with `C-s' and `C-M-s' matches only at file names in the |
3823 | -Dired buffer. When `dired-isearch-filenames' is `dwim' then activation of |
3824 | -file name Isearch depends on the position of point - if point is on a file |
3825 | -name initially, then Isearch matches only file names, otherwise it matches |
3826 | -everywhere in the Dired buffer. You can toggle file names matching on or |
3827 | -off by typing `M-s f' in Isearch mode. |
3828 | - |
3829 | -*** `M-s a C-s' and `M-s a M-C-s' run multi-file Isearch on the marked files. |
3830 | -They visit the first marked file in the sequence and display the usual Isearch |
3831 | -prompt for a string or a regexp where all Isearch commands are available. |
3832 | - |
3833 | -*** `Q' in Dired provides two new keys for multi-file replacement. |
3834 | -The upper case key `Y' replaces all remaining matches in all remaining files |
3835 | -with no more questions. The upper case key `N' stops doing replacements |
3836 | -in the current file and skips to the next file. These multi-file keys |
3837 | -are available for all commands that use `tags-query-replace' |
3838 | -including `dired-do-query-replace-regexp', `vc-dir-query-replace-regexp', |
3839 | -`reftex-query-replace-document'. |
3840 | - |
3841 | -** Fortran |
3842 | - |
3843 | -*** The line length of fixed-form Fortran is not fixed at 72 any more. |
3844 | -Customize the variable `fortran-line-length' to change it. |
3845 | - |
3846 | -*** In Fortran mode, M-; is now bound to the standard comment-dwim, |
3847 | -rather than fortran-indent-comment. |
3848 | - |
3849 | -*** (The increasingly misnamed) F90 mode supports Fortran 2003 syntax. |
3850 | - |
3851 | -** Gnus |
3852 | - |
3853 | -*** The Gnus package has been updated |
3854 | -There are many new features, bug fixes and improvements; see the file |
3855 | -GNUS-NEWS or the node "No Gnus" in the Gnus manual for details. |
3856 | - |
3857 | -*** In Emacs 23, Gnus uses Emacs' new internal coding system `utf-8-emacs' for |
3858 | -saving articles, drafts, and ~/.newsrc.eld. These file may not be read |
3859 | -correctly in Emacs 22 and below. If you want to Gnus across different Emacs |
3860 | -versions, you may set `mm-auto-save-coding-system' to `emacs-mule'. |
3861 | - |
3862 | -*** Passwords are consistently loaded through `auth-source' |
3863 | -Gnus can use `auth-source' for POP and IMAP passwords. Also see that |
3864 | -`smtpmail' and `url' support `auth-source' for SMTP and HTTP/HTTPS/RSS |
3865 | -authentication respectively. |
3866 | - |
3867 | -** Help mode |
3868 | - |
3869 | -*** New macro `with-help-window' should set up help windows better |
3870 | -than `with-output-to-temp-buffer' with `print-help-return-message'. |
3871 | - |
3872 | -*** New option `help-window-select' permits to customize whether help |
3873 | -window shall be automatically selected when invoking help. |
3874 | - |
3875 | -*** New variable `help-window-point-marker' permits one to specify a new |
3876 | -position for point in help window (for example in `view-lossage'). |
3877 | - |
3878 | -** Isearch |
3879 | - |
3880 | -*** New command `isearch-forward-word' bound globally to `M-s w' starts |
3881 | -incremental word search. New command `isearch-toggle-word' bound to the |
3882 | -same key `M-s w' in Isearch mode toggles word searching on or off |
3883 | -while Isearch is active. |
3884 | - |
3885 | -*** New command `isearch-highlight-regexp' bound to `M-s h r' in Isearch |
3886 | -mode runs `highlight-regexp' (`hi-lock-face-buffer') with the current |
3887 | -search string as its regexp argument. The same key `M-s h r' and |
3888 | -other keys on the `M-s h' prefix are bound globally to the command |
3889 | -`highlight-regexp' and other hi-lock commands. |
3890 | - |
3891 | -*** New command `isearch-occur' bound to `M-s o' in Isearch mode |
3892 | -runs `occur' with the current search string. The same key `M-s o' |
3893 | -is bound globally to the command `occur'. |
3894 | - |
3895 | -*** Isearch can now search through multiple ChangeLog files. |
3896 | -When running Isearch in a ChangeLog file, if the search fails, |
3897 | -then another C-s tries searching the previous ChangeLog, |
3898 | -if there is one (e.g. going from ChangeLog to ChangeLog.12). |
3899 | -This is enabled if multi-isearch-search is non-nil. |
3900 | - |
3901 | -*** Two new commands to start Isearch on a list of marked buffers |
3902 | -for buff-menu.el and ibuffer.el are bound to the keys `M-s a C-s' and |
3903 | -`M-s a M-C-s'. |
3904 | - |
3905 | -*** The part of an Isearch that failed to match is highlighted in |
3906 | -`isearch-fail' face. |
3907 | - |
3908 | -*** `C-h C-h' in Isearch mode displays isearch-specific Help screen, |
3909 | -`C-h b' displays all Isearch key bindings, `C-h k' displays the full |
3910 | -documentation of the given Isearch key sequence, `C-h m' displays |
3911 | -documentation for Isearch mode. All the other Help commands exit |
3912 | -Isearch mode and execute their global definitions. |
3913 | - |
3914 | -*** When started in the minibuffer, Isearch searches in the minibuffer |
3915 | -history. See `Minibuffer changes', above. |
3916 | - |
3917 | -** MH-E |
3918 | - |
3919 | -*** Upgraded to MH-E version 8.2. See MH-E-NEWS for details. |
3920 | - |
3921 | -** Python |
3922 | -*** The file etc/emacs.py now supports both Python 2 and 3, meaning |
3923 | -that either version can be used as inferior Python by python.el. |
3924 | - |
3925 | -*** Python mode now has `pdbtrack' functionality. When using pdb to |
3926 | -debug a Python program, pdbtrack notices the pdb prompt and displays |
3927 | -the source file and line that the program is stopped at, much the same |
3928 | -way as gud-mode does for debugging C programs with gdb. |
3929 | - |
3930 | -** Recentf |
3931 | - |
3932 | -*** The default value of `recentf-keep' prevents from checking of |
3933 | -remote files, if there is no established connection to the |
3934 | -corresponding remote host. |
3935 | - |
3936 | -** Rmail |
3937 | - |
3938 | -*** Rmail no longer converts the messages to Babyl format. |
3939 | -Instead, it uses UNIX mbox format, both on disk and in Rmail buffers, |
3940 | -and does conversion and decoding when a message is displayed. |
3941 | - |
3942 | -The first time you visit an Rmail file in Babyl format, Rmail |
3943 | -automatically converts it to mbox format. This is a one-time |
3944 | -conversion, but it can take a few minutes, depending on how fast is |
3945 | -your machine and on the size of the file. You should find the rest of |
3946 | -Rmail usage unaltered. |
3947 | - |
3948 | -However, M-x set-rmail-inbox-list now lasts only for one session |
3949 | -because there is no way to save the list of inbox files in an |
3950 | -mbox-format file. |
3951 | - |
3952 | -Also, whereas with Babyl format M-x find-file would switch to Rmail |
3953 | -mode, with mbox format this is no longer the case (there being no way |
3954 | -to add an "-*- rmail-*-" cookie to an mbox file). Use C-u M-x rmail |
3955 | -instead. |
3956 | - |
3957 | -If you have written any extensions to Rmail, they are likely to need |
3958 | -updating. Conceptually, the Rmail buffer that you see is no longer |
3959 | -just a narrowed portion of the whole. So you cannot access the whole |
3960 | -of a message (or message collection) by a simple save-restriction and |
3961 | -widen. Instead, there are two buffers: the rmail-buffer, and the |
3962 | -rmail-view-buffer. The former is the buffer that you see, the latter |
3963 | -is invisible. Most of the time, the invisible `view' buffer contains |
3964 | -the full contents of the Rmail file, and the Rmail buffer contains a |
3965 | -decoded copy of the current message (with only a subset of the |
3966 | -headers). In this state, Rmail is said to be `swapped'. |
3967 | - |
3968 | -You may find the following functions useful: |
3969 | - |
3970 | -`rmail-get-header' and `rmail-set-header' get or set the value of a |
3971 | -message header, whether or not it is currently visible. |
3972 | - |
3973 | -`rmail-apply-in-message' is a general purpose function that calls a |
3974 | -function (with arguments) which you specify on the full text of a given |
3975 | -message. To further narrow to just the headers, search forward for "\n\n". |
3976 | - |
3977 | -*** The new command `rmail-mime' displays MIME messages. |
3978 | -It is bound to `v' in Rmail buffers and summaries. It displays plain |
3979 | -text and multipart messages in a temporary buffer, and offers buttons |
3980 | -to save attachments. |
3981 | - |
3982 | -*** The command `rmail-redecode-body' no longer accepts the optional arg RAW. |
3983 | -Since Rmail now holds messages in their original undecoded form in a |
3984 | -separate buffer, `rmail-redecode-body' no longer encodes the original |
3985 | -message, and therefore there should be no need to avoid encoding it. |
3986 | - |
3987 | -*** The o command is now `rmail-output'. It is an all-purpose command |
3988 | -for copying messages from Rmail and appending them to files. It |
3989 | -handles Babyl-format files as well as mbox-format files, and it |
3990 | -handles both kinds properly when they are visited in Emacs. It always |
3991 | -copies the full headers of the message. |
3992 | - |
3993 | -*** The C-o command is now `rmail-output-as-seen'. It uses |
3994 | -the message as displayed, appending it to an mbox file. |
3995 | - |
3996 | -*** The modified status of the Rmail buffer is reported in the mode-line. |
3997 | -Previously, this information was hidden. |
3998 | - |
3999 | -** TeX modes |
4000 | - |
4001 | -*** New option latex-indent-within-escaped-parens |
4002 | -permits to customize indentation of LaTeX environments delimited |
4003 | -by escaped parens. |
4004 | - |
4005 | -** T-mouse Mode |
4006 | - |
4007 | -*** If the gpm mouse server is running and t-mouse-mode is enabled, |
4008 | -Emacs uses a Unix socket in a GNU/Linux console to talk to server, |
4009 | -rather than faking events using the client program mev. This C level |
4010 | -approach provides mouse highlighting and help echoing in the |
4011 | -minibuffer. |
4012 | - |
4013 | -** Tramp |
4014 | - |
4015 | -*** New connection methods. |
4016 | -The new methods "plinkx", "plink2", "psftp", "sftp" and "fish" have |
4017 | -been introduced. There are also new so-called gateway methods |
4018 | -"tunnel" and "socks". |
4019 | - |
4020 | -*** IPv6 addresses. |
4021 | -IPv6 addresses are supported now as host names. They must be embedded |
4022 | -in square brackets, like in "/ssh:[::1]:". |
4023 | - |
4024 | -*** Multihop syntax has been removed. |
4025 | -The pseudo-method "multi" has been removed. Instead, multi hops |
4026 | -can be specified by the new variable `tramp-default-proxies-alist'. |
4027 | - |
4028 | -*** More default settings. |
4029 | -Default values can be set via the variables `tramp-default-user', |
4030 | -`tramp-default-user-alist' and `tramp-default-host'. |
4031 | - |
4032 | -*** Connection information is cached. |
4033 | -In order to reduce connection setup, information about used |
4034 | -connections is kept persistently in a file. The name of this file is |
4035 | -defined in the variable `tramp-persistency-file-name'. |
4036 | - |
4037 | -*** Control of remote processes. |
4038 | -Running processes on a remote host can be controlled by settings in |
4039 | -`tramp-remote-path' and `tramp-remote-process-environment'. |
4040 | - |
4041 | -*** Success of remote copy is checked. |
4042 | -When the variable `file-precious-flag' is set, the success of a remote |
4043 | -file copy is checked via the file's checksum. |
4044 | - |
4045 | -*** Passwords can be read from an authentification file. |
4046 | -Tramp uses the package `auth-source' to read passwords from a file, if |
4047 | -necessary. |
4048 | - |
4049 | -** VC and related modes |
4050 | - |
4051 | -*** VC now supports applying VC operations to a set of files at a time. |
4052 | -This enables VC to work much more effectively with changeset-oriented |
4053 | -version-control systems such as Subversion, GNU Arch, Mercurial, Git |
4054 | -and Bzr. VC will now pass a multiple-file commit to these systems as |
4055 | -a single changeset. |
4056 | - |
4057 | -*** vc-dir is a new command that displays file names and their VC |
4058 | -status. It allows to apply various VC operations to a file, a |
4059 | -directory or a set of files/directories. |
4060 | - |
4061 | -*** VC switches are no longer appended, rather the first non-nil value is used. |
4062 | -(This was for the most part true in Emacs 22, but was not advertised). |
4063 | -This is because there is an increasing variety of VC systems, and they |
4064 | -do not all accept the same "common" options. For example, a CVS diff |
4065 | -command used to append the values of `vc-cvs-diff-switches', |
4066 | -`vc-diff-switches', and `diff-switches'. Now the first non-nil value |
4067 | -from that sequence is used. The special value `t' means "no switches". |
4068 | - |
4069 | -*** Clicking on the VC mode-line entry now pops the VC menu. |
4070 | - |
4071 | -*** The VC mode-line entry now has a tooltip that explains the VC file status. |
4072 | - |
4073 | -*** In VC Annotate mode, the key bindings have changed to use lower |
4074 | -case keys instead of the upper case keys used in the past. |
4075 | - |
4076 | -*** In VC Annotate mode, for VC systems that support changesets, you can |
4077 | -see the diff for the whole changeset (not only for the current file) |
4078 | -by typing the D key. Using the "Show changeset diff of revision at |
4079 | -line" menu entry does the same thing. |
4080 | - |
4081 | -*** In VC Annotate mode, you can type v to toggle the annotation visibility. |
4082 | - |
4083 | -*** In VC Annotate mode, you can type f to show the file revision on |
4084 | -the current line. |
4085 | - |
4086 | -*** Asynchronous VC commands display [Waiting...] in the mode-line |
4087 | -of the corresponding buffer as long as the asynchronous process is |
4088 | -active. |
4089 | - |
4090 | -*** Log entries can be modified using the key "e" in log-view. |
4091 | -For now only CVS, RCS, SCCS and SVN support this functionality. |
4092 | -This is done by the `modify-change-comment' backend function. |
4093 | - |
4094 | -*** In log-view-mode, for VC systems that support changesets, you can |
4095 | -see the diff for the whole changeset (not only for the current file) |
4096 | -by typing the D key or using the "Changeset Diff" menu entry. |
4097 | - |
4098 | -*** In Log Edit mode, C-c C-d now shows the diff for the files involved. |
4099 | - |
4100 | -*** vc-git supports the "git grep" command. |
4101 | - |
4102 | -*** VC Support for Meta-CVS has been removed for lack of a maintainer able |
4103 | -to update it to the new VC. |
4104 | - |
4105 | -** Miscellaneous |
4106 | - |
4107 | -*** comint-mode uses `start-file-process' now (see Lisp Changes). |
4108 | -If `default-directory' is a remote file name, subprocesses are started |
4109 | -on the corresponding remote system. |
4110 | - |
4111 | -*** Eldoc highlights the function argument under point |
4112 | -with the face `eldoc-highlight-function-argument'. |
4113 | - |
4114 | -*** In Etags, the --members option is now the default. |
4115 | -Use --no-members if you want the old default behavior of not tagging |
4116 | -struct members in C, members variables in C++ and variables in PHP. |
4117 | - |
4118 | -*** The `gdb' command only works with the graphical interface now. |
4119 | -Use `gud-gdb' if you want the (old) text command mode. |
4120 | - |
4121 | -*** goto-address.el provides two new minor modes, goto-address-mode and |
4122 | -goto-address-prog-mode, which buttonize URLS and email addresses. |
4123 | - |
4124 | -*** The new command `eshell/info' runs info in an eshell buffer. |
4125 | - |
4126 | -*** The new variable `ffap-rfc-directories' specifies a list of local |
4127 | -directories in which `ffap-rfc' will first search for RFCs. |
4128 | - |
4129 | -*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them. |
4130 | -See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'. |
4131 | - |
4132 | -*** `icomplete-prospects-height' now supersedes `icomplete-prospects-length'. |
4133 | - |
4134 | -*** Info displays breadcrumbs in the header of the page. |
4135 | -See Info-breadcrumbs-depth to control it. |
4136 | - |
4137 | -*** net-utils has an `iwconfig' command, similar to the existing `ifconfig'. |
4138 | -It is used to configure wireless interfaces. |
4139 | - |
4140 | -*** The pcmpl-unix package supports hostname completion for ssh and scp. |
4141 | - |
4142 | -*** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs. |
4143 | - |
4144 | -*** smerge-refine highlights word-level details of changes in conflict. |
4145 | -It's used automatically as you move through conflicts, see |
4146 | -smerge-auto-refine-mode. |
4147 | - |
4148 | -*** talk.el has been extended for multiple tty support. |
4149 | - |
4150 | -*** A new command `display-time-world' has been added to the Time |
4151 | -package. It creates a buffer with an updating time display using |
4152 | -several time zones. |
4153 | - |
4154 | -*** The appearance of superscript and subscript in TeX is more customizable. |
4155 | -See the documentation of the variables: tex-fontify-script, |
4156 | -tex-font-script-display, tex-suscript-height-ratio, and |
4157 | -tex-suscript-height-minimum. |
4158 | - |
4159 | -*** view-remove-frame-by-deleting is now by default t |
4160 | -since users found iconification of view-mode frames distracting. |
4161 | - |
4162 | -*** WoMan tries to add locale-specific manual page directories to the |
4163 | -search path. This can be disabled by setting `woman-locale' to nil. |
4164 | - |
4165 | - |
4166 | |
4167 | -* Changes in Emacs 23.1 on non-free operating systems |
4168 | - |
4169 | -** Case is now considered significant in completion on MS-Windows. |
4170 | -The default value of `completion-ignore-case' is now nil on |
4171 | -MS-Windows, the same as it is for other operating systems. The |
4172 | -variable doesn't apply to reading a file name -- in that case Emacs |
4173 | -heeds `read-file-name-completion-ignore-case' instead. |
4174 | - |
4175 | -** IPv6 is supported on MS-Windows. |
4176 | -Emacs now supports IPv6 on Windows XP and later, and earlier versions |
4177 | -of Windows with third party IPv6 stacks installed. In Emacs 22, IPv6 was |
4178 | -supported on other platforms, but not on Windows due to using the winsock |
4179 | -1.1 header file, even though Emacs was linking to the winsock 2 library. |
4180 | - |
4181 | -** Busy cursor (hourglass) now displays on MS-Windows. |
4182 | -When Emacs is busy, an hourglass mouse cursor is displayed on Windows. |
4183 | -In Emacs 22 only X supported the busy cursor. |
4184 | - |
4185 | -** Battery status is available on MS-Windows |
4186 | -Emacs can now display the battery status in the mode-line when enabled with |
4187 | -display-battery-mode or from the Options menu. More verbose battery |
4188 | -information is also available with the command `battery'. In Emacs 22 |
4189 | -battery status was supported only on GNU/Linux and Mac. |
4190 | - |
4191 | -** More keys available on MS-Windows. |
4192 | -Keys normally associated with IMEs, and some exotic keys not normally found |
4193 | -on standard keyboards have been given names so they can be bound to functions |
4194 | -inside Emacs. If there are keys on your keyboard that have not been exposed |
4195 | -to Emacs in the past, try C-h k to see if they are available now. |
4196 | - |
4197 | -Emacs can now bind functions to the extra buttons for media player and |
4198 | -browser control present on some keyboards. These buttons are disabled |
4199 | -by default, since enabling them prevents their system-wide use when |
4200 | -Emacs has focus. To enable them, set the variable |
4201 | -w32-pass-multimedia-buttons to nil. See the doc string of that variable |
4202 | -for the list of extra keys that are available. |
4203 | - |
4204 | -** BDF fonts no longer supported on MS-Windows. |
4205 | -The font backend was completely rewritten for this release. The focus |
4206 | -on Windows has been getting acceptable performance and full unicode |
4207 | -support, including complex script shaping for native Windows fonts. A |
4208 | -rewrite of the BDF font support has not happened due to lack of time |
4209 | -and developers. If demand still exists for such a backend even with |
4210 | -the improved language support for native Windows fonts, future |
4211 | -development in this direction will most likely be based on the |
4212 | -freetype library, giving access to a wider range of font formats. |
4213 | - |
4214 | - |
4215 | |
4216 | -* Incompatible Lisp Changes in Emacs 23.1 |
4217 | - |
4218 | -** Variables cannot be both buffer-local and frame-local any more. |
4219 | - |
4220 | -** `functionp' returns nil for special forms. |
4221 | -I.e., it only returns t for objects that can be passed to `funcall'. |
4222 | - |
4223 | -** The behavior of map-char-table has changed. It may call the |
4224 | -specified function with a cons (FROM . TO) as a key if characters in |
4225 | -that range have the same value. |
4226 | - |
4227 | -** Process changes |
4228 | - |
4229 | -*** The function `dired-call-process' has been removed. |
4230 | - |
4231 | -*** The multibyteness of process filters is now determined by the |
4232 | -coding-system used for decoding. The functions |
4233 | -`process-filter-multibyte-p' and `set-process-filter-multibyte' are |
4234 | -obsolete. |
4235 | - |
4236 | -** The variable `byte-compile-warnings' can now be a list starting with `not', |
4237 | -meaning to disable the specified warnings. The meaning of this list |
4238 | -may therefore be the reverse of what you expect (of course, this is |
4239 | -only an issue if you make use of the new `not' syntax). Rather than |
4240 | -checking/manipulating elements directly, use the new functions |
4241 | -`byte-compile-warning-enabled-p', `byte-compile-disable-warning', and |
4242 | -`byte-compile-enable-warning.' |
4243 | - |
4244 | -** `mode-name' is no longer guaranteed to be a string. |
4245 | -Use `(format-mode-line mode-name)' to ensure a string value. |
4246 | - |
4247 | -** The function x-font-family-list has been removed. |
4248 | -Use the new function font-family-list (see Lisp Changes, below). |
4249 | - |
4250 | -** Internationalization changes |
4251 | - |
4252 | -*** The value of the function `charset-id' is now always 0. |
4253 | - |
4254 | -*** The functions `register-char-codings' and `coding-system-spec' |
4255 | -have been removed. |
4256 | - |
4257 | -*** The cpXXX coding systems are now supported automatically. |
4258 | -The functions cp-...-codepage, which you had to use in Emacs 22 to |
4259 | -enable support for these coding systems, have been deleted. |
4260 | - |
4261 | -*** The following features have been removed. They were used for |
4262 | -displaying various scripts with specific fonts, and are no longer |
4263 | -needed now that OpenType font support is available: |
4264 | - |
4265 | -**** `devanagari' and `devan-util', and all associated devanagari-* and |
4266 | -dev-* functions and variables (formerly used for Devanagari script). |
4267 | - |
4268 | -**** `kannada' and `knd-util', and all associated kannada-* and knd-* |
4269 | -functions and variables (formerly used for Kannada script). |
4270 | - |
4271 | -**** `malayalam' and `mlm-util', and all associated malayalam-* and |
4272 | -mlm-* functions and variables (formerly used for Malayalam script). |
4273 | - |
4274 | -**** `tamil' and `tml-util, and all associated tamil-* and tml-* |
4275 | -functions and variables (formerly used for Tamil script). |
4276 | - |
4277 | -*** The meaning of NAME argument of `set-fontset-font' is changed. |
4278 | -Previously nil is accepted as the default fontset. Now, nil is for |
4279 | -the fontset of the selected frame and t is for the default fontset. |
4280 | - |
4281 | -*** The meaning of FONTSET argument of `print-fontset' is changed. |
4282 | -Now, nil is for the fontset of the selected frame and t is for the |
4283 | -default fontset. |
4284 | - |
4285 | -** If a function in write-region-annotate-functions returns with a |
4286 | -different buffer current, Emacs no longer kills that buffer |
4287 | -automatically. This behavior existed in previous versions of Emacs, |
4288 | -but was undocumented. To kill a buffer after write-region, give the |
4289 | -variable `write-region-post-annotation-function' a buffer-local value |
4290 | -of `kill-buffer'. |
4291 | - |
4292 | -** The variable temp-file-name-pattern has been removed. |
4293 | -This variable was only used by call-process-region, which now uses |
4294 | -temporary-file-directory instead. |
4295 | - |
4296 | -** The COUNT and SYSTEM-FLAG arguments to define-abbrev have been |
4297 | -removed. The function now takes extra arguments for specifying |
4298 | -arbitrary abbrev properties. |
4299 | - |
4300 | -** end-of-defun-function is now guaranteed to work only when called |
4301 | -from the start of a defun. It must now leave point exactly at the end |
4302 | -of defun, since `end-of-defun' now itself moves forward over |
4303 | -whitespace after calling it. |
4304 | - |
4305 | - |
4306 | |
4307 | -* Lisp Changes in Emacs 23.1 |
4308 | - |
4309 | -** The new variable `generate-autoload-cookie' controls the magic comment |
4310 | -string used by `update-file-autoloads' to find autoloaded forms. The |
4311 | -variable `generated-autoload-file' similarly controls the name of the |
4312 | -file where `update-file-autoloads' writes the calls to `autoload'. |
4313 | -The default values are ";;;###autoload" and `loaddefs.el', |
4314 | -respectively. |
4315 | - |
4316 | -** New primitives `list-system-processes' and `process-attributes' |
4317 | -let Lisp programs access the processes that are running on the local |
4318 | -machine. See the doc strings of these functions for more details. |
4319 | -Not all platforms support accessing this information; on those that |
4320 | -don't, these primitives will return nil. |
4321 | - |
4322 | -** New variable `user-emacs-directory'. |
4323 | -Use this instead of "~/.emacs.d". |
4324 | - |
4325 | -** If a local hook function has a non-nil `permanent-local-hook' |
4326 | -property, `kill-all-local-variables' does not remove it from the local |
4327 | -value of the hook variable; it remains even if you change major modes. |
4328 | - |
4329 | -** `frame-inherited-parameters' lets new frames inherit parameters from |
4330 | -the selected frame. |
4331 | - |
4332 | -** New keymap `input-decode-map' overrides like key-translation-map, but |
4333 | -applies before function-key-map. Also it is terminal-local contrary to |
4334 | -key-translation-map. Terminal-specific key-sequences are generally added to |
4335 | -this map rather than to function-key-map now. |
4336 | - |
4337 | -** `ignore-errors' is now a standard macro (does not require the CL package). |
4338 | - |
4339 | -** `interprogram-paste-function' can now return one string or a list |
4340 | -of strings. In the latter case, Emacs puts the second and following |
4341 | -strings on the kill ring. |
4342 | - |
4343 | -** In `condition-case', a handler can specify "let the debugger run first". |
4344 | -You do this by writing `debug' in the list of conditions to be handled, |
4345 | -like this: |
4346 | - |
4347 | - (condition-case nil |
4348 | - (foo bar) |
4349 | - ((debug error) nil)) |
4350 | - |
4351 | -** clone-indirect-buffer now runs the clone-indirect-buffer-hook. |
4352 | - |
4353 | -** `beginning-of-defun-function' now takes one argument, the count given to |
4354 | -`beginning-of-defun'. (N.B. `end-of-defun-function' doesn't take any |
4355 | -arguments.) |
4356 | - |
4357 | -** `file-remote-p' has new optional parameters IDENTIFICATION and CONNECTED. |
4358 | -IDENTIFICATION specifies which part of the remote identifier has to be |
4359 | -returned. With CONNECTED passed non-nil, it is checked whether a |
4360 | -remote connection has been established already. |
4361 | - |
4362 | -** The new macro `declare-function' suppresses compiler warnings about |
4363 | -undefined functions. |
4364 | - |
4365 | -** Changes to interactive function handling |
4366 | - |
4367 | -*** The new interactive spec code ^ says to first call |
4368 | -handle-shift-selection if shift-select-mode is non-nil, before reading |
4369 | -the command arguments. This is used for shift-selection (see above). |
4370 | - |
4371 | -*** Built-in functions can now have an interactive specification that |
4372 | -is not a prompt string. If the `intspec' parameter of a `DEFUN' |
4373 | -starts with a `(', the string is evaluated as a Lisp form. |
4374 | - |
4375 | -*** The interactive-form of a function can be added post-facto via the |
4376 | -`interactive-form' symbol property. Mostly useful to add complex |
4377 | -interactive forms to subroutines. |
4378 | - |
4379 | -** Region changes |
4380 | - |
4381 | -*** Commands should use `use-region-p' to test whether there is |
4382 | -an active region that they should operate on. |
4383 | - |
4384 | -*** `region-active-p' returns non-nil when Transient Mark mode is |
4385 | -enabled and the mark is active. Most commands that act specially on |
4386 | -the active region in Transient Mark mode should use `use-region-p' |
4387 | -instead of `region-active-p', because `use-region-p' obeys the new |
4388 | -user option `use-empty-active-region' (see Editing Changes, above). |
4389 | - |
4390 | -*** If a command sets `transient-mark-mode' to (only . OLDVAL), that |
4391 | -means to activate transient-mark-mode temporarily, until the next |
4392 | -unshifted point motion command or mark deactivation. Afterwards, |
4393 | -reset transient-mark-mode to the value OLDVAL. The values `only' and |
4394 | -`identity', introduced in Emacs 22, are now deprecated. |
4395 | - |
4396 | -** Emacs session information |
4397 | - |
4398 | -*** The new variables `before-init-time' and `after-init-time' record the |
4399 | -value of `current-time' before and after Emacs loads the init files. |
4400 | - |
4401 | -*** The new function `emacs-uptime' returns the uptime of an Emacs instance. |
4402 | - |
4403 | -*** The new function `emacs-init-time' returns the duration of the |
4404 | -Emacs initialization. |
4405 | - |
4406 | -** Changes affecting display-buffer |
4407 | - |
4408 | -*** display-buffer tries to be smarter when splitting windows. |
4409 | -The new option split-window-preferred-function lets you specify your own |
4410 | -function to pop up new windows. Its default value split-window-sensibly |
4411 | -can split a window either vertically or horizontally, whichever seems |
4412 | -more suitable in the current configuration. You can tune the behavior |
4413 | -of split-window-sensibly by customizing split-height-threshold and the |
4414 | -new option split-width-threshold. Both options now take the value nil |
4415 | -to inhibit splitting in one direction. Setting split-width-threshold to |
4416 | -nil inhibits horizontal splitting and gets you the behavior of Emacs 22 |
4417 | -in this respect. In any case, display-buffer may now split the largest |
4418 | -window vertically even when it is not as wide as the containing frame. |
4419 | - |
4420 | -*** If pop-up-frames has the value `graphic-only', display-buffer only |
4421 | -makes a separate frame on graphic displays. |
4422 | - |
4423 | -*** select-frame and set-frame-selected-window have a new optional |
4424 | -argument NORECORD. If non-nil, this will avoid messing with the order |
4425 | -of recently selected windows and the buffer list. |
4426 | - |
4427 | -** Window parameters can now be defined. |
4428 | -These are analogous to frame parameters, but are associated with |
4429 | -individual windows. |
4430 | - |
4431 | -*** The new functions window-parameters, window-parameter, and |
4432 | -set-window-parameter are used to query and set window parameters. |
4433 | - |
4434 | -** Minibuffer and completion changes |
4435 | - |
4436 | -*** A list of default values can be specified for the DEFAULT argument of |
4437 | -functions `read-from-minibuffer', `read-string', `read-command', |
4438 | -`read-variable', `read-buffer', `completing-read'. Elements of this list |
4439 | -are available for inserting into the minibuffer by typing `M-n'. |
4440 | -For empty input these functions return the first element of this list. |
4441 | - |
4442 | -*** New function `read-regexp' uses the regexp history and some useful |
4443 | -regexp defaults (string at point, last Isearch/replacement regexp/string) |
4444 | -via M-n when reading a regexp in the minibuffer. |
4445 | - |
4446 | -*** minibuffer-local-must-match-filename-map is now named |
4447 | -minibuffer-local-filename-must-match-map. |
4448 | - |
4449 | -*** The `require-match' argument to `completing-read' accepts the new |
4450 | -values `confirm-only' and `confirm-after-completion'. |
4451 | - |
4452 | -** Search and replacement changes |
4453 | - |
4454 | -*** The regexp form \(?<num>:<regexp>\) specifies the group number explicitly. |
4455 | - |
4456 | -*** New function `match-substitute-replacement' returns the result of |
4457 | -`replace-match' without actually using it in the buffer. |
4458 | - |
4459 | -*** The new variable `replace-search-function' determines the function |
4460 | -to use for searching in query-replace and replace-string. The |
4461 | -function it specifies is called by `perform-replace' when its 4th |
4462 | -argument is nil. |
4463 | - |
4464 | -*** The new variable `replace-re-search-function' determines the |
4465 | -function to use for searching in `query-replace-regexp', |
4466 | -`replace-regexp', `query-replace-regexp-eval', and |
4467 | -`map-query-replace-regexp'. The function it specifies is called by |
4468 | -`perform-replace' when its 4th argument is non-nil. |
4469 | - |
4470 | -*** New keymap `search-map' bound to `M-s' provides global bindings |
4471 | -for search related commands. |
4472 | - |
4473 | -*** New keymap `multi-query-replace-map' contains additonal keys bound |
4474 | -to `automatic-all' and `exit-current' for multi-buffer interactive replacement. |
4475 | - |
4476 | -*** The variable `inhibit-changing-match-data', if non-nil, prevents |
4477 | -the search and match primitives from changing the match data. |
4478 | - |
4479 | -*** New functions `word-search-forward-lax' and `word-search-backward-lax'. |
4480 | -These are like `word-search-forward and `word-search-backward', except |
4481 | -that the end of the search string need not match a word boundary, |
4482 | -unless it ends in whitespace. |
4483 | - |
4484 | -** File handling changes |
4485 | - |
4486 | -*** set-file-modes is now interactive and can take the mode value in |
4487 | -symbolic notation thanks to auxiliary functions. |
4488 | - |
4489 | -*** file-local-variables-alist stores an alist of file-local |
4490 | -variables defined in the current buffer. |
4491 | - |
4492 | -** Face-remapping |
4493 | - |
4494 | -*** Each face can be remapped to a different face definition using the |
4495 | -variable `face-remapping-alist'. This is an alist that maps faces to |
4496 | -replacement definitions (which can be face names, lists of face names, |
4497 | -or attribute/value plists. If this variable is buffer-local, the |
4498 | -remapping occurs only in that buffer. |
4499 | - |
4500 | -*** text-scale-mode remaps the default face to a larger or smaller |
4501 | -size in the current buffer. This feature is used by the Buffer Face |
4502 | -menu and the new `C-x C-+', `C-x C--', and `C-x C-0' commands (see |
4503 | -Editing Changes, above). |
4504 | - |
4505 | -*** New functions: |
4506 | - |
4507 | -**** `face-remap-add-relative' adds a face remapping entry to the |
4508 | -current buffer. |
4509 | - |
4510 | -**** ``face-remap-remove-relative' removes a face remapping entry from |
4511 | -the current buffer. |
4512 | - |
4513 | -**** `face-remap-reset-base' restores a face to its global definition. |
4514 | - |
4515 | -**** `face-remap-set-base' sets the base remapping of a face. |
4516 | - |
4517 | -** Process changes |
4518 | - |
4519 | -*** The new function `start-file-process' is similar to `start-process', |
4520 | -but obeys file handlers. The file handler is chosen based on |
4521 | -`default-directory'. The functions `start-file-process-shell-command' |
4522 | -and `process-file-shell-command' are also new; they call internally |
4523 | -`start-file-process' and `process-file', respectively. |
4524 | - |
4525 | -*** The new function `process-lines' executes an external program and |
4526 | -returns its output as a list of lines. |
4527 | - |
4528 | -** Character code, representation, and charset changes. |
4529 | - |
4530 | -*** In multibyte buffers and strings, characters are represented by |
4531 | -UTF-8 byte sequences. The character code space is now 0x0..0x3FFFFF |
4532 | -with no gap; code points 0x0..0x10FFFF are Unicode characters of the |
4533 | -same code points, while code points 0x3FFF80..0x3FFFFF are raw 8-bit |
4534 | -bytes. |
4535 | - |
4536 | -*** Generic characters no longer exist. |
4537 | - |
4538 | -*** The concept of a charset has changed. A single character may |
4539 | -belong to multiple charsets (e.g. a-grave, U+00E0, belongs to charsets |
4540 | -unicode, iso-8859-1, iso-8859-3, etc). |
4541 | - |
4542 | -**** The dimension of a charset is now 1, 2, 3, or 4, and the size of |
4543 | -each dimension is no longer limited to 94 or 96. |
4544 | - |
4545 | -**** A dynamic charset priority list is used to infer the charset of |
4546 | -characters for display. |
4547 | - |
4548 | -*** The functions `split-char' and `make-char' now accept up to 4 |
4549 | -positional codes instead of just 2. |
4550 | - |
4551 | -*** The functions `encode-char' and `decode-char' now accept any character sets. |
4552 | - |
4553 | -*** The function `define-charset' now accepts a completely different |
4554 | -form of arguments (old-style arguments still work). |
4555 | - |
4556 | -*** The value of the function `char-charset' depends on the current |
4557 | -priorities of charsets. |
4558 | - |
4559 | -*** The function get-char-code-property now accepts many Unicode base |
4560 | -character properties. They are `name', `general-category', |
4561 | -`canonical-combining-class', `bidi-class', `decomposition', |
4562 | -`decimal-digit-value', `digit-value', `numeric-value', `mirrored', |
4563 | -`old-name', `iso-10646-comment', `uppercase', `lowercase', and |
4564 | -`titlecase'. |
4565 | - |
4566 | -*** The functions `modify-syntax-entry' and `modify-category-entry' now |
4567 | -accept a cons of characters as the first argument, and modify all |
4568 | -entries in that range of characters. |
4569 | - |
4570 | -*** Use of `translation-table-for-input' for character code unification |
4571 | -is now obsolete, since Emacs 23.1 and later uses Unicode as basis for |
4572 | -internal representation of characters. |
4573 | - |
4574 | -*** New functions: |
4575 | - |
4576 | -**** `characterp' returns t if and only if the argument is a character. |
4577 | -This replaces `char-valid-p', which is now obsolete. |
4578 | - |
4579 | -**** `max-char' returns the maximum character code (currently #x3FFFFF). |
4580 | - |
4581 | -**** `define-charset-alias' defines an alias of a charset. |
4582 | - |
4583 | -**** `set-charset-priority' sets priorities of charsets. |
4584 | - |
4585 | -**** `charset-priority-list' returns a prioritized list of charsets. |
4586 | - |
4587 | -**** `unibyte-string' makes a unibyte string from bytes. |
4588 | - |
4589 | -**** `define-char-code-property' defines a character code property. |
4590 | - |
4591 | -**** `char-code-property-description' returns the description string of |
4592 | -a character code property. |
4593 | - |
4594 | -*** New variables: |
4595 | - |
4596 | -**** `find-word-boundary-function-table' is a char-table of functions to |
4597 | -search for a word boundary. |
4598 | - |
4599 | -**** `char-script-table' is a char-table of script names. |
4600 | - |
4601 | -**** `char-width-table' is a char-table of character widths. |
4602 | - |
4603 | -**** `print-charset-text-property' controls how to handle `charset' text |
4604 | -property on printing a string. |
4605 | - |
4606 | -**** `printable-chars' is a char-table of printable characters. |
4607 | - |
4608 | -** Code conversion changes |
4609 | - |
4610 | -*** The new function `define-coding-system' should be used to define a |
4611 | -coding system instead of `make-coding-system' (which is now obsolete). |
4612 | - |
4613 | -*** The functions `encode-coding-region' and `decode-coding-region' |
4614 | -have an optional 4th argument to specify where the result of |
4615 | -conversion should go. |
4616 | - |
4617 | -*** The functions `encode-coding-string' and `decode-coding-string' |
4618 | -have an optional 4th argument specifying a buffer to store the result |
4619 | -of conversion. |
4620 | - |
4621 | -*** The new variable `inhibit-null-byte-detection' controls whether to |
4622 | -consider text with null bytes as binary data. By default, it is |
4623 | -`nil', and Emacs uses `no-conversion' for any text containing null |
4624 | -bytes. |
4625 | - |
4626 | -*** The functions `set-coding-priority' and `make-coding-system' are obsolete. |
4627 | - |
4628 | -*** New functions: |
4629 | - |
4630 | -**** `with-coding-priority' executes Lisp code using the specified |
4631 | -coding system priority order. |
4632 | - |
4633 | -**** `check-coding-systems-region' checks if the text in the region is |
4634 | -encodable by the specified coding systems. |
4635 | - |
4636 | -**** `coding-system-aliases' returns a list of aliases of a coding system. |
4637 | - |
4638 | -**** `coding-system-charset-list' returns a list of charsets supported |
4639 | -by a coding system. |
4640 | - |
4641 | -**** `coding-system-priority-list' returns a list of coding systems |
4642 | -ordered by their priorities. |
4643 | - |
4644 | -**** `set-coding-system-priority' sets priorities of coding systems. |
4645 | - |
4646 | -**** `coding-system-from-name' returns a coding system matching with |
4647 | -the argument name. |
4648 | - |
4649 | -** There is a new input method, Robin, different from Quail. |
4650 | -It has three functionalities: |
4651 | - i) a simple input method (converts an ASCII sequence into a string). |
4652 | -ii) converts an existing buffer substring into another string |
4653 | -iii) reverse conversion (each character produced by a |
4654 | -robin rule can hold the original ASCII sequence as a char-code-property) |
4655 | - |
4656 | -*** The new function `robin-define-package' defines a Robin package. |
4657 | - |
4658 | -*** The new function `robin-modify-package' modifies an existing Robin package. |
4659 | - |
4660 | -*** The new function `robin-use-package' starts using a Robin package |
4661 | -as an input method. |
4662 | - |
4663 | -*** The new function `string-to-unibyte' is like `string-as-unibyte' |
4664 | -but signals an error if STRING contains a non-ASCII, non-eight-bit |
4665 | -character. |
4666 | - |
4667 | -** Changes related to the new font backend |
4668 | - |
4669 | -*** Which font backends to use can be specified by the X resource |
4670 | -"FontBackend". For instance, to use both X core fonts and Xft fonts: |
4671 | - |
4672 | -Emacs.FontBackend: x,xft |
4673 | - |
4674 | -If this resource is not set, Emacs tries to use all font backends |
4675 | -available on your graphic device. |
4676 | - |
4677 | -*** New frame parameter `font-backend' specifies a list of |
4678 | -font-backends supported by the frame's graphic device. On X, they are |
4679 | -currently `x' and `xft'. |
4680 | - |
4681 | -*** The function `set-fontset-font' now accepts a script name as the |
4682 | -second argument, and has an optional 5th argument to control how to |
4683 | -set the font. |
4684 | - |
4685 | -*** New functions: |
4686 | - |
4687 | -**** `fontp' checks if the argument is a font-spec or font-entity. |
4688 | - |
4689 | -**** `font-spec' creates a new font-spec object. |
4690 | - |
4691 | -**** `font-get' returns a font property value. |
4692 | - |
4693 | -**** `font-put' sets a font property value. |
4694 | - |
4695 | -**** `font-face-attributes' returns a plist of face attributes set by a font. |
4696 | - |
4697 | -**** `list-fonts' returns a list of font-entities matching a font spec. |
4698 | - |
4699 | -**** `find-font' returns the font-entity best matching the given font spec. |
4700 | - |
4701 | -**** `font-family-list' returns a list of family names of available fonts. |
4702 | - |
4703 | -**** `font-xlfd-name' returns an XLFD name of a given font spec, font |
4704 | -entity, or font object. |
4705 | - |
4706 | -**** `clear-font-cache' clears all font caches. |
4707 | - |
4708 | -** Changes related to multiple-terminal (multi-tty) support |
4709 | - |
4710 | -*** $TERM is now set to `dumb' for subprocesses. If you want to know the |
4711 | -$TERM inherited by Emacs you will have to look inside initial-environment. |
4712 | - |
4713 | -*** $DISPLAY is now dynamically inherited from the frame's `display'. |
4714 | - |
4715 | -*** The `window-system' variable is now frame-local. The new |
4716 | -`initial-window-system' variable contains the `window-system' value |
4717 | -for the first frame. `window-system' is also now a function that |
4718 | -takes a frame argument. |
4719 | - |
4720 | -*** The `keyboard-translate-table' variable and the terminal and |
4721 | -keyboard coding systems are now terminal-local. |
4722 | - |
4723 | -*** You can specify a terminal device (`tty' parameter) and a terminal |
4724 | -type (`tty-type' parameter) to `make-terminal-frame'. |
4725 | - |
4726 | -*** The function `make-frame-on-display' now works during a tty |
4727 | -session. |
4728 | - |
4729 | -*** A new `terminal' data type. |
4730 | -The functions `get-device-terminal', `terminal-parameters', |
4731 | -`terminal-parameter', `set-terminal-parameter' use this data type. |
4732 | - |
4733 | -*** Function key sequences are now mapped using `local-function-key-map', |
4734 | -a new variable. This inherits from the global variable function-key-map, |
4735 | -which is not used directly any more. |
4736 | - |
4737 | -*** New hooks: |
4738 | - |
4739 | -**** before-hack-local-variables-hook is called after setting new |
4740 | -variable file-local-variables-alist, and before actually applying the |
4741 | -file-local variables. |
4742 | - |
4743 | -**** `suspend-tty-functions' and `resume-tty-functions' are called |
4744 | -after a tty frame has been suspended or resumed, respectively. The |
4745 | -functions are called with the terminal id of the frame being |
4746 | -suspended/resumed as a parameter. |
4747 | - |
4748 | -**** The special hook `delete-terminal-functions' is called before |
4749 | -deleting a terminal. |
4750 | - |
4751 | -*** New functions: |
4752 | - |
4753 | -**** `delete-terminal' |
4754 | - |
4755 | -**** `suspend-tty' |
4756 | - |
4757 | -**** `resume-tty'. |
4758 | - |
4759 | -*** `initial-environment' holds the environment inherited from Emacs's parent. |
4760 | - |
4761 | -** Redisplay changes |
4762 | - |
4763 | -*** For underlined characters, the distance between the underline and |
4764 | -the baseline is controlled by a new variable, `underline-minimum-offset'. |
4765 | - |
4766 | -*** You can now pass the value of the `invisible' property to |
4767 | -invisible-p to check whether it would cause the text to be invisible. |
4768 | -This is convenient when checking invisibility of text with no buffer |
4769 | -position (e.g. in before/after-strings). |
4770 | - |
4771 | -*** `clear-image-cache' can be told to flush only images of a specific file. |
4772 | - |
4773 | -*** `vertical-motion' can now be given a goal column. |
4774 | -It now accepts a cons cell (COLS . LINES) in its first argument, which |
4775 | -says to stop, where possible, at a pixel x-position equal to COLS |
4776 | -times the default column width. |
4777 | - |
4778 | -*** redisplay-end-trigger-functions, set-window-redisplay-end-trigger, |
4779 | -and window-redisplay-end-trigger are obsolete. Use `jit-lock-register' |
4780 | -instead. |
4781 | - |
4782 | -*** The new variables `wrap-prefix' and `line-prefix' specify display |
4783 | -specs which are appended at display-time to every continuation line |
4784 | -and non-continuation line, respectively. In addition, Emacs |
4785 | -recognizes the `wrap-prefix' and `line-prefix' text or overlay |
4786 | -properties; these have the same effects as the variables of the same |
4787 | -name, but take precedence. |
4788 | - |
4789 | -** The Lisp interpreter now treats non-breaking space as whitespace. |
4790 | - |
4791 | -** Miscellaneous new functions |
4792 | - |
4793 | -*** `apply-partially' performs a "curried" application of a function. |
4794 | - |
4795 | -*** `buffer-swap-text' swaps text between two buffers. This can be |
4796 | -useful for modes such as tar-mode, archive-mode, RMAIL. |
4797 | - |
4798 | -*** `combine-and-quote-strings' produces a single string from a list of strings |
4799 | -sticking a separator string in between each pair, and quoting those |
4800 | -strings that include the separator as their substring. Useful for |
4801 | -consing shell command lines from the individual arguments. |
4802 | - |
4803 | -*** `custom-note-var-changed' tells Custom to treat the change in a |
4804 | -certain variable as having been made within Custom. |
4805 | - |
4806 | -*** `face-all-attributes' returns an alist describing all the basic |
4807 | -attributes of a given face. |
4808 | - |
4809 | -*** `format-seconds' converts a number of seconds into a readable |
4810 | -string of days, hours, etc. |
4811 | - |
4812 | -*** `image-refresh' refreshes all images associated with a given image |
4813 | -specification. |
4814 | - |
4815 | -*** `locate-user-emacs-file' helps packages to select the appropriate |
4816 | -place to save user-specific files. It defaults to `user-emacs-directory' |
4817 | -unless the file already exists at $HOME. |
4818 | - |
4819 | -*** `read-color' reads a color name using the minibuffer. |
4820 | - |
4821 | -*** `read-shell-command' does what its name says, with completion. It |
4822 | -uses the minibuffer-local-shell-command-map for that. |
4823 | - |
4824 | -*** `split-string-and-unquote' splits a string into a list of substrings |
4825 | -on the boundaries of a given delimiter, and unquotes the substrings that |
4826 | -are quoted. Useful for taking apart shell commands. |
4827 | - |
4828 | -*** The two new functions `looking-at-p' and `string-match-p' can do |
4829 | -the same matching as `looking-at' and `string-match' without changing |
4830 | -the match data. |
4831 | - |
4832 | -*** The two new functions `make-serial-process' and |
4833 | -`serial-process-configure' provide a Lisp interface to the new serial |
4834 | -port support (see Emacs changes, above). |
4835 | - |
4836 | -** Miscellaneous new variables |
4837 | - |
4838 | -*** `auto-save-include-big-deletions', if non-nil, means auto-save is |
4839 | -not turned off automatically after a big deletion. |
4840 | - |
4841 | -*** `read-circle', if nil, disables the reading of recursive Lisp |
4842 | -structures using the #N= and #N# syntax. |
4843 | - |
4844 | -*** `this-command-keys-shift-translated' is non-nil if the key |
4845 | -sequence invoking the current command was found by shift-translation. |
4846 | - |
4847 | -*** `window-point-insertion-type' determines the insertion-type of the |
4848 | -marker used for window-point. |
4849 | - |
4850 | -*** bookmark provides `bookmark-make-record-function' so special major |
4851 | -modes like Info can teach bookmark.el how to save and restore the |
4852 | -relevant data. |
4853 | - |
4854 | -*** `fill-forward-paragraph-function' specifies which function the |
4855 | -filling code should use to find paragraph boundaries. |
4856 | - |
4857 | - |
4858 | |
4859 | -* New Packages for Lisp Programming in Emacs 23.1 |
4860 | - |
4861 | -** The new package avl-tree.el deals with the AVL tree data structure. |
4862 | - |
4863 | -** The new package check-declare.el verifies the accuracy of |
4864 | -declare-function macros (see Lisp Changes, above). |
4865 | - |
4866 | -** find-cmd.el can build `find' commands using lisp syntax. |
4867 | - |
4868 | -** The package misearch.el has been added. It allows Isearch to search |
4869 | -through multiple buffers. A variable `multi-isearch-next-buffer-function' |
4870 | -defines the function to call to get the next buffer to search in the series |
4871 | -of multiple buffers. Top-level functions `multi-isearch-buffers', |
4872 | -`multi-isearch-buffers-regexp', `multi-isearch-files' and |
4873 | -`multi-isearch-files-regexp' accept a single argument that specifies |
4874 | -a list of buffers/files to search for a string/regexp. |
4875 | - |
4876 | -** The new major mode `special-mode' is intended as a parent for |
4877 | -major modes such as those that set the "'mode-class 'special" property. |
4878 | - |
4879 | - |
4880 | |
4881 | ----------------------------------------------------------------------- |
4882 | -This file is part of GNU Emacs. |
4883 | - |
4884 | -GNU Emacs is free software: you can redistribute it and/or modify |
4885 | -it under the terms of the GNU General Public License as published by |
4886 | -the Free Software Foundation, either version 3 of the License, or |
4887 | -(at your option) any later version. |
4888 | - |
4889 | -GNU Emacs is distributed in the hope that it will be useful, |
4890 | -but WITHOUT ANY WARRANTY; without even the implied warranty of |
4891 | -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4892 | -GNU General Public License for more details. |
4893 | - |
4894 | -You should have received a copy of the GNU General Public License |
4895 | -along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
4896 | - |
4897 | - |
4898 | |
4899 | -Local variables: |
4900 | -mode: outline |
4901 | -paragraph-separate: "[ |
4902 | ]*$" |
4903 | -end: |
4904 | - |
4905 | -arch-tag: e759449d-88b3-4de4-9900-3a6c3dfa23e2 |
4906 | |
4907 | === removed directory '.pc/0005-Cause-the-build-to-fail-if-liblockfile-isn-t-selecte.patch' |
4908 | === removed directory '.pc/0005-Cause-the-build-to-fail-if-liblockfile-isn-t-selecte.patch/lib-src' |
4909 | === removed file '.pc/0005-Cause-the-build-to-fail-if-liblockfile-isn-t-selecte.patch/lib-src/movemail.c' |
4910 | --- .pc/0005-Cause-the-build-to-fail-if-liblockfile-isn-t-selecte.patch/lib-src/movemail.c 2011-04-10 10:33:31 +0000 |
4911 | +++ .pc/0005-Cause-the-build-to-fail-if-liblockfile-isn-t-selecte.patch/lib-src/movemail.c 1970-01-01 00:00:00 +0000 |
4912 | @@ -1,964 +0,0 @@ |
4913 | -/* movemail foo bar -- move file foo to file bar, |
4914 | - locking file foo the way /bin/mail respects. |
4915 | - Copyright (C) 1986, 1992, 1993, 1994, 1996, 1999, 2001, 2002, 2003, 2004, |
4916 | - 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
4917 | - |
4918 | -This file is part of GNU Emacs. |
4919 | - |
4920 | -GNU Emacs is free software: you can redistribute it and/or modify |
4921 | -it under the terms of the GNU General Public License as published by |
4922 | -the Free Software Foundation, either version 3 of the License, or |
4923 | -(at your option) any later version. |
4924 | - |
4925 | -GNU Emacs is distributed in the hope that it will be useful, |
4926 | -but WITHOUT ANY WARRANTY; without even the implied warranty of |
4927 | -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4928 | -GNU General Public License for more details. |
4929 | - |
4930 | -You should have received a copy of the GNU General Public License |
4931 | -along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
4932 | - |
4933 | - |
4934 | -/* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will |
4935 | - cause loss of mail* if you do it on a system that does not normally |
4936 | - use flock as its way of interlocking access to inbox files. The |
4937 | - setting of MAIL_USE_FLOCK and MAIL_USE_LOCKF *must agree* with the |
4938 | - system's own conventions. It is not a choice that is up to you. |
4939 | - |
4940 | - So, if your system uses lock files rather than flock, then the only way |
4941 | - you can get proper operation is to enable movemail to write lockfiles there. |
4942 | - This means you must either give that directory access modes |
4943 | - that permit everyone to write lockfiles in it, or you must make movemail |
4944 | - a setuid or setgid program. */ |
4945 | - |
4946 | -/* |
4947 | - * Modified January, 1986 by Michael R. Gretzinger (Project Athena) |
4948 | - * |
4949 | - * Added POP (Post Office Protocol) service. When compiled -DMAIL_USE_POP |
4950 | - * movemail will accept input filename arguments of the form |
4951 | - * "po:username". This will cause movemail to open a connection to |
4952 | - * a pop server running on $MAILHOST (environment variable). Movemail |
4953 | - * must be setuid to root in order to work with POP. |
4954 | - * |
4955 | - * New module: popmail.c |
4956 | - * Modified routines: |
4957 | - * main - added code within #ifdef MAIL_USE_POP; added setuid (getuid ()) |
4958 | - * after POP code. |
4959 | - * New routines in movemail.c: |
4960 | - * get_errmsg - return pointer to system error message |
4961 | - * |
4962 | - * Modified August, 1993 by Jonathan Kamens (OpenVision Technologies) |
4963 | - * |
4964 | - * Move all of the POP code into a separate file, "pop.c". |
4965 | - * Use strerror instead of get_errmsg. |
4966 | - * |
4967 | - */ |
4968 | - |
4969 | -#include <config.h> |
4970 | -#include <sys/types.h> |
4971 | -#include <sys/stat.h> |
4972 | -#include <sys/file.h> |
4973 | -#include <stdio.h> |
4974 | -#include <errno.h> |
4975 | -#include <time.h> |
4976 | - |
4977 | -#include <getopt.h> |
4978 | -#ifdef HAVE_UNISTD_H |
4979 | -#include <unistd.h> |
4980 | -#endif |
4981 | -#ifdef HAVE_FCNTL_H |
4982 | -#include <fcntl.h> |
4983 | -#endif |
4984 | -#include "syswait.h" |
4985 | -#ifdef MAIL_USE_POP |
4986 | -#include "pop.h" |
4987 | -#endif |
4988 | - |
4989 | -#ifdef MSDOS |
4990 | -#undef access |
4991 | -#endif /* MSDOS */ |
4992 | - |
4993 | -#ifndef DIRECTORY_SEP |
4994 | -#define DIRECTORY_SEP '/' |
4995 | -#endif |
4996 | -#ifndef IS_DIRECTORY_SEP |
4997 | -#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP) |
4998 | -#endif |
4999 | - |
5000 | -#ifdef WINDOWSNT |
That's for doing this merge, and no I don't mind at all :). It'll be nice to have 23.4 in Quantal. Do you know what the plans are for Emacs 24 in Debian? (I know it hasn't been released yet.)
I think I'll refrain from reviewing the 453k line diff. :)