aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorStephen Berman2013-06-14 22:07:55 +0200
committerStephen Berman2013-06-14 22:07:55 +0200
commitbd358779861f265a7acff31ead40172735af693e (patch)
tree345217a9889dbd29b09bdc80a94265c17719d41f /admin
parent2a97b47f0878cbda86cb6ba0e7e744924810b70e (diff)
parentf7394b12358ae453a0c8b85fc307afc1b740010d (diff)
downloademacs-bd358779861f265a7acff31ead40172735af693e.tar.gz
emacs-bd358779861f265a7acff31ead40172735af693e.zip
Merge from trunk.
Diffstat (limited to 'admin')
-rw-r--r--admin/CPP-DEFINES37
-rw-r--r--admin/ChangeLog334
-rw-r--r--admin/MAINTAINERS13
-rw-r--r--admin/README6
-rw-r--r--admin/admin.el251
-rw-r--r--admin/alloc-colors.c2
-rwxr-xr-xadmin/build-configs2
-rw-r--r--admin/bzrmerge.el12
-rw-r--r--admin/charsets/Makefile127
-rw-r--r--admin/charsets/gb180302.awk21
-rwxr-xr-xadmin/charsets/mapconv13
-rw-r--r--admin/charsets/mapfiles/MULE-ethiopic.map2
-rw-r--r--admin/charsets/mapfiles/MULE-ipa.map2
-rw-r--r--admin/charsets/mapfiles/MULE-is13194.map2
-rw-r--r--admin/charsets/mapfiles/MULE-lviscii.map2
-rw-r--r--admin/charsets/mapfiles/MULE-sisheng.map2
-rw-r--r--admin/charsets/mapfiles/MULE-tibetan.map2
-rw-r--r--admin/charsets/mapfiles/MULE-uviscii.map2
-rw-r--r--admin/charsets/mapfiles/README2
-rwxr-xr-xadmin/check-doc-strings8
-rw-r--r--admin/coccinelle/xsave.cocci11
-rw-r--r--admin/cus-test.el313
-rwxr-xr-xadmin/diff-tar-files2
-rw-r--r--admin/emacs-pretesters217
-rw-r--r--admin/grammars/README4
-rw-r--r--admin/grammars/bovine-grammar.el519
-rw-r--r--admin/grammars/c.by17
-rw-r--r--admin/grammars/grammar.wy14
-rw-r--r--admin/grammars/java-tags.wy48
-rw-r--r--admin/grammars/js.wy3
-rw-r--r--admin/grammars/make.by3
-rw-r--r--admin/grammars/python.wy66
-rw-r--r--admin/grammars/scheme.by3
-rw-r--r--admin/grammars/srecode-template.wy75
-rw-r--r--admin/grammars/wisent-grammar.el537
-rwxr-xr-xadmin/make-announcement87
-rwxr-xr-xadmin/make-changelog-diff29
-rwxr-xr-xadmin/make-emacs2
-rw-r--r--admin/make-tarball.txt136
-rwxr-xr-xadmin/merge-gnulib27
-rw-r--r--admin/notes/bugtracker69
-rw-r--r--admin/notes/bzr159
-rw-r--r--admin/notes/copyright6
-rw-r--r--admin/notes/font-backend2
-rw-r--r--admin/notes/lel-TODO2
-rw-r--r--admin/notes/multi-tty2
-rw-r--r--admin/notes/unicode140
-rw-r--r--admin/nt/README-UNDUMP.W322
-rw-r--r--admin/nt/README-ftp-server4
-rwxr-xr-xadmin/quick-install-emacs10
-rw-r--r--admin/unidata/BidiMirroring.txt21
-rw-r--r--admin/unidata/Makefile.in2
-rw-r--r--admin/unidata/UnicodeData.txt9
53 files changed, 1426 insertions, 1957 deletions
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index cf6ffee2c63..a89d1764f7b 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -9,8 +9,6 @@ documented in config.in, and this file would not be necessary.
9 9
10AIX 10AIX
11_AIX 11_AIX
12BSD4_2
13BSD_SYSTEM
14CYGWIN Compiling the Cygwin port. 12CYGWIN Compiling the Cygwin port.
15__CYGWIN__ Ditto 13__CYGWIN__ Ditto
16GNU_LINUX 14GNU_LINUX
@@ -86,18 +84,11 @@ anymore, so they can be removed.
86AMPERSAND_FULL_NAME 84AMPERSAND_FULL_NAME
87BROKEN_DATAGRAM_SOCKETS 85BROKEN_DATAGRAM_SOCKETS
88BROKEN_FIONREAD 86BROKEN_FIONREAD
89BROKEN_GETWD
90BROKEN_GET_CURRENT_DIR_NAME 87BROKEN_GET_CURRENT_DIR_NAME
91BROKEN_NON_BLOCKING_CONNECT 88BROKEN_NON_BLOCKING_CONNECT
92BROKEN_PTY_READ_AFTER_EAGAIN 89BROKEN_PTY_READ_AFTER_EAGAIN
93BROKEN_SA_RESTART
94BROKEN_SIGAIO
95BROKEN_SIGIO
96BROKEN_SIGPOLL
97BROKEN_SIGPTY
98CLASH_DETECTION 90CLASH_DETECTION
99DATA_SEG_BITS 91DATA_SEG_BITS
100DATA_START
101DEFAULT_SOUND_DEVICE 92DEFAULT_SOUND_DEVICE
102DEVICE_SEP 93DEVICE_SEP
103DIRECTORY_SEP 94DIRECTORY_SEP
@@ -124,7 +115,6 @@ HAVE_CFMAKERAW
124HAVE_CFSETSPEED 115HAVE_CFSETSPEED
125HAVE_CLOCK_GETTIME 116HAVE_CLOCK_GETTIME
126HAVE_CLOCK_SETTIME 117HAVE_CLOCK_SETTIME
127HAVE_CLOSEDIR
128HAVE_COFF_H 118HAVE_COFF_H
129HAVE_COM_ERR_H 119HAVE_COM_ERR_H
130HAVE_COPYSIGN 120HAVE_COPYSIGN
@@ -149,26 +139,21 @@ HAVE_DES_H
149HAVE_DEV_PTMX 139HAVE_DEV_PTMX
150HAVE_DIALOGS 140HAVE_DIALOGS
151HAVE_DIFFTIME 141HAVE_DIFFTIME
152HAVE_DIRENT_H
153HAVE_DUP2 142HAVE_DUP2
154HAVE_ENDGRENT 143HAVE_ENDGRENT
155HAVE_ENDPWENT 144HAVE_ENDPWENT
156HAVE_ENVIRON_DECL 145HAVE_ENVIRON_DECL
157HAVE_EUIDACCESS 146HAVE_EUIDACCESS
158HAVE_FCNTL_H
159HAVE_FORK 147HAVE_FORK
160HAVE_FPATHCONF
161HAVE_FREEIFADDRS 148HAVE_FREEIFADDRS
162HAVE_FREETYPE 149HAVE_FREETYPE
163HAVE_FSEEKO 150HAVE_FSEEKO
164HAVE_FSYNC
165HAVE_FUTIMENS 151HAVE_FUTIMENS
166HAVE_FUTIMES 152HAVE_FUTIMES
167HAVE_FUTIMESAT 153HAVE_FUTIMESAT
168HAVE_GAI_STRERROR 154HAVE_GAI_STRERROR
169HAVE_GCONF 155HAVE_GCONF
170HAVE_GETADDRINFO 156HAVE_GETADDRINFO
171HAVE_GETCWD
172HAVE_GETDELIM 157HAVE_GETDELIM
173HAVE_GETGRENT 158HAVE_GETGRENT
174HAVE_GETHOSTNAME 159HAVE_GETHOSTNAME
@@ -185,7 +170,6 @@ HAVE_GETRLIMIT
185HAVE_GETRUSAGE 170HAVE_GETRUSAGE
186HAVE_GETSOCKNAME 171HAVE_GETSOCKNAME
187HAVE_GETTIMEOFDAY 172HAVE_GETTIMEOFDAY
188HAVE_GETWD
189HAVE_GET_CURRENT_DIR_NAME 173HAVE_GET_CURRENT_DIR_NAME
190HAVE_GHOSTSCRIPT 174HAVE_GHOSTSCRIPT
191HAVE_GIF 175HAVE_GIF
@@ -271,7 +255,6 @@ HAVE_MEMSET
271HAVE_MENUS 255HAVE_MENUS
272HAVE_MKSTEMP 256HAVE_MKSTEMP
273HAVE_MMAP 257HAVE_MMAP
274HAVE_MOUSE
275HAVE_MULTILINGUAL_MENU 258HAVE_MULTILINGUAL_MENU
276HAVE_NANOTIME 259HAVE_NANOTIME
277HAVE_NET_IF_DL_H 260HAVE_NET_IF_DL_H
@@ -303,9 +286,7 @@ HAVE_SENDTO
303HAVE_SEQPACKET 286HAVE_SEQPACKET
304HAVE_SETITIMER 287HAVE_SETITIMER
305HAVE_SETLOCALE 288HAVE_SETLOCALE
306HAVE_SETPGID
307HAVE_SETRLIMIT 289HAVE_SETRLIMIT
308HAVE_SETSID
309HAVE_SHARED_GAME_DIR 290HAVE_SHARED_GAME_DIR
310HAVE_SHUTDOWN 291HAVE_SHUTDOWN
311HAVE_SIGNED_${GLTYPE} 292HAVE_SIGNED_${GLTYPE}
@@ -313,7 +294,6 @@ HAVE_SIGNED_SIG_ATOMIC_T
313HAVE_SIGNED_WCHAR_T 294HAVE_SIGNED_WCHAR_T
314HAVE_SIGNED_WINT_T 295HAVE_SIGNED_WINT_T
315HAVE_SIGSET_T 296HAVE_SIGSET_T
316HAVE_SIZE_T
317HAVE_SNPRINTF 297HAVE_SNPRINTF
318HAVE_SOCKETS 298HAVE_SOCKETS
319HAVE_SOUND 299HAVE_SOUND
@@ -378,7 +358,6 @@ HAVE_TM_ZONE
378HAVE_TOUCHLOCK 358HAVE_TOUCHLOCK
379HAVE_TZNAME 359HAVE_TZNAME
380HAVE_TZSET 360HAVE_TZSET
381HAVE_UNISTD_H
382HAVE_UNSIGNED_LONG_LONG_INT 361HAVE_UNSIGNED_LONG_LONG_INT
383HAVE_UTIL_H 362HAVE_UTIL_H
384HAVE_UTIMENSAT 363HAVE_UTIMENSAT
@@ -398,7 +377,6 @@ HAVE_WS2TCPIP_H
398HAVE_XAW3D 377HAVE_XAW3D
399HAVE_XFT 378HAVE_XFT
400HAVE_XIM 379HAVE_XIM
401HAVE_XKBGETKEYBOARD
402HAVE_XPM 380HAVE_XPM
403HAVE_XRMSETDATABASE 381HAVE_XRMSETDATABASE
404HAVE_XSCREENNUMBEROFSCREEN 382HAVE_XSCREENNUMBEROFSCREEN
@@ -423,15 +401,10 @@ MAIL_USE_SYSTEM_LOCK
423MAXPATHLEN 401MAXPATHLEN
424NLIST_STRUCT 402NLIST_STRUCT
425NO_EDITRES 403NO_EDITRES
426NO_TERMIO
427NSIG 404NSIG
428NSIG_MINIMUM 405NSIG_MINIMUM
429NULL_DEVICE 406NULL_DEVICE
430ORDINARY_LINK
431O_RDONLY
432O_RDWR
433PAGESIZE 407PAGESIZE
434PENDING_OUTPUT_COUNT
435PREFER_VSUSP 408PREFER_VSUSP
436PTY_ITERATION 409PTY_ITERATION
437PTY_NAME_SPRINTF 410PTY_NAME_SPRINTF
@@ -439,17 +412,8 @@ PTY_OPEN
439PTY_TTY_NAME_SPRINTF 412PTY_TTY_NAME_SPRINTF
440PURESIZE 413PURESIZE
441RUN_TIME_REMAP 414RUN_TIME_REMAP
442SA_RESTART
443SETPGRP_RELEASES_CTTY
444SETUP_SLAVE_PTY 415SETUP_SLAVE_PTY
445SIGALRM
446SIGCHLD
447SIGHUP
448SIGKILL
449SIGNALS_VIA_CHARACTERS 416SIGNALS_VIA_CHARACTERS
450SIGPIPE
451SIGQUIT
452SIGTRAP
453STDC_HEADERS 417STDC_HEADERS
454SYSTEM_PURESIZE_EXTRA 418SYSTEM_PURESIZE_EXTRA
455SYSTEM_MALLOC 419SYSTEM_MALLOC
@@ -459,7 +423,6 @@ TERM
459TIME_WITH_SYS_TIME 423TIME_WITH_SYS_TIME
460TIOCSIGSEND 424TIOCSIGSEND
461TM_IN_SYS_TIME 425TM_IN_SYS_TIME
462ULIMIT_BREAK_VALUE
463UNIX98_PTYS 426UNIX98_PTYS
464USE_TOOLKIT_SCROLL_BARS 427USE_TOOLKIT_SCROLL_BARS
465USG_SUBTTY_WORKS 428USG_SUBTTY_WORKS
diff --git a/admin/ChangeLog b/admin/ChangeLog
index b70067d7465..ac6031fa205 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,335 @@
12013-06-02 Eric Ludlam <zappo@gnu.org>
2
3 * grammars/srecode-template.wy (variable): Accept a single number
4 as a variable value. Allows the 'priority' to be set to a number.
5 (wisent-srecode-template-lexer): Move number up so it can be
6 created.
7
82013-05-16 Glenn Morris <rgm@gnu.org>
9
10 * cus-test.el (cus-test-cus-load-groups): New function.
11 (cus-test-get-options): Add option to return groups.
12 (cus-test-noloads): Also check custom groups.
13
142013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
15
16 * quick-install-emacs: Don't prune DOC-* files a any more.
17
182013-05-14 Glenn Morris <rgm@gnu.org>
19
20 * cus-test.el (cus-test-get-lisp-files): Ignore obsolete/.
21 (cus-test-libs): Fix let-binding of default-directory.
22 (cus-test-noloads): Load all libs for the comparison.
23
242013-05-11 Glenn Morris <rgm@gnu.org>
25
26 * cus-test.el (cus-test-libs-noloads): Add a few more files.
27 (cus-test-load-libs, cus-test-opts):
28 Add option to load more/all Lisp files.
29 (cus-test-get-lisp-files): Ignore .*.el files.
30
312013-05-10 Glenn Morris <rgm@gnu.org>
32
33 * cus-test.el (cus-test-libs-noloads): Add some files.
34 (cus-test-get-lisp-files): New function.
35 (cus-test-libs): Add option to load more/all Lisp files.
36
372013-05-09 Glenn Morris <rgm@gnu.org>
38
39 * cus-test.el: No need to provide bbdb, bbdb-com any more.
40 (cus-test-libs-noloads): Add dunnet in the defvar.
41 (dunnet): Don't always load it.
42 (viper-mode): Only set if interactive.
43 (cus-test-load-custom-loads): Load dunnet if necessary.
44 (cus-test-load-1): New macro, with common code from cus-test-load-libs
45 and cus-test-libs.
46 (cus-test-load-libs, cus-test-libs): Use cus-test-load-1 macro.
47 Update for cus-test-get-autoload-deps changed result.
48 (cus-test-get-autoload-deps): Simplify. Return file names as they
49 appear in loaddefs.el (directory parts are needed now that not all
50 lisp subdirs are in load-path).
51 (cus-test-deps): Explicitly skip dunnet.
52
532013-05-07 Paul Eggert <eggert@cs.ucla.edu>
54
55 Use Gnulib ACL implementation, for benefit of Solaris etc. (Bug#14295)
56 * merge-gnulib (GNULIB_MODULES): Add qacl.
57 (GNULIB_TOOL_FLAGS): Do not avoid errno.
58
592013-04-01 Paul Eggert <eggert@cs.ucla.edu>
60
61 Use UTF-8 for most files with non-ASCII characters (Bug#13936).
62 * notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
63 (leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
64 Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
65 characters are now encoded in utf-8-emacs, not iso-2022-7bit.
66
672013-03-18 Paul Eggert <eggert@cs.ucla.edu>
68
69 * notes/unicode: Mention some more iso-2022-7bit files (Bug#13936).
70
71 Automate the build of ja-dic.el (Bug#13984).
72 * notes/unicode: ja-dic.el is now UTF-8.
73
742013-03-16 Glenn Morris <rgm@gnu.org>
75
76 * admin.el (manual-pdf, manual-dvi): Pass -I to texi2pdf, texi2dvi.
77
782013-03-16 Glenn Morris <rgm@gnu.org>
79
80 * admin.el (manual-html-mono, manual-html-node): Add -DWWW_GNU_ORG.
81
822013-03-13 Paul Eggert <eggert@cs.ucla.edu>
83
84 File synchronization fixes (Bug#13944).
85 * CPP-DEFINES (BSD_SYSTEM, HAVE_FSYNC): Remove.
86 * merge-gnulib (GNULIB_MODULES): Add fsync, fdatasync.
87
882013-03-11 Paul Eggert <eggert@cs.ucla.edu>
89
90 * notes/unicode: Improve notes about Emacs source file encoding.
91
922013-03-11 Glenn Morris <rgm@gnu.org>
93
94 * admin.el (make-manuals): Add emacs-lisp-intro and some more
95 doc/misc manuals.
96 (manual-html-mono, manual-html-node, manual-txt):
97 Pass -I to makeinfo.
98
992013-03-10 Glenn Morris <rgm@gnu.org>
100
101 * admin.el (add-release-logs): Use UTC for release date.
102
1032013-03-09 Glenn Morris <rgm@gnu.org>
104
105 * admin.el (add-release-logs): Provide interactive defaults.
106 Allow specification of the release date. Don't exclude gnus/.
107
1082013-03-05 Paul Eggert <eggert@cs.ucla.edu>
109
110 * notes/unicode: Add notes about Emacs source file encoding.
111
1122013-03-04 Paul Eggert <eggert@cs.ucla.edu>
113
114 * grammars/java-tags.wy (CHAR): Remove "('\u0000' to '\uffff')"
115 from summary, as this causes javat-wy.el to contain both a null byte
116 and a byte sequence that is not valid UTF-8, which is inconvenient.
117
1182013-03-03 Paul Eggert <eggert@cs.ucla.edu>
119
120 * bzrmerge.el (bzrmerge-apply): Omit Latin-1 char from diagnostic.
121 If there were a real need, it should be UTF-8 anyway.
122
1232013-02-25 Paul Eggert <eggert@cs.ucla.edu>
124
125 Simplify data_start configuration (Bug#13783).
126 * CPP-DEFINES (DATA_START, ORDINARY_LINK): Remove.
127
1282013-02-11 Paul Eggert <eggert@cs.ucla.edu>
129
130 Tune by using memchr and memrchr.
131 * merge-gnulib (GNULIB_MODULES): Add memrchr.
132
1332013-02-01 Paul Eggert <eggert@cs.ucla.edu>
134
135 Use fdopendir, fstatat and readlinkat, for efficiency (Bug#13539).
136 * merge-gnulib (GNULIB_MODULES): Add fdopendir, fstatat, readlinkat.
137 (GNULIB_TOOL_FLAGS): Do not avoid at-internal, openat-h.
138 Avoid dup, open, opendir.
139
1402013-01-15 Dmitry Antipov <dmantipov@yandex.ru>
141
142 * coccinelle/xsave.cocci: Semantic patch to adjust users of
143 XSAVE_POINTER and XSAVE_INTEGER macros.
144
1452013-01-03 Glenn Morris <rgm@gnu.org>
146
147 * check-doc-strings: Update for CVS->bzr, moved lispref/ directory.
148
149 * emacs-pretesters, make-announcement, make-changelog-diff:
150 Remove files.
151
1522012-12-14 Paul Eggert <eggert@cs.ucla.edu>
153
154 Fix permissions bugs with setgid directories etc. (Bug#13125)
155 * CPP-DEFINES (BSD4_2): Remove.
156
1572012-12-08 Paul Eggert <eggert@cs.ucla.edu>
158
159 Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
160 * merge-gnulib (GNULIB_MODULES): Add putenv, unsetenv.
161
162 Simplify get_lim_data.
163 * CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
164
1652012-12-03 Paul Eggert <eggert@cs.ucla.edu>
166
167 Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
168 * CPP-DEFINES (SIGALRM, SIGCHLD, SIGHUP, SIGKILL, SIGPIPE, SIGQUIT):
169 Remove.
170 (SIGTRAP): Remove this one too, as config.h no longer defines it.
171 * merge-gnulib (GNULIB_MODULES): Add sig2str.
172
1732012-11-24 Ken Brown <kbrown@cornell.edu>
174
175 * CPP-DEFINES (HAVE_MOUSE): Remove.
176
1772012-11-23 Paul Eggert <eggert@cs.ucla.edu>
178
179 Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
180 * CPP-DEFINES (HAVE_CLOSEDIR, HAVE_DIRENT_H): Remove.
181 * notes/copyright: Adjust to src/ndir.h -> nt/inc/dirent.h renaming.
182
1832012-11-21 Paul Eggert <eggert@cs.ucla.edu>
184
185 Assume POSIX 1003.1-1988 or later for unistd.h (Bug#12945).
186 * CPP-DEFINES (BROKEN_GETWD, HAVE_GETCWD, HAVE_GETWD, HAVE_SIZE_T)
187 (HAVE_UNISTD_H): Remove.
188
1892012-11-17 Paul Eggert <eggert@cs.ucla.edu>
190
191 Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
192 * CPP-DEFINES (O_RDONLY, O_RDWR, HAVE_FCNTL_H): Remove.
193 * merge-gnulib (GNULIB_MODULES): Add fcntl-h.
194
1952012-11-16 Paul Eggert <eggert@cs.ucla.edu>
196
197 Remove no-longer-used pty_max_bytes variable.
198 * CPP-DEFINES (HAVE_FPATHCONF): Remove.
199
2002012-11-14 Paul Eggert <eggert@cs.ucla.edu>
201
202 Use faccessat, not access, when checking file permissions (Bug#12632).
203 * merge-gnulib (GNULIB_MODULES): Add faccessat.
204 (GNULIB_TOOL_FLAGS): Avoid at-internal, fchdir, malloc-posix,
205 openat-die, openat-h, save-cwd. Do not avoid fcntl-h.
206 Omit gnulib's m4/fcntl-o.m4.
207
2082012-11-05 Paul Eggert <eggert@cs.ucla.edu>
209
210 Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800).
211 * CPP-DEFINES (HAVE_SETPGID, HAVE_SETSID, SETPGRP_RELEASES_CTTY):
212 Remove; obsolete.
213
214 Simplify by assuming __fpending.
215 * CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove.
216
2172012-11-03 Glenn Morris <rgm@gnu.org>
218
219 * admin.el (set-copyright): Add msdos/sed2v2.inp.
220
2212012-11-01 Paul Eggert <eggert@cs.ucla.edu>
222
223 Fix data-loss with --batch (Bug#9574).
224 * merge-gnulib (GNULIB_MODULES): Add close-stream.
225
2262012-10-12 Kenichi Handa <handa@gnu.org>
227
228 * charsets/Makefile (JISC6226.map): Add missing mappings.
229
2302012-10-11 Kenichi Handa <handa@gnu.org>
231
232 * charsets/mapconv: Adjusted for the change of mapfiles/*.gz to
233 mapfiles/*.
234
235 * charsets/gb180302.awk: Handle 4-byte sequences in the input file.
236
237 * charsets/Makefile: Be sure to call mapconv script of the current
238 directory. Adjusted for the change of mapfiles/*.gz to
239 mapfiles/*.
240 (SED_SCRIPT): New variable.
241 (jisx2131-filter): New target.
242 (JISX2131.map): Use jisx2131-filter to filter out characters added
243 for the 2004 year version.
244 (clear): Remove ${SED_SCRIPT} too.
245
246 * charsets/mapfiles/MULE-ethiopic.map,
247 charsets/mapfiles/MULE-ipa.map,
248 charsets/mapfiles/MULE-is13194.map,
249 charsets/mapfiles/MULE-lviscii.map,
250 charsets/mapfiles/MULE-sisheng.map,
251 charsets/mapfiles/MULE-tibetan.map,
252 charsets/mapfiles/MULE-uviscii.map: Fix typo.
253
2542012-10-09 Glenn Morris <rgm@gnu.org>
255
256 * admin.el (cusver-scan-cus-start): New function.
257 (cusver-check): Scan old cus-start.el.
258
2592012-10-07 Glenn Morris <rgm@gnu.org>
260
261 * admin.el (cusver-new-version): Set default.
262 (cusver-check): Improve interactive argument reading.
263
2642012-10-06 Glenn Morris <rgm@gnu.org>
265
266 * admin.el (cusver-new-version): New variable.
267 (cusver-scan): Check if containing group has a :version.
268 (cusver-check): Add VERSION argument.
269
2702012-10-01 David Engster <deng@randomsample.de>
271
272 * grammars/bovine-grammar.el:
273 * grammars/wisent-grammar.el: Move to lisp directory.
274
2752012-10-01 David Engster <deng@randomsample.de>
276
277 * grammars/bovine-grammar.el (bovine--grammar-newstyle-unquote):
278 Remove.
279 (bovine-grammar-expand-form): Test for emacs-major-version.
280
281 * grammars/c.by: Add EXPLICIT to keyword tokens.
282 Add %provide token.
283
284 * grammars/grammar.wy (semantic-grammar-lexer): Remove, since it
285 was copied to grammar.el. New %provide token to generate prefix
286 which conforms with Emacs conventions. Remove lexer definition,
287 which is now in grammar.el.
288
2892012-09-27 Glenn Morris <rgm@gnu.org>
290
291 * admin.el (set-version): Set msdos.c's Vwindow_system_version.
292
2932012-09-27 Paul Eggert <eggert@cs.ucla.edu>
294
295 Check more robustly for timer_settime.
296 * merge-gnulib (GNULIB_MODULES): Add timer-time.
297
2982012-09-26 Juanma Barranquero <lekktu@gmail.com>
299
300 * unidata/BidiMirroring.txt:
301 * unidata/UnicodeData.txt: Update to Unicode 6.2.
302
3032012-09-17 Glenn Morris <rgm@gnu.org>
304
305 * admin.el (add-log-time-format): Declare.
306
307 * admin.el (cusver-scan, cusver-check): Bind local variables.
308
309 * admin.el (set-version): Set major version in
310 etc/refcards/ru-refcard.tex and etc/refcards/emacsver.tex.
311 (set-copyright): In etc/refcards, only change ru-refcard.tex
312 and emacsver.tex.
313
314 * admin.el (set-copyright): No more need to set copyrights for
315 nextstep, or .c files. Add configure.ac and config.nt.
316
3172012-09-16 Paul Eggert <eggert@cs.ucla.edu>
318
319 Remove configure's --without-sync-input option (Bug#12450).
320 * CPP-DEFINES (BROKEN_SA_RESTART, SA_RESTART): Remove.
321
3222012-09-16 Glenn Morris <rgm@gnu.org>
323
324 * admin.el (set-version): No more need to set nextstep versions.
325 (set-copyright): Update for moved nextstep files.
326
3272012-09-13 Paul Eggert <eggert@cs.ucla.edu>
328
329 Simplify SIGIO usage (Bug#12408).
330 * CPP-DEFINES (BROKEN_SIGAIO, BROKEN_SIGIO, BROKEN_SIGPOLL)
331 (BROKEN_SIGPTY, NO_TERMIO): Remove.
332
12012-09-11 Paul Eggert <eggert@cs.ucla.edu> 3332012-09-11 Paul Eggert <eggert@cs.ucla.edu>
2 334
3 Simplify, document, and port floating-point (Bug#12381). 335 Simplify, document, and port floating-point (Bug#12381).
@@ -1483,7 +1815,7 @@
1483;; coding: utf-8 1815;; coding: utf-8
1484;; End: 1816;; End:
1485 1817
1486 Copyright (C) 2001-2012 Free Software Foundation, Inc. 1818 Copyright (C) 2001-2013 Free Software Foundation, Inc.
1487 1819
1488 This file is part of GNU Emacs. 1820 This file is part of GNU Emacs.
1489 1821
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS
index 34763083e9a..efcc63081b5 100644
--- a/admin/MAINTAINERS
+++ b/admin/MAINTAINERS
@@ -16,9 +16,6 @@ maintainer has been found so far.
161. 161.
17============================================================================== 17==============================================================================
18 18
19Richard Stallman
20 ???
21
22Jason Rumney 19Jason Rumney
23 W32 20 W32
24 21
@@ -71,13 +68,6 @@ Jay Belanger
71 etc/calccard.tex 68 etc/calccard.tex
72 doc/misc/calc.texi 69 doc/misc/calc.texi
73 70
74Michael Olson
75 ERC
76 lisp/erc/*
77 etc/ERC-NEWS
78 doc/misc/erc.texi
79 lisp/emacs-lisp/tq.el
80
81Bastien Guerry 71Bastien Guerry
82 Org 72 Org
83 lisp/org/* 73 lisp/org/*
@@ -87,9 +77,6 @@ Bastien Guerry
872. 772.
88============================================================================== 78==============================================================================
89 79
90Steven Tamm
91 MacOS
92
93Eli Zaretskii 80Eli Zaretskii
94 doc/* 81 doc/*
95 lispref/* 82 lispref/*
diff --git a/admin/README b/admin/README
index b5eefc2da7a..d696a14176e 100644
--- a/admin/README
+++ b/admin/README
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2012 Free Software Foundation, Inc. 1Copyright (C) 2001-2013 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 4
@@ -24,10 +24,6 @@ Instructions to create pretest or release tarballs, announcements, etc.
24 24
25Utilities for setting version numbers and alike. 25Utilities for setting version numbers and alike.
26 26
27** make-announcement, make-changelog-diff
28
29Scripts used to prepare release announcements.
30
31 27
32* Scripts that can be used to build and test Emacs. 28* Scripts that can be used to build and test Emacs.
33 29
diff --git a/admin/admin.el b/admin/admin.el
index 6d729214bd0..cb7eaead27f 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -1,6 +1,6 @@
1;;; admin.el --- utilities for Emacs administration 1;;; admin.el --- utilities for Emacs administration
2 2
3;; Copyright (C) 2001-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -26,25 +26,40 @@
26 26
27;;; Code: 27;;; Code:
28 28
29(defun add-release-logs (root version) 29(defvar add-log-time-format) ; in add-log
30
31;; Does this information need to be in every ChangeLog, as opposed to
32;; just the top-level one? Only if you allow changes the same
33;; day as the release.
34;; http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00161.html
35(defun add-release-logs (root version &optional date)
30 "Add \"Version VERSION released.\" change log entries in ROOT. 36 "Add \"Version VERSION released.\" change log entries in ROOT.
31Root must be the root of an Emacs source tree." 37Root must be the root of an Emacs source tree.
32 (interactive "DEmacs root directory: \nNVersion number: ") 38Optional argument DATE is the release date, default today."
39 (interactive (list (read-directory-name "Emacs root directory: ")
40 (read-string "Version number: "
41 (format "%s.%s" emacs-major-version
42 emacs-minor-version))
43 (read-string "Release date: "
44 (progn (require 'add-log)
45 (let ((add-log-time-zone-rule t))
46 (funcall add-log-time-format))))))
33 (setq root (expand-file-name root)) 47 (setq root (expand-file-name root))
34 (unless (file-exists-p (expand-file-name "src/emacs.c" root)) 48 (unless (file-exists-p (expand-file-name "src/emacs.c" root))
35 (error "%s doesn't seem to be the root of an Emacs source tree" root)) 49 (error "%s doesn't seem to be the root of an Emacs source tree" root))
36 (require 'add-log) 50 (require 'add-log)
51 (or date (setq date (let ((add-log-time-zone-rule t))
52 (funcall add-log-time-format))))
37 (let* ((logs (process-lines "find" root "-name" "ChangeLog")) 53 (let* ((logs (process-lines "find" root "-name" "ChangeLog"))
38 (entry (format "%s %s <%s>\n\n\t* Version %s released.\n\n" 54 (entry (format "%s %s <%s>\n\n\t* Version %s released.\n\n"
39 (funcall add-log-time-format) 55 date
40 (or add-log-full-name (user-full-name)) 56 (or add-log-full-name (user-full-name))
41 (or add-log-mailing-address user-mail-address) 57 (or add-log-mailing-address user-mail-address)
42 version))) 58 version)))
43 (dolist (log logs) 59 (dolist (log logs)
44 (unless (string-match "/gnus/" log) 60 (find-file log)
45 (find-file log) 61 (goto-char (point-min))
46 (goto-char (point-min)) 62 (insert entry))))
47 (insert entry)))))
48 63
49(defun set-version-in-file (root file version rx) 64(defun set-version-in-file (root file version rx)
50 (find-file (expand-file-name file root)) 65 (find-file (expand-file-name file root))
@@ -126,39 +141,20 @@ Root must be the root of an Emacs source tree."
126 (set-version-in-file root "nt/emacsclient.rc" comma-space-version 141 (set-version-in-file root "nt/emacsclient.rc" comma-space-version
127 (rx (and "\"ProductVersion\"" (0+ space) ?, 142 (rx (and "\"ProductVersion\"" (0+ space) ?,
128 (0+ space) ?\" (submatch (1+ (in "0-9, "))) 143 (0+ space) ?\" (submatch (1+ (in "0-9, ")))
129 "\\0\"")))) 144 "\\0\"")))
130 ;; nextstep. 145 ;; Major version only.
131 (set-version-in-file 146 (when (string-match "\\([0-9]\\{2,\\}\\)" version)
132 root "nextstep/Cocoa/Emacs.base/Contents/Info.plist" 147 (setq version (match-string 1 version))
133 version (rx (and "CFBundleGetInfoString" (1+ anything) "Emacs" (1+ space) 148 (set-version-in-file root "src/msdos.c" version
134 (submatch (1+ (in "0-9.")))))) 149 (rx (and "Vwindow_system_version" (1+ not-newline)
135 (set-version-in-file 150 ?\( (submatch (1+ (in "0-9"))) ?\))))
136 root "nextstep/Cocoa/Emacs.base/Contents/Info.plist" 151 (set-version-in-file root "etc/refcards/ru-refcard.tex" version
137 version (rx (and "CFBundleShortVersionString" (1+ not-newline) ?\n 152 "\\\\newcommand{\\\\versionemacs}\\[0\\]\
138 (0+ not-newline) "<string>" (0+ space) 153{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")
139 (submatch (1+ (in "0-9.")))))) 154 (set-version-in-file root "etc/refcards/emacsver.tex" version
140 (set-version-in-file 155 "\\\\def\\\\versionemacs\
141 root "nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings" 156{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs"))))
142 version (rx (and "CFBundleShortVersionString" (0+ space) ?= (0+ space) 157
143 ?\" (0+ space) "Version" (1+ space)
144 (submatch (1+ (in "0-9."))))))
145 (set-version-in-file
146 root "nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings"
147 version (rx (and "CFBundleGetInfoString" (0+ space) ?= (0+ space)
148 ?\" (0+ space) "Emacs version" (1+ space)
149 (submatch (1+ (in "0-9."))))))
150 (set-version-in-file
151 root "nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist"
152 version (rx (and "ApplicationRelease" (0+ space) ?= (0+ space)
153 ?\" (0+ space) (submatch (1+ (in "0-9."))))))
154 (set-version-in-file
155 root "nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist"
156 version (rx (and "FullVersionID" (0+ space) ?= (0+ space)
157 ?\" (0+ space) "Emacs" (1+ space)
158 (submatch (1+ (in "0-9."))))))
159 (set-version-in-file
160 root "nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop"
161 version (rx (and "Version=" (submatch (1+ (in "0-9.")))))))
162 158
163;; Note this makes some assumptions about form of short copyright. 159;; Note this makes some assumptions about form of short copyright.
164(defun set-copyright (root copyright) 160(defun set-copyright (root copyright)
@@ -172,45 +168,28 @@ Root must be the root of an Emacs source tree."
172 (format-time-string "%Y"))))) 168 (format-time-string "%Y")))))
173 (unless (file-exists-p (expand-file-name "src/emacs.c" root)) 169 (unless (file-exists-p (expand-file-name "src/emacs.c" root))
174 (error "%s doesn't seem to be the root of an Emacs source tree" root)) 170 (error "%s doesn't seem to be the root of an Emacs source tree" root))
175 (set-version-in-file root "src/emacs.c" copyright 171 (set-version-in-file root "configure.ac" copyright
176 (rx (and "emacs_copyright" (0+ (not (in ?\"))) 172 (rx (and bol "copyright" (0+ (not (in ?\")))
177 ?\" (submatch (1+ (not (in ?\")))) ?\")))
178 (set-version-in-file root "lib-src/ebrowse.c" copyright
179 (rx (and "emacs_copyright" (0+ (not (in ?\")))
180 ?\" (submatch (1+ (not (in ?\")))) ?\")))
181 (set-version-in-file root "lib-src/etags.c" copyright
182 (rx (and "emacs_copyright" (0+ (not (in ?\")))
183 ?\" (submatch (1+ (not (in ?\")))) ?\"))) 173 ?\" (submatch (1+ (not (in ?\")))) ?\")))
174 (set-version-in-file root "msdos/sed2v2.inp" copyright
175 (rx (and bol "/^#undef " (1+ not-newline)
176 "define COPYRIGHT" (1+ space)
177 ?\" (submatch (1+ (not (in ?\")))) ?\")))
178 (set-version-in-file root "nt/config.nt" copyright
179 (rx (and bol "#" (0+ blank) "define" (1+ blank)
180 "COPYRIGHT" (1+ blank)
181 ?\" (submatch (1+ (not (in ?\")))) ?\")))
184 (set-version-in-file root "lib-src/rcs2log" copyright 182 (set-version-in-file root "lib-src/rcs2log" copyright
185 (rx (and "Copyright" (0+ space) ?= (0+ space) 183 (rx (and "Copyright" (0+ space) ?= (0+ space)
186 ?\' (submatch (1+ nonl))))) 184 ?\' (submatch (1+ nonl)))))
187 ;; This one is a nuisance, as it needs to be split over two lines.
188 (string-match "\\(.*[0-9]\\{4\\} *\\)\\(.*\\)" copyright)
189 ;; nextstep.
190 (set-version-in-file
191 root "nextstep/Cocoa/Emacs.base/Contents/Info.plist"
192 copyright (rx (and "CFBundleGetInfoString" (1+ anything) "Emacs" (1+ space)
193 (1+ (in "0-9.")) (1+ space)
194 (submatch (1+ (not (in ?\<)))))))
195 (set-version-in-file
196 root "nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings"
197 copyright (rx (and "NSHumanReadableCopyright" (0+ space) ?\= (0+ space)
198 ?\" (submatch (1+ (not (in ?\")))))))
199 (set-version-in-file
200 root "nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist"
201 copyright (rx (and "Copyright" (0+ space) ?\= (0+ space)
202 ?\" (submatch (1+ (not (in ?\")))))))
203 (when (string-match "\\([0-9]\\{4\\}\\)" copyright) 185 (when (string-match "\\([0-9]\\{4\\}\\)" copyright)
204 (setq copyright (match-string 1 copyright)) 186 (setq copyright (match-string 1 copyright))
205 (dolist (file (directory-files (expand-file-name "etc/refcards" root) 187 (set-version-in-file root "etc/refcards/ru-refcard.tex" copyright
206 t "\\.tex\\'")) 188 "\\\\newcommand{\\\\cyear}\\[0\\]\
207 (unless (string-match "gnus-refcard\\.tex" file) 189{\\([0-9]\\{4\\}\\)}.+%.+copyright year")
208 (set-version-in-file 190 (set-version-in-file root "etc/refcards/emacsver.tex" copyright
209 root file copyright 191 "\\\\def\\\\year\
210 (concat (if (string-match "ru-refcard\\.tex" file) 192{\\([0-9]\\{4\\}\\)}.+%.+copyright year")))
211 "\\\\newcommand{\\\\cyear}\\[0\\]{"
212 "\\\\def\\\\year{")
213 "\\([0-9]\\{4\\}\\)}.+%.+copyright year"))))))
214 193
215;;; Various bits of magic for generating the web manuals 194;;; Various bits of magic for generating the web manuals
216 195
@@ -249,17 +228,33 @@ Root must be the root of an Emacs source tree."
249 (manual-pdf texi (expand-file-name "elisp.pdf" dest)) 228 (manual-pdf texi (expand-file-name "elisp.pdf" dest))
250 (manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir) 229 (manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir)
251 (expand-file-name "elisp.ps" ps-dir))) 230 (expand-file-name "elisp.ps" ps-dir)))
231 (let ((texi (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
232 (dest (expand-file-name "emacs-lisp-intro" dest))
233 dest2 dest3)
234 ;; Mimic the atypical directory layout used for emacs-lisp-intro.
235 (make-directory dest)
236 (make-directory (setq dest2 (expand-file-name "html_node" dest)))
237 (manual-html-node texi dest2)
238 (make-directory (setq dest2 (expand-file-name "html_mono" dest)))
239 (manual-html-mono texi (expand-file-name "emacs-lisp-intro.html" dest2))
240 (make-directory (setq dest2 (expand-file-name "txt" dest)))
241 (manual-txt texi (expand-file-name "emacs-lisp-intro.txt" dest2))
242 (manual-pdf texi (expand-file-name "emacs-lisp-intro.pdf" dest))
243 (make-directory (setq dest2 (expand-file-name "dvi" dest)))
244 (make-directory (setq dest3 (expand-file-name "ps" dest)))
245 (manual-dvi texi (expand-file-name "emacs-lisp-intro.dvi" dest2)
246 (expand-file-name "emacs-lisp-intro.ps" dest3)))
252 ;; Misc manuals 247 ;; Misc manuals
253 (let ((manuals '("ada-mode" "auth" "autotype" "calc" "cc-mode" 248 (let ((manuals '("ada-mode" "auth" "autotype" "bovine" "calc" "cc-mode"
254 "cl" "dbus" "dired-x" "ebrowse" "ede" "ediff" 249 "cl" "dbus" "dired-x" "ebrowse" "ede" "ediff"
255 "edt" "eieio" "emacs-mime" "epa" "erc" "ert" 250 "edt" "eieio" "emacs-gnutls" "emacs-mime" "epa" "erc" "ert"
256 "eshell" "eudc" "faq" "flymake" "forms" 251 "eshell" "eudc" "faq" "flymake" "forms"
257 "gnus" "emacs-gnutls" "idlwave" "info" 252 "gnus" "htmlfontify" "idlwave" "info"
258 "mairix-el" "message" "mh-e" "newsticker" 253 "mairix-el" "message" "mh-e" "newsticker"
259 "nxml-mode" "org" "pcl-cvs" "pgg" "rcirc" 254 "nxml-mode" "org" "pcl-cvs" "pgg" "rcirc"
260 "remember" "reftex" "sasl" "sc" "semantic" 255 "reftex" "remember" "sasl" "sc" "semantic"
261 "ses" "sieve" "smtpmail" "speedbar" "tramp" 256 "ses" "sieve" "smtpmail" "speedbar" "srecode" "tramp"
262 "url" "vip" "viper" "widget" "woman"))) 257 "url" "vip" "viper" "widget" "wisent" "woman")))
263 (dolist (manual manuals) 258 (dolist (manual manuals)
264 (manual-misc-html manual root html-node-dir html-mono-dir))) 259 (manual-misc-html manual root html-node-dir html-mono-dir)))
265 (message "Manuals created in %s" dest))) 260 (message "Manuals created in %s" dest)))
@@ -290,6 +285,11 @@ This function also edits the HTML files so that they validate as
290HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using 285HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
291the @import directive." 286the @import directive."
292 (call-process "makeinfo" nil nil nil 287 (call-process "makeinfo" nil nil nil
288 "-D" "WWW_GNU_ORG"
289 "-I" (expand-file-name "../emacs"
290 (file-name-directory texi-file))
291 "-I" (expand-file-name "../misc"
292 (file-name-directory texi-file))
293 "--html" "--no-split" texi-file "-o" dest) 293 "--html" "--no-split" texi-file "-o" dest)
294 (with-temp-buffer 294 (with-temp-buffer
295 (insert-file-contents dest) 295 (insert-file-contents dest)
@@ -311,6 +311,11 @@ the @import directive."
311 (unless (file-exists-p texi-file) 311 (unless (file-exists-p texi-file)
312 (error "Manual file %s not found" texi-file)) 312 (error "Manual file %s not found" texi-file))
313 (call-process "makeinfo" nil nil nil 313 (call-process "makeinfo" nil nil nil
314 "-D" "WWW_GNU_ORG"
315 "-I" (expand-file-name "../emacs"
316 (file-name-directory texi-file))
317 "-I" (expand-file-name "../misc"
318 (file-name-directory texi-file))
314 "--html" texi-file "-o" dir) 319 "--html" texi-file "-o" dir)
315 ;; Loop through the node files, fixing them up. 320 ;; Loop through the node files, fixing them up.
316 (dolist (f (directory-files dir nil "\\.html\\'")) 321 (dolist (f (directory-files dir nil "\\.html\\'"))
@@ -342,17 +347,31 @@ the @import directive."
342(defun manual-txt (texi-file dest) 347(defun manual-txt (texi-file dest)
343 "Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST." 348 "Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST."
344 (call-process "makeinfo" nil nil nil 349 (call-process "makeinfo" nil nil nil
350 "-I" (expand-file-name "../emacs"
351 (file-name-directory texi-file))
352 "-I" (expand-file-name "../misc"
353 (file-name-directory texi-file))
345 "--plaintext" "--no-split" texi-file "-o" dest) 354 "--plaintext" "--no-split" texi-file "-o" dest)
346 (shell-command (concat "gzip -c " dest " > " (concat dest ".gz")))) 355 (shell-command (concat "gzip -c " dest " > " (concat dest ".gz"))))
347 356
348(defun manual-pdf (texi-file dest) 357(defun manual-pdf (texi-file dest)
349 "Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST." 358 "Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST."
350 (call-process "texi2pdf" nil nil nil texi-file "-o" dest)) 359 (call-process "texi2pdf" nil nil nil
360 "-I" (expand-file-name "../emacs"
361 (file-name-directory texi-file))
362 "-I" (expand-file-name "../misc"
363 (file-name-directory texi-file))
364 texi-file "-o" dest))
351 365
352(defun manual-dvi (texi-file dest ps-dest) 366(defun manual-dvi (texi-file dest ps-dest)
353 "Run texi2dvi on TEXI-FILE, emitting dvi output to DEST. 367 "Run texi2dvi on TEXI-FILE, emitting dvi output to DEST.
354Also generate PostScript output in PS-DEST." 368Also generate PostScript output in PS-DEST."
355 (call-process "texi2dvi" nil nil nil texi-file "-o" dest) 369 (call-process "texi2dvi" nil nil nil
370 "-I" (expand-file-name "../emacs"
371 (file-name-directory texi-file))
372 "-I" (expand-file-name "../misc"
373 (file-name-directory texi-file))
374 texi-file "-o" dest)
356 (call-process "dvips" nil nil nil dest "-o" ps-dest) 375 (call-process "dvips" nil nil nil dest "-o" ps-dest)
357 (call-process "gzip" nil nil nil dest) 376 (call-process "gzip" nil nil nil dest)
358 (call-process "gzip" nil nil nil ps-dest)) 377 (call-process "gzip" nil nil nil ps-dest))
@@ -459,7 +478,7 @@ Also generate PostScript output in PS-DEST."
459 (setq done t)) 478 (setq done t))
460 (t 479 (t
461 (if (eobp) 480 (if (eobp)
462 (error "Parse error in %s" f)) 481 (error "Parse error in %s" f)) ; f is bound in manual-html-node
463 (unless open-td 482 (unless open-td
464 (setq done t)))) 483 (setq done t))))
465 (forward-line 1)))) 484 (forward-line 1))))
@@ -480,8 +499,10 @@ If optional OLD is non-nil, also include defvars."
480 )) 499 ))
481 "{}" "+")) 500 "{}" "+"))
482 501
483;; TODO if a defgroup with a version tag, apply to all customs in that 502(defvar cusver-new-version (format "%s.%s" emacs-major-version
484;; group (eg for new files). 503 (1+ emacs-minor-version))
504 "Version number that new defcustoms should have.")
505
485(defun cusver-scan (file &optional old) 506(defun cusver-scan (file &optional old)
486 "Scan FILE for `defcustom' calls. 507 "Scan FILE for `defcustom' calls.
487Return a list with elements of the form (VAR . VER), 508Return a list with elements of the form (VAR . VER),
@@ -490,8 +511,8 @@ a :version tag having value VER (may be nil).
490If optional argument OLD is non-nil, also scan for defvars." 511If optional argument OLD is non-nil, also scan for defvars."
491 (let ((m (format "Scanning %s..." file)) 512 (let ((m (format "Scanning %s..." file))
492 (re (format "^[ \t]*\\((def%s\\)[ \t\n]" 513 (re (format "^[ \t]*\\((def%s\\)[ \t\n]"
493 (if old "\\(?:custom\\|var\\)" "custom"))) 514 (if old "\\(custom\\|var\\)" "\\(custom\\|group\\)")))
494 alist var ver) 515 alist var ver form glist grp)
495 (message "%s" m) 516 (message "%s" m)
496 (with-temp-buffer 517 (with-temp-buffer
497 (insert-file-contents file) 518 (insert-file-contents file)
@@ -499,15 +520,42 @@ If optional argument OLD is non-nil, also scan for defvars."
499 (while (re-search-forward re nil t) 520 (while (re-search-forward re nil t)
500 (goto-char (match-beginning 1)) 521 (goto-char (match-beginning 1))
501 (if (and (setq form (ignore-errors (read (current-buffer)))) 522 (if (and (setq form (ignore-errors (read (current-buffer))))
502 (setq var (car-safe (cdr-safe form))) 523 (setq var (car-safe (cdr-safe form)))
503 ;; Exclude macros, eg (defcustom ,varname ...). 524 ;; Exclude macros, eg (defcustom ,varname ...).
504 (symbolp var)) 525 (symbolp var))
505 (setq ver (car (cdr-safe (memq :version form))) 526 (progn
506 alist (cons (cons var ver) alist)) 527 (setq ver (car (cdr-safe (memq :version form))))
528 (if (equal "group" (match-string 2))
529 ;; Group :version could be old.
530 (if (equal ver cusver-new-version)
531 (setq glist (cons (cons var ver) glist)))
532 ;; If it specifies a group and the whole group has a
533 ;; version. use that.
534 (unless ver
535 (setq grp (car (cdr-safe (memq :group form))))
536 (and grp
537 (setq grp (car (cdr-safe grp))) ; (quote foo) -> foo
538 (setq ver (assq grp glist))))
539 (setq alist (cons (cons var ver) alist))))
507 (if form (message "Malformed defcustom: `%s'" form))))) 540 (if form (message "Malformed defcustom: `%s'" form)))))
508 (message "%sdone" m) 541 (message "%sdone" m)
509 alist)) 542 alist))
510 543
544(defun cusver-scan-cus-start (file)
545 "Scan cus-start.el and return an alist with elements (VAR . VER)."
546 (if (file-readable-p file)
547 (with-temp-buffer
548 (insert-file-contents file)
549 (when (search-forward "(let ((all '(" nil t)
550 (backward-char 1)
551 (let (var ver alist)
552 (dolist (elem (ignore-errors (read (current-buffer))))
553 (when (symbolp (setq var (car-safe elem)))
554 (or (stringp (setq ver (nth 3 elem)))
555 (setq ver nil))
556 (setq alist (cons (cons var ver) alist))))
557 alist)))))
558
511(define-button-type 'cusver-xref 'action #'cusver-goto-xref) 559(define-button-type 'cusver-xref 'action #'cusver-goto-xref)
512 560
513(defun cusver-goto-xref (button) 561(defun cusver-goto-xref (button)
@@ -523,12 +571,10 @@ If optional argument OLD is non-nil, also scan for defvars."
523 (pop-to-buffer (current-buffer)))))) 571 (pop-to-buffer (current-buffer))))))
524 572
525;; You should probably at least do a grep over the old directory 573;; You should probably at least do a grep over the old directory
526;; to check the results of this look sensible. Eg cus-start if 574;; to check the results of this look sensible.
527;; something moved from C to Lisp. 575;; TODO Check cus-start if something moved from C to Lisp.
528;; TODO handle renamed things with aliases to the old names. 576;; TODO Handle renamed things with aliases to the old names.
529;; What to do about new files? Does everything in there need a :version, 577(defun cusver-check (newdir olddir version)
530;; or eg just the defgroup?
531(defun cusver-check (newdir olddir)
532 "Check that defcustoms have :version tags where needed. 578 "Check that defcustoms have :version tags where needed.
533NEWDIR is the current lisp/ directory, OLDDIR is that from the previous 579NEWDIR is the current lisp/ directory, OLDDIR is that from the previous
534release. A defcustom that is only in NEWDIR should have a :version 580release. A defcustom that is only in NEWDIR should have a :version
@@ -537,11 +583,16 @@ just converting a defvar to a defcustom does not require a :version bump.
537 583
538Note that a :version tag should also be added if the value of a defcustom 584Note that a :version tag should also be added if the value of a defcustom
539changes (in a non-trivial way). This function does not check for that." 585changes (in a non-trivial way). This function does not check for that."
540 (interactive "DNew Lisp directory: \nDOld Lisp directory: ") 586 (interactive (list (read-directory-name "New Lisp directory: ")
587 (read-directory-name "Old Lisp directory: ")
588 (number-to-string
589 (read-number "New version number: "
590 (string-to-number cusver-new-version)))))
541 (or (file-directory-p (setq newdir (expand-file-name newdir))) 591 (or (file-directory-p (setq newdir (expand-file-name newdir)))
542 (error "Directory `%s' not found" newdir)) 592 (error "Directory `%s' not found" newdir))
543 (or (file-directory-p (setq olddir (expand-file-name olddir))) 593 (or (file-directory-p (setq olddir (expand-file-name olddir)))
544 (error "Directory `%s' not found" olddir)) 594 (error "Directory `%s' not found" olddir))
595 (setq cusver-new-version version)
545 (let* ((newfiles (progn (message "Finding new files with defcustoms...") 596 (let* ((newfiles (progn (message "Finding new files with defcustoms...")
546 (cusver-find-files newdir))) 597 (cusver-find-files newdir)))
547 (oldfiles (progn (message "Finding old files with defcustoms...") 598 (oldfiles (progn (message "Finding old files with defcustoms...")
@@ -550,10 +601,12 @@ changes (in a non-trivial way). This function does not check for that."
550 (mapcar 601 (mapcar
551 (lambda (file) 602 (lambda (file)
552 (cons file (cusver-scan file))) newfiles))) 603 (cons file (cusver-scan file))) newfiles)))
553 oldcus result thisfile) 604 oldcus result thisfile file)
554 (message "Reading old defcustoms...") 605 (message "Reading old defcustoms...")
555 (dolist (file oldfiles) 606 (dolist (file oldfiles)
556 (setq oldcus (append oldcus (cusver-scan file t)))) 607 (setq oldcus (append oldcus (cusver-scan file t))))
608 (setq oldcus (append oldcus (cusver-scan-cus-start
609 (expand-file-name "cus-start.el" olddir))))
557 ;; newcus has elements (FILE (VAR VER) ... ). 610 ;; newcus has elements (FILE (VAR VER) ... ).
558 ;; oldcus just (VAR . VER). 611 ;; oldcus just (VAR . VER).
559 (message "Checking for version tags...") 612 (message "Checking for version tags...")
diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c
index 2ad5acadcb0..d8fc97cc721 100644
--- a/admin/alloc-colors.c
+++ b/admin/alloc-colors.c
@@ -1,6 +1,6 @@
1/* Allocate X colors. Used for testing with dense colormaps. 1/* Allocate X colors. Used for testing with dense colormaps.
2 2
3Copyright (C) 2001-2012 Free Software Foundation, Inc. 3Copyright (C) 2001-2013 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
diff --git a/admin/build-configs b/admin/build-configs
index 59a3a1bbbca..8b738befb18 100755
--- a/admin/build-configs
+++ b/admin/build-configs
@@ -1,7 +1,7 @@
1#! /usr/bin/perl 1#! /usr/bin/perl
2# Build Emacs in several different configurations. 2# Build Emacs in several different configurations.
3 3
4# Copyright (C) 2001-2012 Free Software Foundation, Inc. 4# Copyright (C) 2001-2013 Free Software Foundation, Inc.
5 5
6# This file is part of GNU Emacs. 6# This file is part of GNU Emacs.
7 7
diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el
index 8d64dd9edbf..42d39d3071a 100644
--- a/admin/bzrmerge.el
+++ b/admin/bzrmerge.el
@@ -1,6 +1,6 @@
1;;; bzrmerge.el --- help merge one Emacs bzr branch to another 1;;; bzrmerge.el --- help merge one Emacs bzr branch to another
2 2
3;; Copyright (C) 2010-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2013 Free Software Foundation, Inc.
4 4
5;; Author: Stefan Monnier <monnier@iro.umontreal.ca> 5;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6;; Keywords: maint 6;; Keywords: maint
@@ -50,7 +50,7 @@ The list returned is sorted by oldest-first."
50 (call-process "bzr" nil t nil "status" "-v") 50 (call-process "bzr" nil t nil "status" "-v")
51 (goto-char (point-min)) 51 (goto-char (point-min))
52 (when (re-search-forward "^conflicts:\n" nil t) 52 (when (re-search-forward "^conflicts:\n" nil t)
53 (error "You still have unresolved conflicts")) 53 (user-error "You still have unresolved conflicts"))
54 (let ((merges ()) 54 (let ((merges ())
55 found) 55 found)
56 (if (not (re-search-forward "^pending merges:\n" nil t)) 56 (if (not (re-search-forward "^pending merges:\n" nil t))
@@ -62,7 +62,7 @@ The list returned is sorted by oldest-first."
62 (setq found 62 (setq found
63 (not (equal "unknown" (match-string 1))))))) 63 (not (equal "unknown" (match-string 1)))))))
64 found) 64 found)
65 (error "You still have uncommitted changes")) 65 (user-error "You still have uncommitted changes"))
66 ;; This is really stupid, but it seems there's no easy way to figure 66 ;; This is really stupid, but it seems there's no easy way to figure
67 ;; out which revisions have been merged already. The only info I can 67 ;; out which revisions have been merged already. The only info I can
68 ;; find is the "pending merges" from "bzr status -v", which is not 68 ;; find is the "pending merges" from "bzr status -v", which is not
@@ -171,7 +171,7 @@ Type `y' to skip this revision,
171 (enable-local-eval nil)) 171 (enable-local-eval nil))
172 (find-file-noselect file)) 172 (find-file-noselect file))
173 (if (buffer-modified-p) 173 (if (buffer-modified-p)
174 (error "Unsaved changes in %s" (current-buffer))) 174 (user-error "Unsaved changes in %s" (current-buffer)))
175 (save-excursion 175 (save-excursion
176 (cond 176 (cond
177 ((derived-mode-p 'change-log-mode) 177 ((derived-mode-p 'change-log-mode)
@@ -320,10 +320,10 @@ Does not make other difference."
320 ;; bzrmerge-add-metadata does not work when there 320 ;; bzrmerge-add-metadata does not work when there
321 ;; are conflicts. 321 ;; are conflicts.
322 (display-warning 'bzrmerge "Resolve conflicts manually. 322 (display-warning 'bzrmerge "Resolve conflicts manually.
323¡BEWARE! Important metadata is kept in this Emacs session! 323BEWARE! Important metadata is kept in this Emacs session!
324Do not commit without re-running `M-x bzrmerge' first!" 324Do not commit without re-running `M-x bzrmerge' first!"
325 :warning bzrmerge-warning-buffer)) 325 :warning bzrmerge-warning-buffer))
326 (error "Resolve conflicts manually"))))) 326 (user-error "Resolve conflicts manually")))))
327 (cons merge skip))))) 327 (cons merge skip)))))
328 328
329(defun bzrmerge (from) 329(defun bzrmerge (from)
diff --git a/admin/charsets/Makefile b/admin/charsets/Makefile
index b16e7ccd748..e5cf2508d85 100644
--- a/admin/charsets/Makefile
+++ b/admin/charsets/Makefile
@@ -77,6 +77,7 @@ MULE = MULE-ethiopic.map MULE-ipa.map MULE-is13194.map \
77 MULE-lviscii.map MULE-uviscii.map 77 MULE-lviscii.map MULE-uviscii.map
78 78
79TRANS_TABLE = cp51932.el eucjp-ms.el 79TRANS_TABLE = cp51932.el eucjp-ms.el
80SED_SCRIPT = jisx2131-filter
80 81
81all: ${CHARSETS} ${TRANS_TABLE} 82all: ${CHARSETS} ${TRANS_TABLE}
82 83
@@ -86,11 +87,11 @@ AWK = gawk
86 87
87VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk 88VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
88 # Generating $@... 89 # Generating $@...
89 @mapconv $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 compact.awk > $@ 90 @./mapconv $< '/^<.*[ ]\/x[0-9a-f].[ ]/' GLIBC-1 compact.awk > $@
90 91
91VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk 92VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk
92 # Generating $@... 93 # Generating $@...
93 @mapconv $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 compact.awk \ 94 @./mapconv $< '/^<.*[ ]\/x[2-7a-f].[ ]/' GLIBC-1 compact.awk \
94 | sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@ 95 | sed 's/0x20-0x7F.*/0x00-0x7F 0x0000/' > $@
95 96
96ALTERNATIVNYJ.map: IBM866.map 97ALTERNATIVNYJ.map: IBM866.map
@@ -110,45 +111,45 @@ ALTERNATIVNYJ.map: IBM866.map
110 -e '/0xFA/ s/ .*/ 0x00B1/' \ 111 -e '/0xFA/ s/ .*/ 0x00B1/' \
111 -e '/0xFB/ s/ .*/ 0x00F7/' < $< >> $@ 112 -e '/0xFB/ s/ .*/ 0x00F7/' < $< >> $@
112 113
113MIK.map: mapfiles/bulgarian-mik.txt.gz mapconv compact.awk 114MIK.map: mapfiles/bulgarian-mik.txt mapconv compact.awk
114 # Generating $@... 115 # Generating $@...
115 @mapconv $< '1,$$' CZYBORRA compact.awk > $@ 116 @./mapconv $< '1,$$' CZYBORRA compact.awk > $@
116 117
117PTCP154.map: mapfiles/PTCP154.gz mapconv compact.awk 118PTCP154.map: mapfiles/PTCP154 mapconv compact.awk
118 # Generating $@... 119 # Generating $@...
119 @mapconv $< '/^0x/' IANA compact.awk > $@ 120 @./mapconv $< '/^0x/' IANA compact.awk > $@
120 121
121stdenc.map: mapfiles/stdenc.txt.gz mapconv compact.awk 122stdenc.map: mapfiles/stdenc.txt mapconv compact.awk
122 # Generating $@... 123 # Generating $@...
123 @mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@ 124 @./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
124 125
125symbol.map: mapfiles/symbol.txt.gz mapconv compact.awk 126symbol.map: mapfiles/symbol.txt mapconv compact.awk
126 # Generating $@... 127 # Generating $@...
127 @mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@ 128 @./mapconv $< '/^[0-9A-Fa-f]/' UNICODE compact.awk > $@
128 129
129CP720.map: mapfiles/CP720.map.gz 130CP720.map: mapfiles/CP720.map
130 # Generating $@... 131 # Generating $@...
131 @zcat $< > $@ 132 @cp $< $@
132 133
133CP858.map: mapfiles/CP858.map.gz 134CP858.map: mapfiles/CP858.map
134 # Generating $@... 135 # Generating $@...
135 @zcat $< > $@ 136 @cp $< $@
136 137
137CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk 138CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk
138 # Generating $@... 139 # Generating $@...
139 @mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ 140 @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
140 141
141GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk 142GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk
142 # Generating $@... 143 # Generating $@...
143 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ 144 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
144 145
145GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk 146GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk
146 # Generating $@... 147 # Generating $@...
147 @mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ 148 @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
148 149
149GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk 150GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk
150 # Generating $@... 151 # Generating $@...
151 @mapconv $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 gb180302.awk > $@ 152 @./mapconv $< '/^<.*[ ]\/x..\/x..[ ]/' GLIBC-2 gb180302.awk > $@
152 153
153GB180304.map: GB180302.map gb180304.awk 154GB180304.map: GB180302.map gb180304.awk
154 # Generating $@... 155 # Generating $@...
@@ -156,35 +157,39 @@ GB180304.map: GB180302.map gb180304.awk
156 157
157JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk 158JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk
158 # Generating $@... 159 # Generating $@...
159 @mapconv $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 compact.awk > $@ 160 @./mapconv $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 compact.awk > $@
160 @echo "# Generated by hand" >> $@ 161 @echo "# Generated by hand" >> $@
161 @echo "0xA1-0xDF 0xFF61" >> $@ 162 @echo "0xA1-0xDF 0xFF61" >> $@
162 163
163JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv 164JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv
164 # Generating $@... 165 # Generating $@...
165 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ 166 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
166 | sed 's/0x2015/0x2014/' > $@ 167 | sed 's/0x2015/0x2014/' > $@
167 168
168JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk 169JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk
169 # Generating $@... 170 # Generating $@...
170 @mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 compact.awk > $@ 171 @./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 compact.awk > $@
171 172
172JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv 173jisx2131-filter: mapfiles/JISX213A.map
174 @sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@
175
176JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv jisx2131-filter
173 # Generating $@... 177 # Generating $@...
174 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \ 178 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 \
179 | sed -f jisx2131-filter \
175 | sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@ 180 | sed -e 's/0x2015/0x2014/' -e 's/0x2299/0x29BF/' > $@
176 181
177JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv 182JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv
178 # Generating $@... 183 # Generating $@...
179 @mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@ 184 @./mapconv $< '/^<.*[ ]\/x8f/ s,/x8f,,' GLIBC-2-7 > $@
180 185
181JISX213A.map: mapfiles/JISX213A.map.gz 186JISX213A.map: mapfiles/JISX213A.map
182 # Generating $@ 187 # Generating $@
183 @zcat $< > $@ 188 @cp $< $@
184 189
185CP932-2BYTE.map: mapfiles/CP932.TXT.gz mapconv cp932.awk 190CP932-2BYTE.map: mapfiles/CP932.TXT mapconv cp932.awk
186 # Generating $@... 191 # Generating $@...
187 @mapconv $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 cp932.awk > $@ 192 @./mapconv $< '/^0x[89A-F][0-9A-F][0-9A-F]/' UNICODE2 cp932.awk > $@
188 193
189cp51932.el: CP932-2BYTE.map cp51932.awk 194cp51932.el: CP932-2BYTE.map cp51932.awk
190 @$(AWK) -f cp51932.awk < CP932-2BYTE.map > $@ 195 @$(AWK) -f cp51932.awk < CP932-2BYTE.map > $@
@@ -192,17 +197,27 @@ cp51932.el: CP932-2BYTE.map cp51932.awk
192eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk 197eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk
193 @zcat $< | $(AWK) -f eucjp-ms.awk > $@ 198 @zcat $< | $(AWK) -f eucjp-ms.awk > $@
194 199
195JISC6226.map : mapfiles/Uni2JIS.gz mapconv kuten.awk 200JISC6226.map: mapfiles/Uni2JIS mapconv kuten.awk
196 # Generating $@... 201 # Generating $@...
197 @mapconv $< '/^[^#].*0-/' YASUOKA kuten.awk > $@ 202# As Uni2JIS doesn't contain mappings of characters added to Unicode
203# recently, we add them manually here (including one correction for
204# U+005C vs U+FF3C). These changes are based on bogytech's blog at
205# http://bogytech.blogspot.jp/search/label/emacs.
206 @./mapconv $< '/^[^#].*0-/' YASUOKA kuten.awk \
207 | sed -e '/0x2140/s/005C/FF3C/' \
208 -e '$$ a 0x3442 0x3D4E' \
209 -e '$$ a 0x374E 0x25874' \
210 -e '$$ a 0x3764 0x28EF6' \
211 -e '$$ a 0x513D 0x2F80F' \
212 -e '$$ a 0x7045 0x9724' > $@
198 213
199KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk 214KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk
200 # Generating $@... 215 # Generating $@...
201 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ 216 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
202 217
203BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk 218BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk
204 # Generating $@... 219 # Generating $@...
205 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@ 220 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2 > $@
206 221
207BIG5-1.map: BIG5.map mapconv big5.awk 222BIG5-1.map: BIG5.map mapconv big5.awk
208 # Generating $@... 223 # Generating $@...
@@ -216,52 +231,52 @@ BIG5-2.map: BIG5.map mapconv big5.awk
216 231
217BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk 232BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk
218 # Generating $@... 233 # Generating $@...
219 @mapconv $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 compact.awk > $@ 234 @./mapconv $< '/^<.*[ ]\/x[89a-f].\//' GLIBC-2 compact.awk > $@
220 235
221JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk 236JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk
222 # Generating $@... 237 # Generating $@...
223 @mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@ 238 @./mapconv $< '/^<.*[ ]\/x[89a-f]/' GLIBC-2 compact.awk > $@
224 239
225CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk 240CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
226 # Generating $@... 241 # Generating $@...
227 @mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@ 242 @./mapconv $< '/^<.*[ ]\/x[a-f]/' GLIBC-2-7 compact.awk > $@
228 243
229# CNS-1.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk 244# CNS-1.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
230# # Generating $@... 245# # Generating $@...
231# @mapconv $< '/^C1/' KANJI-DATABASE compact.awk > $@ 246# @./mapconv $< '/^C1/' KANJI-DATABASE compact.awk > $@
232 247
233CNS-2.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 248CNS-2.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
234 # Generating $@... 249 # Generating $@...
235 @mapconv $< '/^C2/' KANJI-DATABASE compact.awk > $@ 250 @./mapconv $< '/^C2/' KANJI-DATABASE compact.awk > $@
236 251
237CNS-3.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 252CNS-3.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
238 # Generating $@... 253 # Generating $@...
239 @mapconv $< '/^C3/' KANJI-DATABASE compact.awk > $@ 254 @./mapconv $< '/^C3/' KANJI-DATABASE compact.awk > $@
240 255
241CNS-4.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 256CNS-4.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
242 # Generating $@... 257 # Generating $@...
243 @mapconv $< '/^C4/' KANJI-DATABASE compact.awk > $@ 258 @./mapconv $< '/^C4/' KANJI-DATABASE compact.awk > $@
244 259
245CNS-5.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 260CNS-5.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
246 # Generating $@... 261 # Generating $@...
247 @mapconv $< '/^C5/' KANJI-DATABASE compact.awk > $@ 262 @./mapconv $< '/^C5/' KANJI-DATABASE compact.awk > $@
248 263
249CNS-6.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 264CNS-6.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
250 # Generating $@... 265 # Generating $@...
251 @mapconv $< '/^C6/' KANJI-DATABASE compact.awk > $@ 266 @./mapconv $< '/^C6/' KANJI-DATABASE compact.awk > $@
252 267
253CNS-7.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk 268CNS-7.map: mapfiles/cns2ucsdkw.txt mapconv compact.awk
254 # Generating $@... 269 # Generating $@...
255 @mapconv $< '/^C7/' KANJI-DATABASE compact.awk > $@ 270 @./mapconv $< '/^C7/' KANJI-DATABASE compact.awk > $@
256 271
257CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk 272CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk
258 # Generating $@... 273 # Generating $@...
259 @mapconv $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 compact.awk > $@ 274 @./mapconv $< '/^<.*\/x8e\/xaf/ s,/x8e/xaf,,' GLIBC-2-7 compact.awk > $@
260 275
261# General target to produce map files for mule charsets. 276# General target to produce map files for mule charsets.
262MULE-%.map: mapfiles/MULE-%.map.gz 277MULE-%.map: mapfiles/MULE-%.map
263 # Generating $@... 278 # Generating $@...
264 @zcat $< > $@ 279 @cp $< $@
265 280
266# General target to produce map files for ISO-8859, GEORGIAN, and 281# General target to produce map files for ISO-8859, GEORGIAN, and
267# EBCDIC charsets. We can not use the original file name because of 282# EBCDIC charsets. We can not use the original file name because of
@@ -269,21 +284,21 @@ MULE-%.map: mapfiles/MULE-%.map.gz
269 284
2708859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk 2858859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk
271 # Generating $@... 286 # Generating $@...
272 @mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ 287 @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
273 288
274KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk 289KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk
275 # Generating $@... 290 # Generating $@...
276 @mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ 291 @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
277 292
278EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk 293EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk
279 # Generating $@... 294 # Generating $@...
280 @mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ 295 @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
281 296
282# General target to produce map files for single-byte charsets. 297# General target to produce map files for single-byte charsets.
283 298
284%.map: ${GLIBC_CHARMAPS}/%.gz mapconv compact.awk 299%.map: ${GLIBC_CHARMAPS}/%.gz mapconv compact.awk
285 # Generating $@... 300 # Generating $@...
286 @mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@ 301 @./mapconv $< '/^<.*[ ]\/x/' GLIBC-1 compact.awk > $@
287 302
288install: 303install:
289 @for f in ${CHARSETS}; do \ 304 @for f in ${CHARSETS}; do \
@@ -305,5 +320,5 @@ install:
305 320
306# Clear files that are automatically generated. 321# Clear files that are automatically generated.
307clean: 322clean:
308 rm -f ${CHARSETS} ${TRANS_TABLE} 323 rm -f ${CHARSETS} ${TRANS_TABLE} ${SED_SCRIPT}
309 324
diff --git a/admin/charsets/gb180302.awk b/admin/charsets/gb180302.awk
index 6cd9521ce90..40d92bf9be4 100644
--- a/admin/charsets/gb180302.awk
+++ b/admin/charsets/gb180302.awk
@@ -74,19 +74,30 @@ function index_to_gb(idx) {
74 74
75{ 75{
76 gb = gb_to_index(decode_hex(substr($1, 3, 4))); 76 gb = gb_to_index(decode_hex(substr($1, 3, 4)));
77 unicode = decode_hex(substr($2, 3, 4)); 77 unicode = decode_hex(substr($2, 3));
78 if ((gb == to_gb + 1) && (unicode == to_unicode + 1)) 78 if ((gb == to_gb + 1) && (unicode == to_unicode + 1))
79 { 79 {
80 to_gb++; 80 to_gb++;
81 to_unicode++; 81 to_unicode++;
82 } 82 }
83 else 83 else if (gb > to_gb) # ignore the case gb == to_gb that is a duplication
84 { 84 {
85 if (from_gb == to_gb) 85 if (from_gb == to_gb)
86 printf "0x%04X 0x%04X\n", index_to_gb(from_gb), from_unicode; 86 {
87 if (from_unicode <= 65535)
88 printf "0x%04X 0x%04X\n", index_to_gb(from_gb), from_unicode;
89 else
90 printf "0x%04X 0x%08X\n", index_to_gb(from_gb), from_unicode;
91 }
87 else if (from_gb < to_gb) 92 else if (from_gb < to_gb)
88 printf "0x%04X-0x%04X 0x%04X\n", 93 {
89 index_to_gb(from_gb), index_to_gb(to_gb), from_unicode; 94 if (from_unicode <= 65535)
95 printf "0x%04X-0x%04X 0x%04X\n",
96 index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
97 else
98 printf "0x%04X-0x%04X 0x%08X\n",
99 index_to_gb(from_gb), index_to_gb(to_gb), from_unicode;
100 }
90 from_gb = to_gb = gb; 101 from_gb = to_gb = gb;
91 from_unicode = to_unicode = unicode; 102 from_unicode = to_unicode = unicode;
92 } 103 }
diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv
index 4f7a8b96f54..8433d222b8d 100755
--- a/admin/charsets/mapconv
+++ b/admin/charsets/mapconv
@@ -98,18 +98,17 @@ elif [ "$3" = "GLIBC-2-7" ] ; then
98 | sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \ 98 | sed -e 's/xa/x2/g' -e 's/xb/x3/g' -e 's/xc/x4/g' \
99 -e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \ 99 -e 's/xd/x5/g' -e 's/xe/x6/g' -e 's/xf/x7/g' \
100 -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \ 100 -e 's,<U\([^>]*\)>[ ]*/x\(..\)/x\(..\).*,0x\2\3 0x\1,' \
101 | tee temp \
102 | sort | ${AWKPROG} 101 | sort | ${AWKPROG}
103elif [ "$3" = "CZYBORRA" ] ; then 102elif [ "$3" = "CZYBORRA" ] ; then
104 # Source format is: 103 # Source format is:
105 # =XX U+YYYY 104 # =XX U+YYYY
106 zcat $1 | sed -n -e "$2 p" \ 105 sed -n -e "$2 p" < $1 \
107 | sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \ 106 | sed -e 's/=\(..\)[^U]*U+\([0-9A-F]*\).*/0x\1 0x\2/' \
108 | sort | ${AWKPROG} 107 | sort | ${AWKPROG}
109elif [ "$3" = "IANA" ] ; then 108elif [ "$3" = "IANA" ] ; then
110 # Source format is: 109 # Source format is:
111 # 0xXX 0xYYYY 110 # 0xXX 0xYYYY
112 zcat $1 | sed -n -e "$2 p" \ 111 sed -n -e "$2 p" < $1 \
113 | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ 112 | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \
114 | sort | ${AWKPROG} 113 | sort | ${AWKPROG}
115elif [ "$3" = "UNICODE" ] ; then 114elif [ "$3" = "UNICODE" ] ; then
@@ -117,25 +116,25 @@ elif [ "$3" = "UNICODE" ] ; then
117 # YYYY XX 116 # YYYY XX
118 # We perform reverse sort to prefer the first one in the 117 # We perform reverse sort to prefer the first one in the
119 # duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0). 118 # duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0).
120 zcat $1 | sed -n -e "$2 p" \ 119 sed -n -e "$2 p" < $1 \
121 | sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \ 120 | sed -e 's/\([0-9A-F]*\)[^0-9A-F]*\([0-9A-F]*\).*/0x\2 0x\1/' \
122 | sort -r 121 | sort -r
123elif [ "$3" = "UNICODE2" ] ; then 122elif [ "$3" = "UNICODE2" ] ; then
124 # Source format is: 123 # Source format is:
125 # 0xXXXX 0xYYYY # ... 124 # 0xXXXX 0xYYYY # ...
126 zcat $1 | sed -n -e "$2 p" \ 125 sed -n -e "$2 p" < $1 \
127 | sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \ 126 | sed -e 's/\([0-9A-Fx]*\)[^0]*\([0-9A-Fx]*\).*/\1 \2/' \
128 | ${AWKPROG} | sort -n -k 4,4 127 | ${AWKPROG} | sort -n -k 4,4
129elif [ "$3" = "YASUOKA" ] ; then 128elif [ "$3" = "YASUOKA" ] ; then
130 # Source format is: 129 # Source format is:
131 # YYYY 0-XXXX (XXXX is a Kuten code) 130 # YYYY 0-XXXX (XXXX is a Kuten code)
132 zcat $1 | sed -n -e "$2 p" \ 131 sed -n -e "$2 p" < $1 \
133 | sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \ 132 | sed -e 's/\([0-9A-F]*\)[^0]*0-\([0-9]*\).*/0x\2 0x\1/' \
134 | sort | ${AWKPROG} 133 | sort | ${AWKPROG}
135elif [ "$3" = "KANJI-DATABASE" ] ; then 134elif [ "$3" = "KANJI-DATABASE" ] ; then
136 # Source format is: 135 # Source format is:
137 # C?-XXXX U+YYYYY ..... 136 # C?-XXXX U+YYYYY .....
138 zcat $1 | sed -n -e "$2 p" \ 137 sed -n -e "$2 p" < $1 \
139 | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \ 138 | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \
140 | sort | ${AWKPROG} 139 | sort | ${AWKPROG}
141else 140else
diff --git a/admin/charsets/mapfiles/MULE-ethiopic.map b/admin/charsets/mapfiles/MULE-ethiopic.map
index d2720bd10ba..30cf5736763 100644
--- a/admin/charsets/mapfiles/MULE-ethiopic.map
+++ b/admin/charsets/mapfiles/MULE-ethiopic.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x2121 0x1200 20x2121 0x1200
30x2122 0x1201 30x2122 0x1201
40x2123 0x1202 40x2123 0x1202
diff --git a/admin/charsets/mapfiles/MULE-ipa.map b/admin/charsets/mapfiles/MULE-ipa.map
index 35e5d50ecec..0a6c61d5a95 100644
--- a/admin/charsets/mapfiles/MULE-ipa.map
+++ b/admin/charsets/mapfiles/MULE-ipa.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x20 0x0069 20x20 0x0069
30x21 0x026A 30x21 0x026A
40x22 0x0065 40x22 0x0065
diff --git a/admin/charsets/mapfiles/MULE-is13194.map b/admin/charsets/mapfiles/MULE-is13194.map
index 1fa9b21dcf8..390132cd375 100644
--- a/admin/charsets/mapfiles/MULE-is13194.map
+++ b/admin/charsets/mapfiles/MULE-is13194.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x21 0x0901 20x21 0x0901
30x22 0x0902 30x22 0x0902
40x23 0x0903 40x23 0x0903
diff --git a/admin/charsets/mapfiles/MULE-lviscii.map b/admin/charsets/mapfiles/MULE-lviscii.map
index 3b6a38be616..e4d2eca90ac 100644
--- a/admin/charsets/mapfiles/MULE-lviscii.map
+++ b/admin/charsets/mapfiles/MULE-lviscii.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x21 0x1EAF 20x21 0x1EAF
30x22 0x1EB1 30x22 0x1EB1
40x23 0x1EB7 40x23 0x1EB7
diff --git a/admin/charsets/mapfiles/MULE-sisheng.map b/admin/charsets/mapfiles/MULE-sisheng.map
index 405bb1ffa2c..144a3ff5134 100644
--- a/admin/charsets/mapfiles/MULE-sisheng.map
+++ b/admin/charsets/mapfiles/MULE-sisheng.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x21 0x0101 20x21 0x0101
30x22 0x00E1 30x22 0x00E1
40x23 0x01CE 40x23 0x01CE
diff --git a/admin/charsets/mapfiles/MULE-tibetan.map b/admin/charsets/mapfiles/MULE-tibetan.map
index 0d6ff3a0a39..b885585c094 100644
--- a/admin/charsets/mapfiles/MULE-tibetan.map
+++ b/admin/charsets/mapfiles/MULE-tibetan.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x2130 0x0F00 20x2130 0x0F00
30x2131 0x0F01 30x2131 0x0F01
40x2132 0x0F02 40x2132 0x0F02
diff --git a/admin/charsets/mapfiles/MULE-uviscii.map b/admin/charsets/mapfiles/MULE-uviscii.map
index 65e5d2968e5..dc19583bdfe 100644
--- a/admin/charsets/mapfiles/MULE-uviscii.map
+++ b/admin/charsets/mapfiles/MULE-uviscii.map
@@ -1,4 +1,4 @@
1# Generated by running amdin/charsets/mule-charsets.el in Emacs 22.3. 1# Generated by running admin/charsets/mule-charsets.el in Emacs 22.3.
20x21 0x1EAE 20x21 0x1EAE
30x22 0x1EB0 30x22 0x1EB0
40x23 0x1EB6 40x23 0x1EB6
diff --git a/admin/charsets/mapfiles/README b/admin/charsets/mapfiles/README
index b43611db11d..0a742854811 100644
--- a/admin/charsets/mapfiles/README
+++ b/admin/charsets/mapfiles/README
@@ -1,4 +1,4 @@
1Copyright (C) 2009-2012 Free Software Foundation, Inc. 1Copyright (C) 2009-2013 Free Software Foundation, Inc.
2Copyright (C) 2009, 2010, 2011 2Copyright (C) 2009, 2010, 2011
3 National Institute of Advanced Industrial Science and Technology (AIST) 3 National Institute of Advanced Industrial Science and Technology (AIST)
4 Registration Number H13PRO009 4 Registration Number H13PRO009
diff --git a/admin/check-doc-strings b/admin/check-doc-strings
index ef4b203cd79..c69ff47ebfb 100755
--- a/admin/check-doc-strings
+++ b/admin/check-doc-strings
@@ -17,7 +17,7 @@ formal parameters, docstrings, and lispref texi.
17This program is in the public domain.\n"; 17This program is in the public domain.\n";
18 18
19die $usage if @ARGV; 19die $usage if @ARGV;
20die $usage unless -r "src/alloc.c" && -d "CVS" && -d "lisp"; 20die $usage unless -r "src/alloc.c" && -d ".bzr" && -d "lisp";
21 21
22my %texi_funtype; 22my %texi_funtype;
23my %texi_arglist; 23my %texi_arglist;
@@ -197,10 +197,8 @@ sub Check_function {
197 Show_details $show_details, $function, "@parms", $docstring; 197 Show_details $show_details, $function, "@parms", $docstring;
198} 198}
199 199
200my $lisprefdir; 200my $lisprefdir = "doc/lispref";
201if (-d "man/lispref") { $lisprefdir = "man/lispref"; } 201die "Can't find lispref texi directory.\n" unless -d $lisprefdir;
202elsif (-d "lispref") { $lisprefdir = "lispref"; }
203else { die "Can't find lispref texi directory.\n"; }
204 202
205open (FIND, "find $lisprefdir -name '*.texi' -print |") or die; 203open (FIND, "find $lisprefdir -name '*.texi' -print |") or die;
206while (my $file = <FIND>) { 204while (my $file = <FIND>) {
diff --git a/admin/coccinelle/xsave.cocci b/admin/coccinelle/xsave.cocci
new file mode 100644
index 00000000000..5172bb55b33
--- /dev/null
+++ b/admin/coccinelle/xsave.cocci
@@ -0,0 +1,11 @@
1// Adjust users of XSAVE_POINTER and XSAVE_INTEGER.
2@@
3expression E;
4@@
5(
6- XSAVE_POINTER (E)
7+ XSAVE_POINTER (E, 0)
8|
9- XSAVE_INTEGER (E)
10+ XSAVE_INTEGER (E, 1)
11)
diff --git a/admin/cus-test.el b/admin/cus-test.el
index 11d781ed01e..6b8ec9abe02 100644
--- a/admin/cus-test.el
+++ b/admin/cus-test.el
@@ -1,6 +1,6 @@
1;;; cus-test.el --- tests for custom types and load problems 1;;; cus-test.el --- tests for custom types and load problems
2 2
3;; Copyright (C) 1998, 2000, 2002-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1998, 2000, 2002-2013 Free Software Foundation, Inc.
4 4
5;; Author: Markus Rost <markus.rost@mathematik.uni-regensburg.de> 5;; Author: Markus Rost <markus.rost@mathematik.uni-regensburg.de>
6;; Maintainer: Markus Rost <rost@math.ohio-state.edu> 6;; Maintainer: Markus Rost <rost@math.ohio-state.edu>
@@ -30,11 +30,11 @@
30;; 30;;
31;; The basic tests can be run in batch mode. Invoke them with 31;; The basic tests can be run in batch mode. Invoke them with
32;; 32;;
33;; src/emacs -batch -l admin/cus-test.el -f cus-test-opts 33;; src/emacs -batch -l admin/cus-test.el -f cus-test-opts [all]
34;; 34;;
35;; src/emacs -batch -l admin/cus-test.el -f cus-test-deps 35;; src/emacs -batch -l admin/cus-test.el -f cus-test-deps
36;; 36;;
37;; src/emacs -batch -l admin/cus-test.el -f cus-test-libs 37;; src/emacs -batch -l admin/cus-test.el -f cus-test-libs [all]
38;; 38;;
39;; src/emacs -batch -l admin/cus-test.el -f cus-test-noloads 39;; src/emacs -batch -l admin/cus-test.el -f cus-test-noloads
40;; 40;;
@@ -87,43 +87,6 @@
87;; The command `cus-test-noloads' returns a list of variables which 87;; The command `cus-test-noloads' returns a list of variables which
88;; are somewhere declared as custom options, but not loaded by 88;; are somewhere declared as custom options, but not loaded by
89;; `custom-load-symbol'. 89;; `custom-load-symbol'.
90;;
91;; Some results from October 2002:
92;;
93;; 4523 options tested
94;; The following variables might have problems:
95;; ps-mule-font-info-database-default
96;; grep-tree-command
97;; grep-find-command
98;;
99;; 288 features required
100;; 10 files loaded
101;; The following load problems appeared:
102;; (killing x-win (file-error Cannot open load file x-win))
103;; Symbol faces has loaddefs as custom dependency
104;; (reftex-index-support reftex-vars (void-function reftex-set-dirty))
105;; (eshell-script em-script (void-variable eshell-directory-name))
106;; (pcomplete em-cmpl (void-function eshell-under-windows-p))
107;; (eshell-ext esh-ext (void-function eshell-under-windows-p))
108;; ...
109;;
110;; 422 libraries had no load errors
111;; The following load problems appeared:
112;; (eudc-export error 255)
113;; (ada-xref error 255)
114;; (ada-stmt error 255)
115;;
116;; The following options were not loaded by custom-load-symbol:
117;; edt-bottom-scroll-margin
118;; edt-keep-current-page-delimiter
119;; edt-top-scroll-margin
120;; edt-use-EDT-control-key-bindings
121;; edt-word-entities
122;; grep-find-use-xargs
123;; master-mode-hook
124;; outline-level
125;; outline-minor-mode-hook
126;; refill-mode-hook
127 90
128 91
129;;; Code: 92;;; Code:
@@ -136,24 +99,23 @@
136(defvar cus-test-skip-list nil 99(defvar cus-test-skip-list nil
137 "List of variables to disregard by `cus-test-apropos'.") 100 "List of variables to disregard by `cus-test-apropos'.")
138 101
139(defvar cus-test-libs-noloads nil 102(defvar cus-test-libs-noloads
140 "List of libraries not to load by `cus-test-load-libs'.") 103 ;; Loading dunnet in batch mode leads to a Dead end.
141 104 ;; blessmail writes a file.
142;; The file eudc-export.el loads libraries "bbdb" and "bbdb-com" which 105 ;; characters cannot be loaded twice ("Category `a' is already defined").
143;; are not part of GNU Emacs: (locate-library "bbdb") => nil 106 '("play/dunnet.el" "emulation/edt-mapper.el"
144;; We avoid the resulting errors from loading eudc-export.el: 107 "loadup.el" "mail/blessmail.el" "international/characters.el"
145(provide 'bbdb) 108 "cedet/ede/loaddefs.el" "cedet/semantic/loaddefs.el"
146(provide 'bbdb-com) 109 "net/tramp-loaddefs.el")
110 "List of files not to load by `cus-test-load-libs'.
111Names should be as they appear in loaddefs.el.")
147 112
148;; This avoids a hang of `cus-test-apropos' in 21.2. 113;; This avoids a hang of `cus-test-apropos' in 21.2.
149;; (add-to-list 'cus-test-skip-list 'sh-alias-alist) 114;; (add-to-list 'cus-test-skip-list 'sh-alias-alist)
150 115
151;; Loading dunnet in batch mode leads to a Dead end. 116(or noninteractive
152(let (noninteractive) (load "dunnet")) 117 ;; Never Viperize.
153(add-to-list 'cus-test-libs-noloads "dunnet") 118 (setq viper-mode nil))
154
155;; Never Viperize.
156(setq viper-mode nil)
157 119
158;; Don't create a file `save-place-file'. 120;; Don't create a file `save-place-file'.
159(eval-after-load "saveplace" 121(eval-after-load "saveplace"
@@ -270,17 +232,38 @@ The detected problematic options are stored in `cus-test-errors'."
270 (length cus-test-tested-variables)) 232 (length cus-test-tested-variables))
271 (cus-test-errors-display)) 233 (cus-test-errors-display))
272 234
273(defun cus-test-get-options (regexp) 235(defun cus-test-cus-load-groups (&optional cus-load)
274 "Return a list of custom options matching REGEXP." 236 "Return a list of current custom groups.
275 (let (found) 237If CUS-LOAD is non-nil, include groups from cus-load.el."
238 (append (mapcar 'cdr custom-current-group-alist)
239 (if cus-load
240 (with-temp-buffer
241 (insert-file-contents (locate-library "cus-load.el"))
242 (search-forward "(put '")
243 (beginning-of-line)
244 (let (res)
245 (while (and (looking-at "^(put '\\(\\S-+\\)")
246 (zerop (forward-line 1)))
247 (push (intern (match-string 1)) res))
248 res)))))
249
250(defun cus-test-get-options (regexp &optional group)
251 "Return a list of custom options matching REGEXP.
252If GROUP is non-nil, return groups rather than options.
253If GROUP is `cus-load', include groups listed in cus-loads as well as
254currently defined groups."
255 (let ((groups (if group (cus-test-cus-load-groups (eq group 'cus-load))))
256 found)
276 (mapatoms 257 (mapatoms
277 (lambda (symbol) 258 (lambda (symbol)
278 (and 259 (and
279 (or 260 (if group
280 ;; (user-variable-p symbol) 261 (memq symbol groups)
281 (get symbol 'standard-value) 262 (or
282 ;; (get symbol 'saved-value) 263 ;; (user-variable-p symbol)
283 (get symbol 'custom-type)) 264 (get symbol 'standard-value)
265 ;; (get symbol 'saved-value)
266 (get symbol 'custom-type)))
284 (string-match regexp (symbol-name symbol)) 267 (string-match regexp (symbol-name symbol))
285 (not (member symbol cus-test-skip-list)) 268 (not (member symbol cus-test-skip-list))
286 (push symbol found)))) 269 (push symbol found))))
@@ -302,49 +285,71 @@ The detected problematic options are stored in `cus-test-errors'."
302(defun cus-test-load-custom-loads () 285(defun cus-test-load-custom-loads ()
303 "Call `custom-load-symbol' on all atoms." 286 "Call `custom-load-symbol' on all atoms."
304 (interactive) 287 (interactive)
288 (if noninteractive (let (noninteractive) (require 'dunnet)))
305 (mapatoms 'custom-load-symbol) 289 (mapatoms 'custom-load-symbol)
306 (run-hooks 'cus-test-after-load-libs-hook)) 290 (run-hooks 'cus-test-after-load-libs-hook))
307 291
308(defun cus-test-load-libs () 292(defmacro cus-test-load-1 (&rest body)
293 `(progn
294 (setq cus-test-libs-errors nil
295 cus-test-libs-loaded nil)
296 ,@body
297 (message "%s libraries loaded successfully"
298 (length cus-test-libs-loaded))
299 (if (not cus-test-libs-errors)
300 (message "No load problems encountered")
301 (message "The following load problems appeared:")
302 (cus-test-message cus-test-libs-errors))
303 (run-hooks 'cus-test-after-load-libs-hook)))
304
305;; This is just cus-test-libs, but loading in the current Emacs process.
306(defun cus-test-load-libs (&optional more)
309 "Load the libraries with autoloads. 307 "Load the libraries with autoloads.
310Don't load libraries in `cus-test-libs-noloads'." 308Don't load libraries in `cus-test-libs-noloads'.
309If optional argument MORE is \"defcustom\", load all files with defcustoms.
310If it is \"all\", load all Lisp files."
311 (interactive) 311 (interactive)
312 (setq cus-test-libs-errors nil) 312 (cus-test-load-1
313 (setq cus-test-libs-loaded nil) 313 (let ((lispdir (file-name-directory (locate-library "loaddefs"))))
314 (mapc 314 (mapc
315 (lambda (file) 315 (lambda (file)
316 (condition-case alpha 316 (condition-case alpha
317 (unless (member file cus-test-libs-noloads) 317 (unless (member file cus-test-libs-noloads)
318 (load file) 318 (load (file-name-sans-extension (expand-file-name file lispdir)))
319 (push file cus-test-libs-loaded)) 319 (push file cus-test-libs-loaded))
320 (error 320 (error
321 (push (cons file alpha) cus-test-libs-errors) 321 (push (cons file alpha) cus-test-libs-errors)
322 (message "Error for %s: %s" file alpha)))) 322 (message "Error for %s: %s" file alpha))))
323 (cus-test-get-autoload-deps)) 323 (if more
324 (message "%s libraries loaded successfully" 324 (cus-test-get-lisp-files (equal more "all"))
325 (length cus-test-libs-loaded)) 325 (cus-test-get-autoload-deps))))))
326 (if (not cus-test-libs-errors)
327 (message "No load problems encountered")
328 (message "The following load problems appeared:")
329 (cus-test-message cus-test-libs-errors))
330 (run-hooks 'cus-test-after-load-libs-hook))
331 326
332(defun cus-test-get-autoload-deps () 327(defun cus-test-get-autoload-deps ()
333 "Return the list of libraries with autoloads." 328 "Return the list of files with autoloads."
334 (with-temp-buffer 329 (with-temp-buffer
335 (insert-file-contents (locate-library "loaddefs")) 330 (insert-file-contents (locate-library "loaddefs"))
336 ;; This is from `customize-option'. 331 (let (files)
337 (let (deps file) 332 (while (search-forward "\n;;; Generated autoloads from " nil t)
338 (while 333 (push (buffer-substring (match-end 0) (line-end-position)) files))
339 (search-forward "\n;;; Generated autoloads from " nil t) 334 files)))
340 (goto-char (match-end 0)) 335
341 (setq file (buffer-substring (point) 336(defun cus-test-get-lisp-files (&optional all)
342 (progn (end-of-line) (point)))) 337 "Return list of all Lisp files with defcustoms.
343 (setq file (file-name-nondirectory file)) 338Optional argument ALL non-nil means list all (non-obsolete) Lisp files."
344 (string-match "\\.el\\'" file) 339 (let ((default-directory (expand-file-name "lisp/" source-directory))
345 (setq file (substring file 0 (match-beginning 0))) 340 (msg "Finding files..."))
346 (setq deps (nconc deps (list file)))) 341 (message "%s" msg)
347 deps))) 342 (prog1
343 ;; Hack to remove leading "./".
344 (mapcar (lambda (e) (substring e 2))
345 (apply 'process-lines find-program
346 "-name" "obsolete" "-prune" "-o"
347 "-name" "[^.]*.el" ; ignore .dir-locals.el
348 (if all
349 '("-print")
350 (list "-exec" grep-program
351 "-l" "^[ \t]*(defcustom" "{}" "+"))))
352 (message "%sdone" msg))))
348 353
349(defun cus-test-message (list) 354(defun cus-test-message (list)
350 "Print the members of LIST line by line." 355 "Print the members of LIST line by line."
@@ -353,16 +358,21 @@ Don't load libraries in `cus-test-libs-noloads'."
353 358
354;;; The routines for batch mode: 359;;; The routines for batch mode:
355 360
356(defun cus-test-opts () 361(defun cus-test-opts (&optional all)
357 "Test custom options. 362 "Test custom options.
358This function is suitable for batch mode. E.g., invoke 363This function is suitable for batch mode. E.g., invoke
359 364
360 src/emacs -batch -l admin/cus-test.el -f cus-test-opts 365 src/emacs -batch -l admin/cus-test.el -f cus-test-opts
361 366
362in the Emacs source directory." 367in the Emacs source directory.
368Normally only tests options belonging to files in loaddefs.el.
369If optional argument ALL is non-nil, test all files with defcustoms."
363 (interactive) 370 (interactive)
371 (and noninteractive
372 command-line-args-left
373 (setq all (pop command-line-args-left)))
364 (message "Running %s" 'cus-test-load-libs) 374 (message "Running %s" 'cus-test-load-libs)
365 (cus-test-load-libs) 375 (cus-test-load-libs (if all "defcustom"))
366 (message "Running %s" 'cus-test-load-custom-loads) 376 (message "Running %s" 'cus-test-load-custom-loads)
367 (cus-test-load-custom-loads) 377 (cus-test-load-custom-loads)
368 (message "Running %s" 'cus-test-apropos) 378 (message "Running %s" 'cus-test-apropos)
@@ -392,7 +402,8 @@ in the Emacs source directory."
392 ((symbolp load) 402 ((symbolp load)
393 ;; (condition-case nil (require load) (error nil)) 403 ;; (condition-case nil (require load) (error nil))
394 (condition-case alpha 404 (condition-case alpha
395 (unless (featurep load) 405 (unless (or (featurep load)
406 (and noninteractive (eq load 'dunnet)))
396 (require load) 407 (require load)
397 (push (list symbol load) cus-test-deps-required)) 408 (push (list symbol load) cus-test-deps-required))
398 (error 409 (error
@@ -444,47 +455,54 @@ in the Emacs source directory."
444 (cus-test-message cus-test-deps-errors)) 455 (cus-test-message cus-test-deps-errors))
445 (run-hooks 'cus-test-after-load-libs-hook)) 456 (run-hooks 'cus-test-after-load-libs-hook))
446 457
447(defun cus-test-libs () 458(defun cus-test-libs (&optional more)
448 "Load the libraries with autoloads in separate processes. 459 "Load the libraries with autoloads in separate processes.
449This function is useful to detect load problems of libraries. 460This function is useful to detect load problems of libraries.
450It is suitable for batch mode. E.g., invoke 461It is suitable for batch mode. E.g., invoke
451 462
452 src/emacs -batch -l admin/cus-test.el -f cus-test-libs 463 ./src/emacs -batch -l admin/cus-test.el -f cus-test-libs
453 464
454in the Emacs source directory." 465in the Emacs source directory.
466
467If optional argument MORE is \"defcustom\", load all files with defcustoms.
468If it is \"all\", load all Lisp files."
455 (interactive) 469 (interactive)
456 (with-temp-buffer 470 (and noninteractive
457 (setq cus-test-libs-errors nil) 471 command-line-args-left
458 (setq cus-test-libs-loaded nil) 472 (setq more (pop command-line-args-left)))
459 (cd source-directory) 473 (cus-test-load-1
460 (if (not (file-executable-p "src/emacs")) 474 (let* ((default-directory source-directory)
461 (error "No Emacs executable in %ssrc" default-directory)) 475 (emacs (expand-file-name "src/emacs"))
462 (mapc 476 skipped)
463 (lambda (file) 477 (or (file-executable-p emacs)
464 (condition-case alpha 478 (error "No such executable `%s'" emacs))
465 (let (fn cmd status) 479 (mapc
466 (setq fn (locate-library file)) 480 (lambda (file)
467 (if (not fn) 481 (if (member file cus-test-libs-noloads)
468 (error "Library %s not found" file)) 482 (push file skipped)
469 (setq cmd (concat "src/emacs -batch -l " fn)) 483 (condition-case alpha
470 (setq status (call-process shell-file-name nil nil nil 484 (let* ((fn (expand-file-name file "lisp/"))
471 shell-command-switch cmd)) 485 (elc (concat fn "c"))
472 (if (equal status 0) 486 status)
473 (message "%s" file) 487 (if (file-readable-p elc) ; load compiled if present (faster)
474 (error "%s" status)) 488 (setq fn elc)
475 (push file cus-test-libs-loaded)) 489 (or (file-readable-p fn)
476 (error 490 (error "Library %s not found" file)))
477 (push (cons file alpha) cus-test-libs-errors) 491 (if (equal 0 (setq status (call-process emacs nil nil nil
478 (message "Error for %s: %s" file alpha)))) 492 "-batch" "-l" fn)))
479 (cus-test-get-autoload-deps)) 493 (message "%s" file)
480 (message "Default Directory: %s" default-directory) 494 (error "%s" status))
481 (message "%s libraries had no load errors" 495 (push file cus-test-libs-loaded))
482 (length cus-test-libs-loaded)) 496 (error
483 (if (not cus-test-libs-errors) 497 (push (cons file alpha) cus-test-libs-errors)
484 (message "No load problems encountered") 498 (message "Error for %s: %s" file alpha)))))
485 (message "The following load problems appeared:") 499 (if more
486 (cus-test-message cus-test-libs-errors)) 500 (cus-test-get-lisp-files (equal more "all"))
487 (run-hooks 'cus-test-after-load-libs-hook))) 501 (cus-test-get-autoload-deps)))
502 (message "Default directory: %s" default-directory)
503 (when skipped
504 (message "The following libraries were skipped:")
505 (cus-test-message skipped)))))
488 506
489(defun cus-test-noloads () 507(defun cus-test-noloads ()
490 "Find custom options not loaded by `custom-load-symbol'. 508 "Find custom options not loaded by `custom-load-symbol'.
@@ -495,17 +513,17 @@ It is suitable for batch mode. E.g., invoke
495 513
496in the Emacs source directory." 514in the Emacs source directory."
497 (interactive) 515 (interactive)
498 (let (cus-loaded) 516 (let ((groups-loaded (cus-test-get-options "" 'cus-load))
517 cus-loaded groups-not-loaded)
499 518
500 (message "Running %s" 'cus-test-load-custom-loads) 519 (message "Running %s" 'cus-test-load-custom-loads)
501 (cus-test-load-custom-loads) 520 (cus-test-load-custom-loads)
502 (setq cus-loaded 521 (setq cus-loaded (cus-test-get-options ""))
503 (cus-test-get-options ""))
504 522
505 (message "Running %s" 'cus-test-load-libs) 523 (message "Running %s" 'cus-test-load-libs)
506 (cus-test-load-libs) 524 (cus-test-load-libs "all")
507 (setq cus-test-vars-not-cus-loaded 525 (setq cus-test-vars-not-cus-loaded (cus-test-get-options "")
508 (cus-test-get-options "")) 526 groups-not-loaded (cus-test-get-options "" t))
509 527
510 (dolist (o cus-loaded) 528 (dolist (o cus-loaded)
511 (setq cus-test-vars-not-cus-loaded 529 (setq cus-test-vars-not-cus-loaded
@@ -515,12 +533,15 @@ in the Emacs source directory."
515 (message "No options not loaded by custom-load-symbol found") 533 (message "No options not loaded by custom-load-symbol found")
516 (message "The following options were not loaded by custom-load-symbol:") 534 (message "The following options were not loaded by custom-load-symbol:")
517 (cus-test-message 535 (cus-test-message
518 (sort cus-test-vars-not-cus-loaded 'string<))))) 536 (sort cus-test-vars-not-cus-loaded 'string<)))
519 537
520;; And last but not least a quiz: 538 (dolist (o groups-loaded)
521;; 539 (setq groups-not-loaded (delete o groups-not-loaded)))
522;; Evaluation of the form (customize-option 'debug-on-error) yields a 540
523;; *Customize* buffer with a mismatch mess. Why? 541 (if (not groups-not-loaded)
542 (message "No groups not in cus-load.el found")
543 (message "The following groups are not in cus-load.el:")
544 (cus-test-message (sort groups-not-loaded 'string<)))))
524 545
525(provide 'cus-test) 546(provide 'cus-test)
526 547
diff --git a/admin/diff-tar-files b/admin/diff-tar-files
index 1dbf9a12399..af892d6ce41 100755
--- a/admin/diff-tar-files
+++ b/admin/diff-tar-files
@@ -1,6 +1,6 @@
1#! /bin/sh 1#! /bin/sh
2 2
3# Copyright (C) 2001-2012 Free Software Foundation, Inc. 3# Copyright (C) 2001-2013 Free Software Foundation, Inc.
4 4
5# This file is part of GNU Emacs. 5# This file is part of GNU Emacs.
6 6
diff --git a/admin/emacs-pretesters b/admin/emacs-pretesters
deleted file mode 100644
index 3b1270b477c..00000000000
--- a/admin/emacs-pretesters
+++ /dev/null
@@ -1,217 +0,0 @@
1Here are the guidelines for being an Emacs pretester.
2If you would like to do this, say so, and I'll add you to
3the pretest list.
4
5
6 Information for Emacs Pretesters
7
8The purpose of Emacs pretesting is to verify that the new Emacs
9distribution, about to be released, works properly on your system *with
10no change whatever*, when installed following the precise
11recommendations that come with the Emacs distribution.
12
13Here are some guidelines on how to do pretesting so as to make it
14helpful. All of them follow from common sense together with the
15nature of the purpose and the situation.
16
17Please save this file, and reread it when a new series of pretests
18starts.
19
20* Get the pretest from gnu/emacs/pretest/emacs-MM.0.NN.tar.gz
21on alpha.gnu.org.
22
23* After a few days of testing, if there are no problems, please report
24that Emacs works for you and what configuration you are testing it on.
25
26* If you want to communicate with other pretesters, send mail to
27emacs-pretesters@gnu.org. I don't use that mailing list when I send
28to you because I've found that mailing lists tend to amplify random
29noise into long discussions or even arguments, and that can waste a
30lot of time. But when you have a reason to ask other pretesters for
31help, you can do it that way.
32
33* It is absolutely vital that you report even the smallest change or
34departure from the standard sources and procedure.
35
36Otherwise, you are not testing the same program that we asked you to
37test. Testing a different program is usually of no use whatever. It
38can even cause trouble, if you fail to tell us that you tested some
39other program instead of what we are about to release. We might think
40that Emacs works, when in fact it has not even been tried, and might
41have a glaring fault.
42
43* Don't use a site-load.el file or a site-init.el file when you pretest.
44Using either of those files means you are not testing Emacs as a typical
45site would use it.
46
47Actually, it does no harm to test Emacs with such customizations *as
48well as* testing it "out of the box". Anything you do that could find
49a bug is useful, as long as you make sure we know exactly what you
50did. The important point is that testing with local changes is no
51substitute for testing Emacs exactly as it is distributed.
52
53* Even changing the compilation options counts as a change in the
54program. The Emacs sources specify which compilation options to use.
55Some of them are specified in makefiles, and some in machine-specific
56configuration files. They also give you ways to override this--but if
57you do, then you are not testing what ordinary users will do.
58Therefore, when pretesting, it is vital to test with the default
59compilation options.
60
61(Testing with a different set of options can be useful *in addition*,
62but not *instead of* the default options.)
63
64* The machine and system configuration files of Emacs are parts of
65Emacs. So when you test Emacs, you need to do it with the
66configuration files that come with Emacs.
67
68If Emacs does not come with configuration files for a certain machine,
69and you test it with configuration files that don't come with Emacs,
70this is effectively changing Emacs. Because the crucial fact about
71the planned release is that, without changes, it doesn't work on that
72machine.
73
74To make Emacs work on that machine, we would need to install new
75configuration files. That is not out of the question, since it is
76safe--it certainly won't break any other machines that already work.
77But you will have to rush in the legal papers to give the FSF
78permission to use such a large piece of text.
79
80* Look in the etc/MACHINES file.
81
82The etc/MACHINES file says which configuration files to use for your
83machine, so use the ones that are recommended. If you guess, you might
84guess wrong and encounter spurious difficulties. What's more, if you
85don't follow etc/MACHINES then you aren't helping to test that its
86recommendations are valid.
87
88The etc/MACHINES file may describe other things that you need to do
89to make Emacs work on your machine. If so, you should follow these
90recommendations also, for the same reason.
91
92* Send your problem reports to bug-gnu-emacs@gnu.org.
93
94Sometimes we won't know what to do about a system-dependent issue, and
95we may need people to say what happens if you try a certain thing on a
96certain system. When this happens, we'll send out a query.
97
98* Don't delay sending information.
99
100When you test on a system and encounter no problems, please report it
101right away. That way, we will know that someone has tested Emacs on
102that kind of system.
103
104Please don't wait for several days "to see if it really works before
105you say anything." Tell us right away that Emacs seems basically to
106work; then, if you notice a problem a few days later, tell us
107immediately about that when you see it.
108
109It is okay if you double check things before reporting a problem, such
110as to see if you can easily fix it. But don't wait very long. A good
111rule to use in pretesting is always to report every problem on the
112same day you encounter it, even if that means you can't find a
113solution before you report the problem.
114
115I'd much rather hear about a problem today and a solution tomorrow
116than get both of them tomorrow at the same time.
117
118* Make each bug report self-contained.
119
120If you refer back to another message, whether from you or from someone
121else, then it will be necessary for anyone who wants to investigate
122the bug to find the other message. This may be difficult, it is
123probably time-consuming.
124
125To help save our time, simply copy the relevant parts of any previous
126messages into your own bug report.
127
128In particular, if we ask you for more information because a bug report
129was incomplete, it is best to send me the *entire* collection of
130relevant information, all together. If you send just the additional
131information, that makes extra work for us. There is even a risk that
132we won't remember what question you are sending the answer to.
133
134* When you encounter a bug that manifests itself as a Lisp error,
135try setting debug-on-error to t and making the bug happen again.
136Then you will get a Lisp backtrace. Including that in your bug report
137is very useful.
138
139* For advice on debugging, see etc/DEBUG.
140
141* Debugging optimized code is possible, if you compile with GCC, but
142in some cases the optimized code can be confusing. If you are not
143accustomed to that, recompile Emacs without -O. One way to do this is
144
145 make clean
146 make CFLAGS=-g
147
148* Configure tries to figure out what kind of system you have by
149compiling and linking programs which calls various functions and looks
150at whether that succeeds. The file config.log contains any messages
151produced by compilers while running configure, to aid debugging if
152configure makes a mistake. But note that config.cache reads:
153
154# Giving --cache-file=/dev/null disables caching, for debugging configure.
155
156or more simply,
157
158rm config.cache
159./configure
160
161* Don't try changing Emacs *in any way* during pretest unless it fails
162to work unchanged.
163
164* Always be precise when talking about changes you have made. Show
165things rather than describing them. Use exact filenames (relative to
166the main directory of the distribution), not partial ones. For
167example, say "I changed Makefile" rather than "I changed the
168makefile". Instead of saying "I defined the MUMBLE macro", send a
169diff.
170
171* Always use `diff -c' to make diffs. If you don't include context, it
172may be hard for us to figure out where you propose to make the
173changes. So we might ignore your patch.
174
175* When you write a fix, keep in mind that we can't install a change
176that *might* break other systems without the risk that it will fail to
177work and therefore require an additional cycle of pretesting.
178
179People often suggest fixing a problem by changing config.h or
180src/Makefile to do something special that a particular system needs.
181Sometimes it is totally obvious that such changes would break Emacs
182for almost all users. We can't possibly make a change like that. All
183we can do is ask you to find a fix that is safe to install.
184
185Sometimes people send fixes that *might* be an improvement in
186general--but it is hard to be sure of this. I can install such
187changes some of the time, but not during pretest, when I am trying to
188get a new version to work reliably as quickly as possible.
189
190The safest changes for us to install are changes to the s- and m-
191files. At least those can't break other systems.
192
193Another safe kind of change is one that uses a conditional to make
194sure it will apply only to a particular kind of system. Ordinarily,
195that is a bad way to solve a problem, and I would want to find a
196cleaner alternative. But the virtue of safety can make it superior at
197pretest time.
198
199* Don't suggest changes during pretest to add features or make
200something cleaner. Every change risks introducing a bug, so I won't
201install a change during pretest unless it is *necessary*.
202
203* If you would like to suggest changes for purposes other than fixing
204user-visible bugs, don't wait till pretest time. Instead, send them
205after we have made a release that proves to be stable. That is the
206easiest time to consider such suggestions. If you send them at
207pretest time, we will have to defer them till later, and that might
208mean we forget all about them.
209
210* In some cases, if you don't follow these guidelines, your
211information might still be useful, but we would have to do more work
212to make use of it. That might cause it to fall by the wayside.
213
214Local Variables:
215mode: text
216End:
217
diff --git a/admin/grammars/README b/admin/grammars/README
index 419797e0dcb..e38260952a5 100644
--- a/admin/grammars/README
+++ b/admin/grammars/README
@@ -3,8 +3,8 @@ generate the parser data in the lisp/semantic/bovine/ and
3lisp/semantic/wisent/ directories. You can run the parser generators 3lisp/semantic/wisent/ directories. You can run the parser generators
4with 4with
5 5
6emacs -batch -Q -l bovine-grammar.el -f bovine-make-parsers 6emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers
7emacs -batch -Q -l wisent-grammar.el -f wisent-make-parsers 7emacs -batch -Q -l semantic/wisent/grammar -f wisent-make-parsers
8 8
9Currently, the parser files in lisp/ are not generated directly from 9Currently, the parser files in lisp/ are not generated directly from
10these grammar files when making Emacs. This state of affairs, and the 10these grammar files when making Emacs. This state of affairs, and the
diff --git a/admin/grammars/bovine-grammar.el b/admin/grammars/bovine-grammar.el
deleted file mode 100644
index efe4db039c4..00000000000
--- a/admin/grammars/bovine-grammar.el
+++ /dev/null
@@ -1,519 +0,0 @@
1;;; bovine-grammar.el --- Bovine's input grammar mode
2;;
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc.
4;;
5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com>
7;; Created: 26 Aug 2002
8;; Keywords: syntax
9
10;; This file is part of GNU Emacs.
11
12;; GNU Emacs is free software: you can redistribute it and/or modify
13;; it under the terms of the GNU General Public License as published by
14;; the Free Software Foundation, either version 3 of the License, or
15;; (at your option) any later version.
16
17;; GNU Emacs is distributed in the hope that it will be useful,
18;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;; GNU General Public License for more details.
21
22;; You should have received a copy of the GNU General Public License
23;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
24
25;;; Commentary:
26;;
27;; Major mode for editing Bovine's input grammar (.by) files.
28
29;;; History:
30
31;;; Code:
32(require 'semantic)
33(require 'semantic/grammar)
34(require 'semantic/find)
35(require 'semantic/lex)
36(require 'semantic/wisent)
37(require 'semantic/bovine)
38
39(defun bovine-grammar-EXPAND (bounds nonterm)
40 "Expand call to EXPAND grammar macro.
41Return the form to parse from within a nonterminal between BOUNDS.
42NONTERM is the nonterminal symbol to start with."
43 `(semantic-bovinate-from-nonterminal
44 (car ,bounds) (cdr ,bounds) ',nonterm))
45
46(defun bovine-grammar-EXPANDFULL (bounds nonterm)
47 "Expand call to EXPANDFULL grammar macro.
48Return the form to recursively parse the area between BOUNDS.
49NONTERM is the nonterminal symbol to start with."
50 `(semantic-parse-region
51 (car ,bounds) (cdr ,bounds) ',nonterm 1))
52
53(defun bovine-grammar-TAG (name class &rest attributes)
54 "Expand call to TAG grammar macro.
55Return the form to create a generic semantic tag.
56See the function `semantic-tag' for the meaning of arguments NAME,
57CLASS and ATTRIBUTES."
58 `(semantic-tag ,name ,class ,@attributes))
59
60(defun bovine-grammar-VARIABLE-TAG (name type default-value &rest attributes)
61 "Expand call to VARIABLE-TAG grammar macro.
62Return the form to create a semantic tag of class variable.
63See the function `semantic-tag-new-variable' for the meaning of
64arguments NAME, TYPE, DEFAULT-VALUE and ATTRIBUTES."
65 `(semantic-tag-new-variable ,name ,type ,default-value ,@attributes))
66
67(defun bovine-grammar-FUNCTION-TAG (name type arg-list &rest attributes)
68 "Expand call to FUNCTION-TAG grammar macro.
69Return the form to create a semantic tag of class function.
70See the function `semantic-tag-new-function' for the meaning of
71arguments NAME, TYPE, ARG-LIST and ATTRIBUTES."
72 `(semantic-tag-new-function ,name ,type ,arg-list ,@attributes))
73
74(defun bovine-grammar-TYPE-TAG (name type members parents &rest attributes)
75 "Expand call to TYPE-TAG grammar macro.
76Return the form to create a semantic tag of class type.
77See the function `semantic-tag-new-type' for the meaning of arguments
78NAME, TYPE, MEMBERS, PARENTS and ATTRIBUTES."
79 `(semantic-tag-new-type ,name ,type ,members ,parents ,@attributes))
80
81(defun bovine-grammar-INCLUDE-TAG (name system-flag &rest attributes)
82 "Expand call to INCLUDE-TAG grammar macro.
83Return the form to create a semantic tag of class include.
84See the function `semantic-tag-new-include' for the meaning of
85arguments NAME, SYSTEM-FLAG and ATTRIBUTES."
86 `(semantic-tag-new-include ,name ,system-flag ,@attributes))
87
88(defun bovine-grammar-PACKAGE-TAG (name detail &rest attributes)
89 "Expand call to PACKAGE-TAG grammar macro.
90Return the form to create a semantic tag of class package.
91See the function `semantic-tag-new-package' for the meaning of
92arguments NAME, DETAIL and ATTRIBUTES."
93 `(semantic-tag-new-package ,name ,detail ,@attributes))
94
95(defun bovine-grammar-CODE-TAG (name detail &rest attributes)
96 "Expand call to CODE-TAG grammar macro.
97Return the form to create a semantic tag of class code.
98See the function `semantic-tag-new-code' for the meaning of arguments
99NAME, DETAIL and ATTRIBUTES."
100 `(semantic-tag-new-code ,name ,detail ,@attributes))
101
102(defun bovine-grammar-ALIAS-TAG (name aliasclass definition &rest attributes)
103 "Expand call to ALIAS-TAG grammar macro.
104Return the form to create a semantic tag of class alias.
105See the function `semantic-tag-new-alias' for the meaning of arguments
106NAME, ALIASCLASS, DEFINITION and ATTRIBUTES."
107 `(semantic-tag-new-alias ,name ,aliasclass ,definition ,@attributes))
108
109;; Cache of macro definitions currently in use.
110(defvar bovine--grammar-macros nil)
111
112;; Detect if we have an Emacs with newstyle unquotes allowed outside
113;; of backquote.
114;; This should probably be changed to a test to (= emacs-major-version 24)
115;; when it is released, but at the moment it might be possible that people
116;; are using an older snapshot.
117(defvar bovine--grammar-newstyle-unquote
118 (equal '(\, test) (read ",test")))
119
120(defun bovine-grammar-expand-form (form quotemode &optional inplace)
121 "Expand FORM into a new one suitable to the bovine parser.
122FORM is a list in which we are substituting.
123Argument QUOTEMODE is non-nil if we are in backquote mode.
124When non-nil, optional argument INPLACE indicates that FORM is being
125expanded from elsewhere."
126 (when (eq (car form) 'quote)
127 (setq form (cdr form))
128 (cond
129 ((and (= (length form) 1) (listp (car form)))
130 (insert "\n(append")
131 (bovine-grammar-expand-form (car form) quotemode nil)
132 (insert ")")
133 (setq form nil inplace nil)
134 )
135 ((and (= (length form) 1) (symbolp (car form)))
136 (insert "\n'" (symbol-name (car form)))
137 (setq form nil inplace nil)
138 )
139 (t
140 (insert "\n(list")
141 (setq inplace t)
142 )))
143 (let ((macro (assq (car form) bovine--grammar-macros))
144 inlist first n q x)
145 (if macro
146 (bovine-grammar-expand-form
147 (apply (cdr macro) (cdr form))
148 quotemode t)
149 (if inplace (insert "\n("))
150 (while form
151 (setq first (car form)
152 form (cdr form))
153 ;; Hack for dealing with new reading of unquotes outside of
154 ;; backquote (introduced in rev. 102591 in emacs-bzr).
155 (when (and bovine--grammar-newstyle-unquote
156 (listp first)
157 (or (equal (car first) '\,)
158 (equal (car first) '\,@)))
159 (if (listp (cadr first))
160 (setq form (append (cdr first) form)
161 first (car first))
162 (setq first (intern (concat (symbol-name (car first))
163 (symbol-name (cadr first)))))))
164 (cond
165 ((eq first nil)
166 (when (and (not inlist) (not inplace))
167 (insert "\n(list")
168 (setq inlist t))
169 (insert " nil")
170 )
171 ((listp first)
172 ;;(let ((fn (and (symbolp (caar form)) (fboundp (caar form)))))
173 (when (and (not inlist) (not inplace))
174 (insert "\n(list")
175 (setq inlist t))
176 ;;(if (and inplace (not fn) (not (eq (caar form) 'EXPAND)))
177 ;; (insert " (append"))
178 (bovine-grammar-expand-form
179 first quotemode t) ;;(and fn (not (eq fn 'quote))))
180 ;;(if (and inplace (not fn) (not (eq (caar form) 'EXPAND)))
181 ;; (insert ")"))
182 ;;)
183 )
184 ((symbolp first)
185 (setq n (symbol-name first) ;the name
186 q quotemode ;implied quote flag
187 x nil) ;expand flag
188 (if (eq (aref n 0) ?,)
189 (if quotemode
190 ;; backquote mode needs the @
191 (if (eq (aref n 1) ?@)
192 (setq n (substring n 2)
193 q nil
194 x t)
195 ;; non backquote mode behaves normally.
196 (setq n (substring n 1)
197 q nil))
198 (setq n (substring n 1)
199 x t)))
200 (if (string= n "")
201 (progn
202 ;; We expand only the next item in place (a list?)
203 ;; A regular inline-list...
204 (bovine-grammar-expand-form (car form) quotemode t)
205 (setq form (cdr form)))
206 (if (and (eq (aref n 0) ?$)
207 ;; Don't expand $ tokens in implied quote mode.
208 ;; This acts like quoting in other symbols.
209 (not q))
210 (progn
211 (cond
212 ((and (not x) (not inlist) (not inplace))
213 (insert "\n(list"))
214 ((and x inlist (not inplace))
215 (insert ")")
216 (setq inlist nil)))
217 (insert "\n(nth " (int-to-string
218 (1- (string-to-number
219 (substring n 1))))
220 " vals)")
221 (and (not x) (not inplace)
222 (setq inlist t)))
223
224 (when (and (not inlist) (not inplace))
225 (insert "\n(list")
226 (setq inlist t))
227 (or (char-equal (char-before) ?\()
228 (insert " "))
229 (insert (if (or inplace (eq first t))
230 "" "'")
231 n))) ;; " "
232 )
233 (t
234 (when (and (not inlist) (not inplace))
235 (insert "\n(list")
236 (setq inlist t))
237 (insert (format "\n%S" first))
238 )
239 ))
240 (if inlist (insert ")"))
241 (if inplace (insert ")")))
242 ))
243
244(defun bovine-grammar-expand-action (textform quotemode)
245 "Expand semantic action string TEXTFORM into Lisp code.
246QUOTEMODE is the mode in which quoted symbols are slurred."
247 (if (string= "" textform)
248 nil
249 (let ((sexp (read textform)))
250 ;; We converted the lambda string into a list. Now write it
251 ;; out as the bovine lambda expression, and do macro-like
252 ;; conversion upon it.
253 (insert "\n")
254 (cond
255 ((eq (car sexp) 'EXPAND)
256 (insert ",(lambda (vals start end)")
257 ;; The EXPAND macro definition is mandatory
258 (bovine-grammar-expand-form
259 (apply (cdr (assq 'EXPAND bovine--grammar-macros)) (cdr sexp))
260 quotemode t)
261 )
262 ((and (listp (car sexp)) (eq (caar sexp) 'EVAL))
263 ;; The user wants to evaluate the following args.
264 ;; Use a simpler expander
265 )
266 (t
267 (insert ",(semantic-lambda")
268 (bovine-grammar-expand-form sexp quotemode)
269 ))
270 (insert ")\n")))
271)
272
273(defun bovine-grammar-parsetable-builder ()
274 "Return the parser table expression as a string value.
275The format of a bovine parser table is:
276
277 ( ( NONTERMINAL-SYMBOL1 MATCH-LIST1 )
278 ( NONTERMINAL-SYMBOL2 MATCH-LIST2 )
279 ...
280 ( NONTERMINAL-SYMBOLn MATCH-LISTn )
281
282Where each NONTERMINAL-SYMBOL is an artificial symbol which can appear
283in any child state. As a starting place, one of the NONTERMINAL-SYMBOLS
284must be `bovine-toplevel'.
285
286A MATCH-LIST is a list of possible matches of the form:
287
288 ( STATE-LIST1
289 STATE-LIST2
290 ...
291 STATE-LISTN )
292
293where STATE-LIST is of the form:
294 ( TYPE1 [ \"VALUE1\" ] TYPE2 [ \"VALUE2\" ] ... LAMBDA )
295
296where TYPE is one of the returned types of the token stream.
297VALUE is a value, or range of values to match against. For
298example, a SYMBOL might need to match \"foo\". Some TYPES will not
299have matching criteria.
300
301LAMBDA is a lambda expression which is evalled with the text of the
302type when it is found. It is passed the list of all buffer text
303elements found since the last lambda expression. It should return a
304semantic element (see below.)
305
306For consistency between languages, try to use common return values
307from your parser. Please reference the chapter \"Writing Parsers\" in
308the \"Language Support Developer's Guide -\" in the semantic texinfo
309manual."
310 (let* ((start (semantic-grammar-start))
311 (scopestart (semantic-grammar-scopestart))
312 (quotemode (semantic-grammar-quotemode))
313 (tags (semantic-find-tags-by-class
314 'token (current-buffer)))
315 (nterms (semantic-find-tags-by-class
316 'nonterminal (current-buffer)))
317 ;; Setup the cache of macro definitions.
318 (bovine--grammar-macros (semantic-grammar-macros))
319 nterm rules items item actn prec tag type regex)
320
321 ;; Check some trivial things
322 (cond
323 ((null nterms)
324 (error "Bad input grammar"))
325 (start
326 (if (cdr start)
327 (message "Extra start symbols %S ignored" (cdr start)))
328 (setq start (symbol-name (car start)))
329 (unless (semantic-find-first-tag-by-name start nterms)
330 (error "start symbol `%s' has no rule" start)))
331 (t
332 ;; Default to the first grammar rule.
333 (setq start (semantic-tag-name (car nterms)))))
334 (when scopestart
335 (setq scopestart (symbol-name scopestart))
336 (unless (semantic-find-first-tag-by-name scopestart nterms)
337 (error "scopestart symbol `%s' has no rule" scopestart)))
338
339 ;; Generate the grammar Lisp form.
340 (with-temp-buffer
341 (erase-buffer)
342 (insert "`(")
343 ;; Insert the start/scopestart rules
344 (insert "\n(bovine-toplevel \n("
345 start
346 ")\n) ;; end bovine-toplevel\n")
347 (when scopestart
348 (insert "\n(bovine-inner-scope \n("
349 scopestart
350 ")\n) ;; end bovine-inner-scope\n"))
351 ;; Process each nonterminal
352 (while nterms
353 (setq nterm (car nterms)
354 ;; We can't use the override form because the current buffer
355 ;; is not the originator of the tag.
356 rules (semantic-tag-components-semantic-grammar-mode nterm)
357 nterm (semantic-tag-name nterm)
358 nterms (cdr nterms))
359 (when (member nterm '("bovine-toplevel" "bovine-inner-scope"))
360 (error "`%s' is a reserved internal name" nterm))
361 (insert "\n(" nterm)
362 ;; Process each rule
363 (while rules
364 (setq items (semantic-tag-get-attribute (car rules) :value)
365 prec (semantic-tag-get-attribute (car rules) :prec)
366 actn (semantic-tag-get-attribute (car rules) :expr)
367 rules (cdr rules))
368 ;; Process each item
369 (insert "\n(")
370 (if (null items)
371 ;; EMPTY rule
372 (insert ";;EMPTY" (if actn "" "\n"))
373 ;; Expand items
374 (while items
375 (setq item (car items)
376 items (cdr items))
377 (if (consp item) ;; mid-rule action
378 (message "Mid-rule action %S ignored" item)
379 (or (char-equal (char-before) ?\()
380 (insert "\n"))
381 (cond
382 ((member item '("bovine-toplevel" "bovine-inner-scope"))
383 (error "`%s' is a reserved internal name" item))
384 ;; Replace ITEM by its %token definition.
385 ;; If a '%token TYPE ITEM [REGEX]' definition exists
386 ;; in the grammar, ITEM is replaced by TYPE [REGEX].
387 ((setq tag (semantic-find-first-tag-by-name
388 item tags)
389 type (semantic-tag-get-attribute tag :type))
390 (insert type)
391 (if (setq regex (semantic-tag-get-attribute tag :value))
392 (insert (format "\n%S" regex))))
393 ;; Don't change ITEM
394 (t
395 (insert (semantic-grammar-item-text item)))
396 ))))
397 (if prec
398 (message "%%prec %S ignored" prec))
399 (if actn
400 (bovine-grammar-expand-action actn quotemode))
401 (insert ")"))
402 (insert "\n) ;; end " nterm "\n"))
403 (insert ")\n")
404 (buffer-string))))
405
406(defun bovine-grammar-setupcode-builder ()
407 "Return the text of the setup code."
408 (format
409 "(setq semantic--parse-table %s\n\
410 semantic-debug-parser-source %S\n\
411 semantic-debug-parser-class 'semantic-bovine-debug-parser
412 semantic-flex-keywords-obarray %s\n\
413 %s)"
414 (semantic-grammar-parsetable)
415 (buffer-name)
416 (semantic-grammar-keywordtable)
417 (let ((mode (semantic-grammar-languagemode)))
418 ;; Is there more than one major mode?
419 (if (and (listp mode) (> (length mode) 1))
420 (format "semantic-equivalent-major-modes '%S\n" mode)
421 ""))))
422
423(defvar bovine-grammar-menu
424 '("BY Grammar"
425 )
426 "BY mode specific grammar menu.
427Menu items are appended to the common grammar menu.")
428
429(define-derived-mode bovine-grammar-mode semantic-grammar-mode "BY"
430 "Major mode for editing Bovine grammars."
431 (semantic-grammar-setup-menu bovine-grammar-menu)
432 (semantic-install-function-overrides
433 '((grammar-parsetable-builder . bovine-grammar-parsetable-builder)
434 (grammar-setupcode-builder . bovine-grammar-setupcode-builder)
435 )))
436
437(add-to-list 'auto-mode-alist '("\\.by\\'" . bovine-grammar-mode))
438
439(defvar-mode-local bovine-grammar-mode semantic-grammar-macros
440 '(
441 (ASSOC . semantic-grammar-ASSOC)
442 (EXPAND . bovine-grammar-EXPAND)
443 (EXPANDFULL . bovine-grammar-EXPANDFULL)
444 (TAG . bovine-grammar-TAG)
445 (VARIABLE-TAG . bovine-grammar-VARIABLE-TAG)
446 (FUNCTION-TAG . bovine-grammar-FUNCTION-TAG)
447 (TYPE-TAG . bovine-grammar-TYPE-TAG)
448 (INCLUDE-TAG . bovine-grammar-INCLUDE-TAG)
449 (PACKAGE-TAG . bovine-grammar-PACKAGE-TAG)
450 (CODE-TAG . bovine-grammar-CODE-TAG)
451 (ALIAS-TAG . bovine-grammar-ALIAS-TAG)
452 )
453 "Semantic grammar macros used in bovine grammars.")
454
455(provide 'semantic/bovine/grammar)
456
457(defun bovine-make-parsers ()
458 "Generate Emacs' built-in Bovine-based parser files."
459 (semantic-mode 1)
460 ;; Loop through each .by file in current directory, and run
461 ;; `semantic-grammar-batch-build-one-package' to build the grammar.
462 (dolist (f (directory-files default-directory nil "\\.by\\'"))
463 (let ((packagename
464 (condition-case err
465 (with-current-buffer (find-file-noselect f)
466 (semantic-grammar-create-package))
467 (error (message "%s" (error-message-string err)) nil)))
468 lang)
469 (when (and packagename
470 (string-match "^semantic-\\(.*\\)-by\\.el\\'" packagename))
471 (setq lang (match-string 1 packagename))
472 (with-temp-buffer
473 (insert-file-contents packagename)
474 (setq buffer-file-name (expand-file-name packagename))
475 ;; Fix copyright header:
476 (goto-char (point-min))
477 (re-search-forward "^;; Author:")
478 (setq copyright-end (match-beginning 0))
479 (re-search-forward "^;;; Code:\n")
480 (delete-region copyright-end (match-end 0))
481 (goto-char copyright-end)
482 (insert ";; This file is part of GNU Emacs.
483
484;; GNU Emacs is free software: you can redistribute it and/or modify
485;; it under the terms of the GNU General Public License as published by
486;; the Free Software Foundation, either version 3 of the License, or
487;; (at your option) any later version.
488
489;; GNU Emacs is distributed in the hope that it will be useful,
490;; but WITHOUT ANY WARRANTY; without even the implied warranty of
491;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
492;; GNU General Public License for more details.
493
494;; You should have received a copy of the GNU General Public License
495;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
496
497;;; Commentary:
498;;
499;; This file was generated from admin/grammars/"
500 lang ".by.
501
502;;; Code:
503
504\(require 'semantic/lex)
505\(eval-when-compile (require 'semantic/bovine))\n")
506 (goto-char (point-min))
507 (delete-region (point-min) (line-end-position))
508 (insert ";;; semantic/bovine/" lang
509 "-by.el --- Generated parser support file")
510 (delete-trailing-whitespace)
511 ;; Fix footer:
512 (goto-char (point-max))
513 (re-search-backward ".\n;;; Analyzers")
514 (delete-region (point) (point-max))
515 (insert "(provide 'semantic/bovine/" lang "-by)\n\n")
516 (insert ";;; semantic/bovine/" lang "-by.el ends here\n")
517 (save-buffer))))))
518
519;;; bovine-grammar.el ends here
diff --git a/admin/grammars/c.by b/admin/grammars/c.by
index 1bdaf8f447b..5d2f407e8e3 100644
--- a/admin/grammars/c.by
+++ b/admin/grammars/c.by
@@ -1,6 +1,5 @@
1;;; c.by -- LL grammar for C/C++ language specification 1;;; c.by -- LL grammar for C/C++ language specification
2 2;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
3;; Copyright (C) 1999-2012 Free Software Foundation, Inc.
4;; 3;;
5;; Author: Eric M. Ludlam <zappo@gnu.org> 4;; Author: Eric M. Ludlam <zappo@gnu.org>
6;; David Ponce <david@dponce.com> 5;; David Ponce <david@dponce.com>
@@ -39,6 +38,13 @@
39;; > * Can't parse signature element: "RmcBucStatus* rftBucStatus" 38;; > * Can't parse signature element: "RmcBucStatus* rftBucStatus"
40 39
41%package semantic-c-by 40%package semantic-c-by
41%provide semantic/bovine/c-by
42
43%{
44(declare-function semantic-c-reconstitute-token "semantic/bovine/c")
45(declare-function semantic-c-reconstitute-template "semantic/bovine/c")
46(declare-function semantic-expand-c-tag "semantic/bovine/c")
47}
42 48
43%languagemode c-mode c++-mode 49%languagemode c-mode c++-mode
44%start declaration 50%start declaration
@@ -98,6 +104,8 @@
98%put VIRTUAL summary "Method Modifier: virtual <type> <name>(...) ..." 104%put VIRTUAL summary "Method Modifier: virtual <type> <name>(...) ..."
99%token MUTABLE "mutable" 105%token MUTABLE "mutable"
100%put MUTABLE summary "Member Declaration Modifier: mutable <type> <name> ..." 106%put MUTABLE summary "Member Declaration Modifier: mutable <type> <name> ..."
107%token EXPLICIT "explicit"
108%put EXPLICIT summary "Forbids implicit type conversion: explicit <constructor>"
101 109
102%token STRUCT "struct" 110%token STRUCT "struct"
103%put STRUCT summary "Structure Type Declaration: struct [name] { ... };" 111%put STRUCT summary "Structure Type Declaration: struct [name] { ... };"
@@ -370,6 +378,9 @@ namespacesubparts
370 ;; PUBLIC or PRIVATE bits. Ignore them for now. 378 ;; PUBLIC or PRIVATE bits. Ignore them for now.
371 | template 379 | template
372 | using 380 | using
381 ;; Includes inside namespaces
382 | spp-include
383 (TAG $1 'include :inside-ns t)
373 | ;;EMPTY 384 | ;;EMPTY
374 ; 385 ;
375 386
@@ -1098,6 +1109,8 @@ functionname
1098function-pointer 1109function-pointer
1099 : LPAREN STAR symbol RPAREN 1110 : LPAREN STAR symbol RPAREN
1100 ( (concat "*" $3) ) 1111 ( (concat "*" $3) )
1112 | LPAREN symbol RPAREN
1113 ( $2 )
1101 ; 1114 ;
1102 1115
1103fun-or-proto-end 1116fun-or-proto-end
diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy
index 1189d6b0886..c5e5413e64c 100644
--- a/admin/grammars/grammar.wy
+++ b/admin/grammars/grammar.wy
@@ -1,6 +1,6 @@
1;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars 1;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars
2;; 2;;
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
4;; 4;;
5;; Author: David Ponce <david@dponce.com> 5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com> 6;; Maintainer: David Ponce <david@dponce.com>
@@ -23,6 +23,9 @@
23;; You should have received a copy of the GNU General Public License 23;; You should have received a copy of the GNU General Public License
24;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 24;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
25 25
26%package semantic-grammar-wy
27%provide semantic/grammar-wy
28
26%{ 29%{
27(defvar semantic-grammar-lex-c-char-re) 30(defvar semantic-grammar-lex-c-char-re)
28 31
@@ -32,8 +35,6 @@
32(defvar semantic-grammar-wy--rindx nil) 35(defvar semantic-grammar-wy--rindx nil)
33} 36}
34 37
35%package semantic-grammar-wy
36
37%languagemode wy-mode 38%languagemode wy-mode
38 39
39;; Main 40;; Main
@@ -52,6 +53,7 @@
52%keyword LEFT "%left" 53%keyword LEFT "%left"
53%keyword NONASSOC "%nonassoc" 54%keyword NONASSOC "%nonassoc"
54%keyword PACKAGE "%package" 55%keyword PACKAGE "%package"
56%keyword PROVIDE "%provide"
55%keyword PREC "%prec" 57%keyword PREC "%prec"
56%keyword PUT "%put" 58%keyword PUT "%put"
57%keyword QUOTEMODE "%quotemode" 59%keyword QUOTEMODE "%quotemode"
@@ -134,6 +136,7 @@ decl:
134 | no_default_prec_decl 136 | no_default_prec_decl
135 | languagemode_decl 137 | languagemode_decl
136 | package_decl 138 | package_decl
139 | provide_decl
137 | precedence_decl 140 | precedence_decl
138 | put_decl 141 | put_decl
139 | quotemode_decl 142 | quotemode_decl
@@ -165,6 +168,11 @@ package_decl:
165 `(PACKAGE-TAG ',$2 nil) 168 `(PACKAGE-TAG ',$2 nil)
166 ; 169 ;
167 170
171provide_decl:
172 PROVIDE SYMBOL
173 `(TAG ',$2 'provide)
174 ;
175
168precedence_decl: 176precedence_decl:
169 associativity token_type_opt items 177 associativity token_type_opt items
170 `(TAG ',$1 'assoc :type ',$2 :value ',$3) 178 `(TAG ',$1 'assoc :type ',$2 :value ',$3)
diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy
index b58b96c6bfb..71607f452a0 100644
--- a/admin/grammars/java-tags.wy
+++ b/admin/grammars/java-tags.wy
@@ -1,6 +1,6 @@
1;;; java-tags.wy -- Semantic LALR grammar for Java 1;;; java-tags.wy -- Semantic LALR grammar for Java
2 2
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
4;; 4;;
5;; Author: David Ponce <david@dponce.com> 5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com> 6;; Maintainer: David Ponce <david@dponce.com>
@@ -23,6 +23,7 @@
23;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 23;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
24 24
25%package wisent-java-tags-wy 25%package wisent-java-tags-wy
26%provide semantic/wisent/javat-wy
26 27
27%languagemode java-mode 28%languagemode java-mode
28 29
@@ -153,7 +154,7 @@
153 154
154%keyword CHAR "char" 155%keyword CHAR "char"
155%put CHAR summary 156%put CHAR summary
156"Integral primitive type ('\u0000' to '\uffff') (0 to 65535)" 157"Integral primitive type (0 to 65535)"
157 158
158%keyword CLASS "class" 159%keyword CLASS "class"
159%put CLASS summary 160%put CLASS summary
@@ -311,7 +312,7 @@
311%keyword WHILE "while" 312%keyword WHILE "while"
312%put WHILE summary 313%put WHILE summary
313"while (<expr>) <stmt> | do <stmt> while (<expr>);" 314"while (<expr>) <stmt> | do <stmt> while (<expr>);"
314 315
315;; -------------------------- 316;; --------------------------
316;; Official javadoc line tags 317;; Official javadoc line tags
317;; -------------------------- 318;; --------------------------
@@ -339,27 +340,27 @@
339%keyword _AUTHOR "@author" 340%keyword _AUTHOR "@author"
340%put _AUTHOR javadoc (seq 1 usage (type)) 341%put _AUTHOR javadoc (seq 1 usage (type))
341%keyword _VERSION "@version" 342%keyword _VERSION "@version"
342%put _VERSION javadoc (seq 2 usage (type)) 343%put _VERSION javadoc (seq 2 usage (type))
343%keyword _PARAM "@param" 344%keyword _PARAM "@param"
344%put _PARAM javadoc (seq 3 usage (function) with-name t) 345%put _PARAM javadoc (seq 3 usage (function) with-name t)
345%keyword _RETURN "@return" 346%keyword _RETURN "@return"
346%put _RETURN javadoc (seq 4 usage (function)) 347%put _RETURN javadoc (seq 4 usage (function))
347%keyword _EXCEPTION "@exception" 348%keyword _EXCEPTION "@exception"
348%put _EXCEPTION javadoc (seq 5 usage (function) with-name t) 349%put _EXCEPTION javadoc (seq 5 usage (function) with-name t)
349%keyword _THROWS "@throws" 350%keyword _THROWS "@throws"
350%put _THROWS javadoc (seq 6 usage (function) with-name t) 351%put _THROWS javadoc (seq 6 usage (function) with-name t)
351%keyword _SEE "@see" 352%keyword _SEE "@see"
352%put _SEE javadoc (seq 7 usage (type function variable) opt t with-ref t) 353%put _SEE javadoc (seq 7 usage (type function variable) opt t with-ref t)
353%keyword _SINCE "@since" 354%keyword _SINCE "@since"
354%put _SINCE javadoc (seq 8 usage (type function variable) opt t) 355%put _SINCE javadoc (seq 8 usage (type function variable) opt t)
355%keyword _SERIAL "@serial" 356%keyword _SERIAL "@serial"
356%put _SERIAL javadoc (seq 9 usage (variable) opt t) 357%put _SERIAL javadoc (seq 9 usage (variable) opt t)
357%keyword _SERIALDATA "@serialData" 358%keyword _SERIALDATA "@serialData"
358%put _SERIALDATA javadoc (seq 10 usage (function) opt t) 359%put _SERIALDATA javadoc (seq 10 usage (function) opt t)
359%keyword _SERIALFIELD "@serialField" 360%keyword _SERIALFIELD "@serialField"
360%put _SERIALFIELD javadoc (seq 11 usage (variable) opt t) 361%put _SERIALFIELD javadoc (seq 11 usage (variable) opt t)
361%keyword _DEPRECATED "@deprecated" 362%keyword _DEPRECATED "@deprecated"
362%put _DEPRECATED javadoc (seq 12 usage (type function variable) opt t) 363%put _DEPRECATED javadoc (seq 12 usage (type function variable) opt t)
363 364
364%% 365%%
365 366
@@ -386,7 +387,7 @@ package_declaration
386 ; 387 ;
387 388
388;;; Include file token 389;;; Include file token
389;; ("FILE" include SYSTEM "DOCSTRING") 390;; ("FILE" include SYSTEM "DOCSTRING")
390import_declaration 391import_declaration
391 : IMPORT qualified_name SEMICOLON 392 : IMPORT qualified_name SEMICOLON
392 (INCLUDE-TAG $2 nil) 393 (INCLUDE-TAG $2 nil)
@@ -444,7 +445,7 @@ class_member_declaration
444;;; Type Declaration token 445;;; Type Declaration token
445;; ("NAME" type "TYPE" ( PART-LIST ) ( PARENTS ) EXTRA-SPEC "DOCSTRING") 446;; ("NAME" type "TYPE" ( PART-LIST ) ( PARENTS ) EXTRA-SPEC "DOCSTRING")
446interface_declaration 447interface_declaration
447 : modifiers_opt INTERFACE IDENTIFIER extends_interfaces_opt interface_body 448 : modifiers_opt INTERFACE qualified_name extends_interfaces_opt interface_body
448 (TYPE-TAG $3 $2 $5 (if $4 (cons nil $4)) :typemodifiers $1) 449 (TYPE-TAG $3 $2 $5 (if $4 (cons nil $4)) :typemodifiers $1)
449 ; 450 ;
450 451
@@ -475,7 +476,7 @@ static_initializer
475 ; 476 ;
476 477
477;;; Function token 478;;; Function token
478;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING") 479;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
479constructor_declaration 480constructor_declaration
480 : modifiers_opt constructor_declarator throwsc_opt constructor_body 481 : modifiers_opt constructor_declarator throwsc_opt constructor_body
481 (FUNCTION-TAG (car $2) nil (cdr $2) 482 (FUNCTION-TAG (car $2) nil (cdr $2)
@@ -490,11 +491,11 @@ constructor_declarator
490 ; 491 ;
491 492
492constructor_body 493constructor_body
493 : block 494 : block
494 ; 495 ;
495 496
496;;; Function token 497;;; Function token
497;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING") 498;; ("NAME" function "TYPE" ( ARG-LIST ) EXTRA-SPEC "DOCSTRING")
498method_declaration 499method_declaration
499 : modifiers_opt VOID method_declarator throwsc_opt method_body 500 : modifiers_opt VOID method_declarator throwsc_opt method_body
500 (FUNCTION-TAG (car $3) $2 (cdr $3) :typemodifiers $1 :throws $4) 501 (FUNCTION-TAG (car $3) $2 (cdr $3) :typemodifiers $1 :throws $4)
@@ -547,7 +548,7 @@ formal_parameters
547;;; Variable token 548;;; Variable token
548;; ("NAME" variable "TYPE" DEFAULT-VALUE EXTRA-SPEC "DOCSTRING") 549;; ("NAME" variable "TYPE" DEFAULT-VALUE EXTRA-SPEC "DOCSTRING")
549formal_parameter 550formal_parameter
550 : formal_parameter_modifier_opt type variable_declarator_id 551 : formal_parameter_modifier_opt type opt_variable_declarator_id
551 (VARIABLE-TAG $3 $2 nil :typemodifiers $1) 552 (VARIABLE-TAG $3 $2 nil :typemodifiers $1)
552 ; 553 ;
553 554
@@ -582,6 +583,13 @@ variable_declarator
582 (cons $1 $region) 583 (cons $1 $region)
583 ; 584 ;
584 585
586opt_variable_declarator_id
587 : ;; EMPTY
588 (identity "")
589 | variable_declarator_id
590 (identity $1)
591 ;
592
585variable_declarator_id 593variable_declarator_id
586 : IDENTIFIER dims_opt 594 : IDENTIFIER dims_opt
587 (concat $1 $2) 595 (concat $1 $2)
diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy
index c6b3a58aac3..3b602296552 100644
--- a/admin/grammars/js.wy
+++ b/admin/grammars/js.wy
@@ -1,6 +1,6 @@
1;;; javascript-jv.wy -- LALR grammar for Javascript 1;;; javascript-jv.wy -- LALR grammar for Javascript
2 2
3;; Copyright (C) 2005-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
4;; Copyright (C) 1998-2011 Ecma International. 4;; Copyright (C) 1998-2011 Ecma International.
5 5
6;; Author: Joakim Verona 6;; Author: Joakim Verona
@@ -58,6 +58,7 @@
58;; DAMAGE. 58;; DAMAGE.
59 59
60%package wisent-javascript-jv-wy 60%package wisent-javascript-jv-wy
61%provide semantic/wisent/js-wy
61;; JAVE I prefere ecmascript-mode 62;; JAVE I prefere ecmascript-mode
62%languagemode ecmascript-mode javascript-mode 63%languagemode ecmascript-mode javascript-mode
63 64
diff --git a/admin/grammars/make.by b/admin/grammars/make.by
index ee933805cf6..dcb3bb2f7d7 100644
--- a/admin/grammars/make.by
+++ b/admin/grammars/make.by
@@ -1,6 +1,6 @@
1;;; make.by -- BY notation for Makefiles. 1;;; make.by -- BY notation for Makefiles.
2 2
3;; Copyright (C) 1999-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
4;; 4;;
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6;; David Ponce <david@dponce.com> 6;; David Ponce <david@dponce.com>
@@ -22,6 +22,7 @@
22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23 23
24%package semantic-make-by 24%package semantic-make-by
25%provide semantic/bovine/make-by
25 26
26%languagemode makefile-mode 27%languagemode makefile-mode
27%start Makefile 28%start Makefile
diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy
index f7808fd20b8..02fb7390b01 100644
--- a/admin/grammars/python.wy
+++ b/admin/grammars/python.wy
@@ -1,6 +1,6 @@
1;;; python.wy -- LALR grammar for Python 1;;; python.wy -- LALR grammar for Python
2 2
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
4;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 4;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
5;; 2009, 2010 Python Software Foundation; All Rights Reserved 5;; 2009, 2010 Python Software Foundation; All Rights Reserved
6 6
@@ -88,6 +88,12 @@
88;; -------- 88;; --------
89 89
90%package wisent-python-wy 90%package wisent-python-wy
91%provide semantic/wisent/python-wy
92
93%{
94(declare-function wisent-python-reconstitute-function-tag "semantic/wisent/python")
95(declare-function wisent-python-reconstitute-class-tag "semantic/wisent/python")
96}
91 97
92%languagemode python-mode 98%languagemode python-mode
93 99
@@ -173,6 +179,7 @@
173%token <punctuation> COMMA "," 179%token <punctuation> COMMA ","
174%token <punctuation> ASSIGN "=" 180%token <punctuation> ASSIGN "="
175%token <punctuation> BACKQUOTE "`" 181%token <punctuation> BACKQUOTE "`"
182%token <punctuation> AT "@"
176 183
177 184
178;; ----------------- 185;; -----------------
@@ -307,6 +314,10 @@
307%put WHILE summary 314%put WHILE summary
308"Start a 'while' loop" 315"Start a 'while' loop"
309 316
317%keyword WITH "with"
318%put WITH summary
319"Start statement with an associated context object"
320
310%keyword YIELD "yield" 321%keyword YIELD "yield"
311%put YIELD summary 322%put YIELD summary
312"Create a generator function" 323"Create a generator function"
@@ -545,8 +556,10 @@ import_stmt
545 556
546;; dotted_as_name (',' dotted_as_name)* 557;; dotted_as_name (',' dotted_as_name)*
547dotted_as_name_list 558dotted_as_name_list
548 : dotted_as_name 559 : dotted_as_name_list COMMA dotted_as_name
549 | dotted_as_name_list COMMA dotted_as_name 560 (cons $3 $1)
561 | dotted_as_name
562 (list $1)
550 ; 563 ;
551 564
552;; ('*' | import_as_name (',' import_as_name)*) 565;; ('*' | import_as_name (',' import_as_name)*)
@@ -649,6 +662,7 @@ compound_stmt
649 | while_stmt 662 | while_stmt
650 | for_stmt 663 | for_stmt
651 | try_stmt 664 | try_stmt
665 | with_stmt
652 | funcdef 666 | funcdef
653 | class_declaration 667 | class_declaration
654 ; 668 ;
@@ -756,13 +770,46 @@ zero_one_or_two_test
756 ; 770 ;
757 771
758;;;============================================================================ 772;;;============================================================================
773;;@@ with_stmt
774;;;============================================================================
775
776;; with_stmt: 'with' test [ with_var ] ':' suite
777with_stmt
778 : WITH test COLON suite
779 (CODE-TAG $1 nil)
780 | WITH test with_var COLON suite
781 (CODE-TAG $1 nil) ;; TODO capture variable
782 ;
783
784with_var
785 : AS expr
786 () ;; TODO capture
787 ;
788
789;;;============================================================================
759;;;@@ funcdef 790;;;@@ funcdef
760;;;============================================================================ 791;;;============================================================================
761 792
762;; funcdef: 'def' NAME parameters ':' suite 793decorator
794 : AT dotted_name varargslist_opt NEWLINE
795 (FUNCTION-TAG $2 "decorator" $3)
796 ;
797
798decorators
799 : decorator
800 (list $1)
801 | decorator decorators
802 (cons $1 $2)
803 ;
804
805;; funcdef: [decorators] 'def' NAME parameters ':' suite
763funcdef 806funcdef
764 : DEF NAME function_parameter_list COLON suite 807 : DEF NAME function_parameter_list COLON suite
765 (FUNCTION-TAG $2 nil $3) 808 (wisent-python-reconstitute-function-tag
809 (FUNCTION-TAG $2 nil $3) $5)
810 | decorators DEF NAME function_parameter_list COLON suite
811 (wisent-python-reconstitute-function-tag
812 (FUNCTION-TAG $3 nil $4 :decorators $1) $6)
766 ; 813 ;
767 814
768function_parameter_list 815function_parameter_list
@@ -798,10 +845,11 @@ function_parameter
798;; classdef: 'class' NAME ['(' testlist ')'] ':' suite 845;; classdef: 'class' NAME ['(' testlist ')'] ':' suite
799class_declaration 846class_declaration
800 : CLASS NAME paren_class_list_opt COLON suite 847 : CLASS NAME paren_class_list_opt COLON suite
801 (TYPE-TAG $2 $1 ;; Name "class" 848 (wisent-python-reconstitute-class-tag
802 $5 ;; Members 849 (TYPE-TAG $2 $1 ;; Name "class"
803 (cons $3 nil) ;; (SUPERCLASSES . INTERFACES) 850 $5 ;; Members
804 ) 851 (cons $3 nil) ;; (SUPERCLASSES . INTERFACES)
852 ))
805 ; 853 ;
806 854
807;; ['(' testlist ')'] 855;; ['(' testlist ')']
diff --git a/admin/grammars/scheme.by b/admin/grammars/scheme.by
index 3925f03c28b..a433d776df5 100644
--- a/admin/grammars/scheme.by
+++ b/admin/grammars/scheme.by
@@ -1,6 +1,6 @@
1;;; scheme.by -- Scheme BNF language specification 1;;; scheme.by -- Scheme BNF language specification
2 2
3;; Copyright (C) 2001-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -18,6 +18,7 @@
18;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 18;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
19 19
20%package semantic-scm-by 20%package semantic-scm-by
21%provide semantic/bovine/scm-by
21 22
22%languagemode scheme-mode 23%languagemode scheme-mode
23%start scheme 24%start scheme
diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy
index f38d7eaa2a1..fd3f61905d3 100644
--- a/admin/grammars/srecode-template.wy
+++ b/admin/grammars/srecode-template.wy
@@ -1,6 +1,6 @@
1;;; srecode-template.wy --- Semantic Recoder Template parser 1;;; srecode-template.wy --- Semantic Recoder Template parser
2 2
3;; Copyright (C) 2005-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
4 4
5;; Author: Eric Ludlam <zappo@gnu.org> 5;; Author: Eric Ludlam <zappo@gnu.org>
6;; Keywords: syntax 6;; Keywords: syntax
@@ -28,6 +28,9 @@
28;; Semantic Recoder templates are based on Google Templates 28;; Semantic Recoder templates are based on Google Templates
29;; and are at the bottom of the Semantic Recoder API. 29;; and are at the bottom of the Semantic Recoder API.
30 30
31%package srecode-template-wy
32%provide srecode/srt-wy
33
31%languagemode srecode-mode 34%languagemode srecode-mode
32 35
33%start template_file 36%start template_file
@@ -46,6 +49,15 @@
46%put TEMPLATE summary "template <name>\\n <template definition>" 49%put TEMPLATE summary "template <name>\\n <template definition>"
47%keyword SECTIONDICTIONARY "sectiondictionary" 50%keyword SECTIONDICTIONARY "sectiondictionary"
48%put SECTIONDICTIONARY summary "sectiondictionary <name>\\n <dictionary entries>" 51%put SECTIONDICTIONARY summary "sectiondictionary <name>\\n <dictionary entries>"
52
53%keyword SECTION "section"
54%put SECTION summary
55 "section <name>\\n <dictionary entries>\\n end"
56
57%keyword END "end"
58%put END summary
59 "section ... end"
60
49%keyword PROMPT "prompt" 61%keyword PROMPT "prompt"
50%keyword DEFAULT "default" 62%keyword DEFAULT "default"
51%keyword DEFAULTMACRO "defaultmacro" 63%keyword DEFAULTMACRO "defaultmacro"
@@ -62,7 +74,7 @@
62%token <separator> TEMPLATE_BLOCK "^----" 74%token <separator> TEMPLATE_BLOCK "^----"
63 75
64;;; Bland default types 76;;; Bland default types
65%type <property> ":\\(\\w\\|\\s_\\)*" 77%type <property> syntax ":\\(\\w\\|\\s_\\)*"
66%token <property> property 78%token <property> property
67 79
68%type <symbol> 80%type <symbol>
@@ -113,6 +125,10 @@ opt-read-fcn
113variable 125variable
114 : SET symbol insertable-string-list newline 126 : SET symbol insertable-string-list newline
115 (VARIABLE-TAG $2 nil $3) 127 (VARIABLE-TAG $2 nil $3)
128 | SET symbol number newline
129 ;; This so a common error w/ priority works.
130 ;; Note that "number" still has a string value in the lexer.
131 (VARIABLE-TAG $2 nil (list $3))
116 | SHOW symbol newline 132 | SHOW symbol newline
117 (VARIABLE-TAG $2 nil t) 133 (VARIABLE-TAG $2 nil t)
118 ; 134 ;
@@ -134,7 +150,7 @@ insertable-string
134template 150template
135 : TEMPLATE templatename opt-dynamic-arguments newline 151 : TEMPLATE templatename opt-dynamic-arguments newline
136 opt-string 152 opt-string
137 opt-section-dictionaries 153 section-dictionary-list
138 TEMPLATE_BLOCK newline 154 TEMPLATE_BLOCK newline
139 opt-bind 155 opt-bind
140 (FUNCTION-TAG $2 nil $3 :documentation $5 :code $7 156 (FUNCTION-TAG $2 nil $3 :documentation $5 :code $7
@@ -165,29 +181,52 @@ opt-string
165 | () 181 | ()
166 ; 182 ;
167 183
168opt-section-dictionaries
169 : () ;; EMPTY
170 | section-dictionary-list
171 ;
172
173section-dictionary-list 184section-dictionary-list
174 : one-section-dictionary 185 : ;; empty
175 (list $1) 186 ()
176 | section-dictionary-list one-section-dictionary 187 | section-dictionary-list flat-section-dictionary
188 (append $1 (list $2))
189 | section-dictionary-list section-dictionary
177 (append $1 (list $2)) 190 (append $1 (list $2))
178 ; 191 ;
179 192
180one-section-dictionary 193flat-section-dictionary
181 : SECTIONDICTIONARY string newline 194 : SECTIONDICTIONARY string newline
182 variable-list 195 flat-dictionary-entry-list
196 (cons (read $2) $4)
197 ;
198
199flat-dictionary-entry-list
200 : ;; empty
201 ()
202 | flat-dictionary-entry-list flat-dictionary-entry
203 (append $1 $2)
204 ;
205
206flat-dictionary-entry
207 : variable
208 (EXPANDTAG $1)
209 ;
210
211section-dictionary
212 : SECTION string newline
213 dictionary-entry-list
214 END newline
183 (cons (read $2) $4) 215 (cons (read $2) $4)
184 ; 216 ;
185 217
186variable-list 218dictionary-entry-list
219 : ;; empty
220 ()
221 | dictionary-entry-list dictionary-entry
222 (append $1 $2)
223 ;
224
225dictionary-entry
187 : variable 226 : variable
188 (EXPANDTAG $1) 227 (EXPANDTAG $1)
189 | variable-list variable 228 | section-dictionary
190 (append $1 (EXPANDTAG $2)) 229 (list $1)
191 ; 230 ;
192 231
193opt-bind 232opt-bind
@@ -225,11 +264,11 @@ It ignores whitespace, newlines and comments."
225 srecode-template-separator-block 264 srecode-template-separator-block
226 srecode-template-wy--<keyword>-keyword-analyzer 265 srecode-template-wy--<keyword>-keyword-analyzer
227 srecode-template-property-analyzer 266 srecode-template-property-analyzer
228 srecode-template-wy--<symbol>-regexp-analyzer
229 srecode-template-wy--<number>-regexp-analyzer 267 srecode-template-wy--<number>-regexp-analyzer
268 srecode-template-wy--<symbol>-regexp-analyzer
230 srecode-template-wy--<string>-sexp-analyzer 269 srecode-template-wy--<string>-sexp-analyzer
231 srecode-template-wy--<punctuation>-string-analyzer 270 srecode-template-wy--<punctuation>-string-analyzer
232 semantic-lex-default-action 271 semantic-lex-default-action
233 ) 272 )
234 273
235;;; wisent-dot.wy ends here 274;;; srecode-template.wy ends here
diff --git a/admin/grammars/wisent-grammar.el b/admin/grammars/wisent-grammar.el
deleted file mode 100644
index 714b5211127..00000000000
--- a/admin/grammars/wisent-grammar.el
+++ /dev/null
@@ -1,537 +0,0 @@
1;;; wisent-grammar.el --- Wisent's input grammar mode
2
3;; Copyright (C) 2002-2012 Free Software Foundation, Inc.
4;;
5;; Author: David Ponce <david@dponce.com>
6;; Maintainer: David Ponce <david@dponce.com>
7;; Created: 26 Aug 2002
8;; Keywords: syntax
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software: you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation, either version 3 of the License, or
14;; (at your option) any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
24;;; Commentary:
25;;
26;; Major mode for editing Wisent's input grammar (.wy) files.
27
28;;; Code:
29(require 'semantic)
30(require 'semantic/grammar)
31(require 'semantic/find)
32(require 'semantic/lex)
33(require 'semantic/wisent)
34(require 'semantic/bovine)
35
36(defsubst wisent-grammar-region-placeholder (symb)
37 "Given a $N placeholder symbol in SYMB, return a $regionN symbol.
38Return nil if $N is not a valid placeholder symbol."
39 (let ((n (symbol-name symb)))
40 (if (string-match "^[$]\\([1-9][0-9]*\\)$" n)
41 (intern (concat "$region" (match-string 1 n))))))
42
43(defun wisent-grammar-EXPAND (symb nonterm)
44 "Expand call to EXPAND grammar macro.
45Return the form to parse from within a nonterminal.
46SYMB is a $I placeholder symbol that gives the bounds of the area to
47parse.
48NONTERM is the nonterminal symbol to start with."
49 (unless (member nonterm (semantic-grammar-start))
50 (error "EXPANDFULL macro called with %s, but not used with %%start"
51 nonterm))
52 (let (($ri (wisent-grammar-region-placeholder symb)))
53 (if $ri
54 `(semantic-bovinate-from-nonterminal
55 (car ,$ri) (cdr ,$ri) ',nonterm)
56 (error "Invalid form (EXPAND %s %s)" symb nonterm))))
57
58(defun wisent-grammar-EXPANDFULL (symb nonterm)
59 "Expand call to EXPANDFULL grammar macro.
60Return the form to recursively parse an area.
61SYMB is a $I placeholder symbol that gives the bounds of the area.
62NONTERM is the nonterminal symbol to start with."
63 (unless (member nonterm (semantic-grammar-start))
64 (error "EXPANDFULL macro called with %s, but not used with %%start"
65 nonterm))
66 (let (($ri (wisent-grammar-region-placeholder symb)))
67 (if $ri
68 `(semantic-parse-region
69 (car ,$ri) (cdr ,$ri) ',nonterm 1)
70 (error "Invalid form (EXPANDFULL %s %s)" symb nonterm))))
71
72(defun wisent-grammar-TAG (name class &rest attributes)
73 "Expand call to TAG grammar macro.
74Return the form to create a generic semantic tag.
75See the function `semantic-tag' for the meaning of arguments NAME,
76CLASS and ATTRIBUTES."
77 `(wisent-raw-tag
78 (semantic-tag ,name ,class ,@attributes)))
79
80(defun wisent-grammar-VARIABLE-TAG (name type default-value &rest attributes)
81 "Expand call to VARIABLE-TAG grammar macro.
82Return the form to create a semantic tag of class variable.
83See the function `semantic-tag-new-variable' for the meaning of
84arguments NAME, TYPE, DEFAULT-VALUE and ATTRIBUTES."
85 `(wisent-raw-tag
86 (semantic-tag-new-variable ,name ,type ,default-value ,@attributes)))
87
88(defun wisent-grammar-FUNCTION-TAG (name type arg-list &rest attributes)
89 "Expand call to FUNCTION-TAG grammar macro.
90Return the form to create a semantic tag of class function.
91See the function `semantic-tag-new-function' for the meaning of
92arguments NAME, TYPE, ARG-LIST and ATTRIBUTES."
93 `(wisent-raw-tag
94 (semantic-tag-new-function ,name ,type ,arg-list ,@attributes)))
95
96(defun wisent-grammar-TYPE-TAG (name type members parents &rest attributes)
97 "Expand call to TYPE-TAG grammar macro.
98Return the form to create a semantic tag of class type.
99See the function `semantic-tag-new-type' for the meaning of arguments
100NAME, TYPE, MEMBERS, PARENTS and ATTRIBUTES."
101 `(wisent-raw-tag
102 (semantic-tag-new-type ,name ,type ,members ,parents ,@attributes)))
103
104(defun wisent-grammar-INCLUDE-TAG (name system-flag &rest attributes)
105 "Expand call to INCLUDE-TAG grammar macro.
106Return the form to create a semantic tag of class include.
107See the function `semantic-tag-new-include' for the meaning of
108arguments NAME, SYSTEM-FLAG and ATTRIBUTES."
109 `(wisent-raw-tag
110 (semantic-tag-new-include ,name ,system-flag ,@attributes)))
111
112(defun wisent-grammar-PACKAGE-TAG (name detail &rest attributes)
113 "Expand call to PACKAGE-TAG grammar macro.
114Return the form to create a semantic tag of class package.
115See the function `semantic-tag-new-package' for the meaning of
116arguments NAME, DETAIL and ATTRIBUTES."
117 `(wisent-raw-tag
118 (semantic-tag-new-package ,name ,detail ,@attributes)))
119
120(defun wisent-grammar-CODE-TAG (name detail &rest attributes)
121 "Expand call to CODE-TAG grammar macro.
122Return the form to create a semantic tag of class code.
123See the function `semantic-tag-new-code' for the meaning of arguments
124NAME, DETAIL and ATTRIBUTES."
125 `(wisent-raw-tag
126 (semantic-tag-new-code ,name ,detail ,@attributes)))
127
128(defun wisent-grammar-ALIAS-TAG (name aliasclass definition &rest attributes)
129 "Expand call to ALIAS-TAG grammar macro.
130Return the form to create a semantic tag of class alias.
131See the function `semantic-tag-new-alias' for the meaning of arguments
132NAME, ALIASCLASS, DEFINITION and ATTRIBUTES."
133 `(wisent-raw-tag
134 (semantic-tag-new-alias ,name ,aliasclass ,definition ,@attributes)))
135
136(defun wisent-grammar-EXPANDTAG (raw-tag)
137 "Expand call to EXPANDTAG grammar macro.
138Return the form to produce a list of cooked tags from raw form of
139Semantic tag RAW-TAG."
140 `(wisent-cook-tag ,raw-tag))
141
142(defun wisent-grammar-AST-ADD (ast &rest nodes)
143 "Expand call to AST-ADD grammar macro.
144Return the form to update the abstract syntax tree AST with NODES.
145See also the function `semantic-ast-add'."
146 `(semantic-ast-add ,ast ,@nodes))
147
148(defun wisent-grammar-AST-PUT (ast &rest nodes)
149 "Expand call to AST-PUT grammar macro.
150Return the form to update the abstract syntax tree AST with NODES.
151See also the function `semantic-ast-put'."
152 `(semantic-ast-put ,ast ,@nodes))
153
154(defun wisent-grammar-AST-GET (ast node)
155 "Expand call to AST-GET grammar macro.
156Return the form to get, from the abstract syntax tree AST, the value
157of NODE.
158See also the function `semantic-ast-get'."
159 `(semantic-ast-get ,ast ,node))
160
161(defun wisent-grammar-AST-GET1 (ast node)
162 "Expand call to AST-GET1 grammar macro.
163Return the form to get, from the abstract syntax tree AST, the first
164value of NODE.
165See also the function `semantic-ast-get1'."
166 `(semantic-ast-get1 ,ast ,node))
167
168(defun wisent-grammar-AST-GET-STRING (ast node)
169 "Expand call to AST-GET-STRING grammar macro.
170Return the form to get, from the abstract syntax tree AST, the value
171of NODE as a string.
172See also the function `semantic-ast-get-string'."
173 `(semantic-ast-get-string ,ast ,node))
174
175(defun wisent-grammar-AST-MERGE (ast1 ast2)
176 "Expand call to AST-MERGE grammar macro.
177Return the form to merge the abstract syntax trees AST1 and AST2.
178See also the function `semantic-ast-merge'."
179 `(semantic-ast-merge ,ast1 ,ast2))
180
181(defun wisent-grammar-SKIP-BLOCK (&optional symb)
182 "Expand call to SKIP-BLOCK grammar macro.
183Return the form to skip a parenthesized block.
184Optional argument SYMB is a $I placeholder symbol that gives the
185bounds of the block to skip. By default, skip the block at `$1'.
186See also the function `wisent-skip-block'."
187 (let ($ri)
188 (when symb
189 (unless (setq $ri (wisent-grammar-region-placeholder symb))
190 (error "Invalid form (SKIP-BLOCK %s)" symb)))
191 `(wisent-skip-block ,$ri)))
192
193(defun wisent-grammar-SKIP-TOKEN ()
194 "Expand call to SKIP-TOKEN grammar macro.
195Return the form to skip the lookahead token.
196See also the function `wisent-skip-token'."
197 `(wisent-skip-token))
198
199(defun wisent-grammar-assocs ()
200 "Return associativity and precedence level definitions."
201 (mapcar
202 #'(lambda (tag)
203 (cons (intern (semantic-tag-name tag))
204 (mapcar #'semantic-grammar-item-value
205 (semantic-tag-get-attribute tag :value))))
206 (semantic-find-tags-by-class 'assoc (current-buffer))))
207
208(defun wisent-grammar-terminals ()
209 "Return the list of terminal symbols.
210Keep order of declaration in the WY file without duplicates."
211 (let (terms)
212 (mapcar
213 #'(lambda (tag)
214 (mapcar #'(lambda (name)
215 (add-to-list 'terms (intern name)))
216 (cons (semantic-tag-name tag)
217 (semantic-tag-get-attribute tag :rest))))
218 (semantic--find-tags-by-function
219 #'(lambda (tag)
220 (memq (semantic-tag-class tag) '(token keyword)))
221 (current-buffer)))
222 (nreverse terms)))
223
224;; Cache of macro definitions currently in use.
225(defvar wisent--grammar-macros nil)
226
227(defun wisent-grammar-expand-macros (expr)
228 "Expand expression EXPR into a form without grammar macros.
229Return the expanded expression."
230 (if (or (atom expr) (semantic-grammar-quote-p (car expr)))
231 expr ;; Just return atom or quoted expression.
232 (let* ((expr (mapcar 'wisent-grammar-expand-macros expr))
233 (macro (assq (car expr) wisent--grammar-macros)))
234 (if macro ;; Expand Semantic built-in.
235 (apply (cdr macro) (cdr expr))
236 expr))))
237
238(defun wisent-grammar-nonterminals ()
239 "Return the list form of nonterminal definitions."
240 (let ((nttags (semantic-find-tags-by-class
241 'nonterminal (current-buffer)))
242 ;; Setup the cache of macro definitions.
243 (wisent--grammar-macros (semantic-grammar-macros))
244 rltags nterms rules rule elems elem actn sexp prec)
245 (while nttags
246 (setq rltags (semantic-tag-components (car nttags))
247 rules nil)
248 (while rltags
249 (setq elems (semantic-tag-get-attribute (car rltags) :value)
250 prec (semantic-tag-get-attribute (car rltags) :prec)
251 actn (semantic-tag-get-attribute (car rltags) :expr)
252 rule nil)
253 (when elems ;; not an EMPTY rule
254 (while elems
255 (setq elem (car elems)
256 elems (cdr elems))
257 (setq elem (if (consp elem) ;; mid-rule action
258 (wisent-grammar-expand-macros (read (car elem)))
259 (semantic-grammar-item-value elem)) ;; item
260 rule (cons elem rule)))
261 (setq rule (nreverse rule)))
262 (if prec
263 (setq prec (vector (semantic-grammar-item-value prec))))
264 (if actn
265 (setq sexp (wisent-grammar-expand-macros (read actn))))
266 (setq rule (if actn
267 (if prec
268 (list rule prec sexp)
269 (list rule sexp))
270 (if prec
271 (list rule prec)
272 (list rule))))
273 (setq rules (cons rule rules)
274 rltags (cdr rltags)))
275 (setq nterms (cons (cons (intern (semantic-tag-name (car nttags)))
276 (nreverse rules))
277 nterms)
278 nttags (cdr nttags)))
279 (nreverse nterms)))
280
281(defun wisent-grammar-grammar ()
282 "Return Elisp form of the grammar."
283 (let* ((terminals (wisent-grammar-terminals))
284 (nonterminals (wisent-grammar-nonterminals))
285 (assocs (wisent-grammar-assocs)))
286 (cons terminals (cons assocs nonterminals))))
287
288(defun wisent-grammar-parsetable-builder ()
289 "Return the value of the parser table."
290 `(progn
291 ;; Ensure that the grammar [byte-]compiler is available.
292 (eval-when-compile (require 'semantic/wisent/comp))
293 (wisent-compile-grammar
294 ',(wisent-grammar-grammar)
295 ',(semantic-grammar-start))))
296
297(defun wisent-grammar-setupcode-builder ()
298 "Return the parser setup code."
299 (format
300 "(semantic-install-function-overrides\n\
301 '((parse-stream . wisent-parse-stream)))\n\
302 (setq semantic-parser-name \"LALR\"\n\
303 semantic--parse-table %s\n\
304 semantic-debug-parser-source %S\n\
305 semantic-flex-keywords-obarray %s\n\
306 semantic-lex-types-obarray %s)\n\
307 ;; Collect unmatched syntax lexical tokens\n\
308 (semantic-make-local-hook 'wisent-discarding-token-functions)\n\
309 (add-hook 'wisent-discarding-token-functions\n\
310 'wisent-collect-unmatched-syntax nil t)"
311 (semantic-grammar-parsetable)
312 (buffer-name)
313 (semantic-grammar-keywordtable)
314 (semantic-grammar-tokentable)))
315
316(defvar wisent-grammar-menu
317 '("WY Grammar"
318 ["LALR Compiler Verbose" wisent-toggle-verbose-flag
319 :style toggle :active (boundp 'wisent-verbose-flag)
320 :selected (and (boundp 'wisent-verbose-flag)
321 wisent-verbose-flag)]
322 )
323 "WY mode specific grammar menu.
324Menu items are appended to the common grammar menu.")
325
326(define-derived-mode wisent-grammar-mode semantic-grammar-mode "WY"
327 "Major mode for editing Wisent grammars."
328 (semantic-grammar-setup-menu wisent-grammar-menu)
329 (semantic-install-function-overrides
330 '((grammar-parsetable-builder . wisent-grammar-parsetable-builder)
331 (grammar-setupcode-builder . wisent-grammar-setupcode-builder)
332 )))
333
334(add-to-list 'auto-mode-alist '("\\.wy\\'" . wisent-grammar-mode))
335
336(defvar-mode-local wisent-grammar-mode semantic-grammar-macros
337 '(
338 (ASSOC . semantic-grammar-ASSOC)
339 (EXPAND . wisent-grammar-EXPAND)
340 (EXPANDFULL . wisent-grammar-EXPANDFULL)
341 (TAG . wisent-grammar-TAG)
342 (VARIABLE-TAG . wisent-grammar-VARIABLE-TAG)
343 (FUNCTION-TAG . wisent-grammar-FUNCTION-TAG)
344 (TYPE-TAG . wisent-grammar-TYPE-TAG)
345 (INCLUDE-TAG . wisent-grammar-INCLUDE-TAG)
346 (PACKAGE-TAG . wisent-grammar-PACKAGE-TAG)
347 (EXPANDTAG . wisent-grammar-EXPANDTAG)
348 (CODE-TAG . wisent-grammar-CODE-TAG)
349 (ALIAS-TAG . wisent-grammar-ALIAS-TAG)
350 (AST-ADD . wisent-grammar-AST-ADD)
351 (AST-PUT . wisent-grammar-AST-PUT)
352 (AST-GET . wisent-grammar-AST-GET)
353 (AST-GET1 . wisent-grammar-AST-GET1)
354 (AST-GET-STRING . wisent-grammar-AST-GET-STRING)
355 (AST-MERGE . wisent-grammar-AST-MERGE)
356 (SKIP-BLOCK . wisent-grammar-SKIP-BLOCK)
357 (SKIP-TOKEN . wisent-grammar-SKIP-TOKEN)
358 )
359 "Semantic grammar macros used in wisent grammars.")
360
361(defvar wisent-make-parsers--emacs-license
362 ";; This file is part of GNU Emacs.
363
364;; GNU Emacs is free software: you can redistribute it and/or modify
365;; it under the terms of the GNU General Public License as published by
366;; the Free Software Foundation, either version 3 of the License, or
367;; (at your option) any later version.
368
369;; GNU Emacs is distributed in the hope that it will be useful,
370;; but WITHOUT ANY WARRANTY; without even the implied warranty of
371;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
372;; GNU General Public License for more details.
373
374;; You should have received a copy of the GNU General Public License
375;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.")
376
377(defvar wisent-make-parsers--python-license
378 ";; It is derived in part from the Python grammar, used under the
379;; following license:
380;;
381;; PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
382;; --------------------------------------------
383;; 1. This LICENSE AGREEMENT is between the Python Software Foundation
384;; (\"PSF\"), and the Individual or Organization (\"Licensee\") accessing
385;; and otherwise using this software (\"Python\") in source or binary
386;; form and its associated documentation.
387;;
388;; 2. Subject to the terms and conditions of this License Agreement,
389;; PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide
390;; license to reproduce, analyze, test, perform and/or display
391;; publicly, prepare derivative works, distribute, and otherwise use
392;; Python alone or in any derivative version, provided, however, that
393;; PSF's License Agreement and PSF's notice of copyright, i.e.,
394;; \"Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
395;; 2009, 2010 Python Software Foundation; All Rights Reserved\" are
396;; retained in Python alone or in any derivative version prepared by
397;; Licensee.
398;;
399;; 3. In the event Licensee prepares a derivative work that is based
400;; on or incorporates Python or any part thereof, and wants to make
401;; the derivative work available to others as provided herein, then
402;; Licensee hereby agrees to include in any such work a brief summary
403;; of the changes made to Python.
404;;
405;; 4. PSF is making Python available to Licensee on an \"AS IS\"
406;; basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
407;; IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
408;; DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
409;; FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
410;; INFRINGE ANY THIRD PARTY RIGHTS.
411;;
412;; 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
413;; FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A
414;; RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR
415;; ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
416;;
417;; 6. This License Agreement will automatically terminate upon a
418;; material breach of its terms and conditions.
419;;
420;; 7. Nothing in this License Agreement shall be deemed to create any
421;; relationship of agency, partnership, or joint venture between PSF
422;; and Licensee. This License Agreement does not grant permission to
423;; use PSF trademarks or trade name in a trademark sense to endorse or
424;; promote products or services of Licensee, or any third party.
425;;
426;; 8. By copying, installing or otherwise using Python, Licensee
427;; agrees to be bound by the terms and conditions of this License
428;; Agreement.")
429
430(defvar wisent-make-parsers--ecmascript-license
431 "\n;; It is derived from the grammar in the ECMAScript Language
432;; Specification published at
433;;
434;; http://www.ecma-international.org/publications/standards/Ecma-262.htm
435;;
436;; and redistributed under the following license:
437;;
438;; Redistribution and use in source and binary forms, with or without
439;; modification, are permitted provided that the following conditions
440;; are met:
441;;
442;; 1. Redistributions of source code must retain the above copyright
443;; notice, this list of conditions and the following disclaimer.
444;;
445;; 2. Redistributions in binary form must reproduce the above
446;; copyright notice, this list of conditions and the following
447;; disclaimer in the documentation and/or other materials provided
448;; with the distribution.
449;;
450;; 3. Neither the name of the authors nor Ecma International may be
451;; used to endorse or promote products derived from this software
452;; without specific prior written permission. THIS SOFTWARE IS
453;; PROVIDED BY THE ECMA INTERNATIONAL \"AS IS\" AND ANY EXPRESS OR
454;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
455;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
456;; ARE DISCLAIMED. IN NO EVENT SHALL ECMA INTERNATIONAL BE LIABLE FOR
457;; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
458;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
459;; OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
460;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
461;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
462;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
463;; USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
464;; DAMAGE.")
465
466(defvar wisent-make-parsers--parser-file-name
467 `(("semantic-grammar-wy.el"
468 "semantic/grammar-wy")
469 ("srecode-template-wy.el"
470 "srecode/srt-wy")
471 ("wisent-javascript-jv-wy.el"
472 "semantic/wisent/js-wy"
473 "Copyright (C) 1998-2011 Ecma International."
474 ,wisent-make-parsers--ecmascript-license)
475 ("wisent-java-tags-wy.el"
476 "semantic/wisent/javat-wy")
477 ("wisent-python-wy.el"
478 "semantic/wisent/python-wy"
479 "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation; All Rights Reserved."
480 ,wisent-make-parsers--python-license)))
481
482(defun wisent-make-parsers ()
483 "Generate Emacs' built-in Wisent-based parser files."
484 (semantic-mode 1)
485 ;; Loop through each .wy file in current directory, and run
486 ;; `semantic-grammar-batch-build-one-package' to build the grammar.
487 (dolist (f (directory-files default-directory nil "\\.wy\\'"))
488 (let ((packagename
489 (condition-case err
490 (with-current-buffer (find-file-noselect f)
491 (semantic-grammar-create-package))
492 (error (message "%s" (error-message-string err)) nil)))
493 output-data)
494 (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name))
495 (let ((require-name (nth 1 output-data))
496 (additional-copyright (nth 2 output-data))
497 (additional-license (nth 3 output-data))
498 copyright-end)
499 ;; Touch up the generated parsers for Emacs integration.
500 (with-temp-buffer
501 (insert-file-contents packagename)
502 ;; Fix copyright header:
503 (goto-char (point-min))
504 (when additional-copyright
505 (re-search-forward "Copyright (C).*$")
506 (insert "\n;; " additional-copyright))
507 (re-search-forward "^;; Author:")
508 (setq copyright-end (match-beginning 0))
509 (re-search-forward "^;;; Code:\n")
510 (delete-region copyright-end (match-end 0))
511 (goto-char copyright-end)
512 (insert wisent-make-parsers--emacs-license)
513 (insert "\n\n;;; Commentary:
514;;
515;; This file was generated from admin/grammars/"
516 f ".")
517 (when additional-license
518 (insert "\n" additional-license))
519 (insert "\n\n;;; Code:\n
520\(require 'semantic/lex)\n")
521 (goto-char (point-min))
522 (delete-region (point-min) (line-end-position))
523 (insert ";;; " require-name
524 ".el --- Generated parser support file")
525 (delete-trailing-whitespace)
526 (re-search-forward ";;\n(require 'semantic/lex)\n")
527 (delete-region (match-beginning 0) (match-end 0))
528 ;; Fix footer:
529 (goto-char (point-max))
530 (re-search-backward "^(provide")
531 (delete-region (match-beginning 0) (point-max))
532 (goto-char (point-max))
533 (insert "(provide '" require-name ")\n\n")
534 (insert ";;; " require-name ".el ends here\n")
535 (write-region nil nil (expand-file-name packagename))))))))
536
537;;; wisent-grammar.el ends here
diff --git a/admin/make-announcement b/admin/make-announcement
deleted file mode 100755
index 5b45d09e89b..00000000000
--- a/admin/make-announcement
+++ /dev/null
@@ -1,87 +0,0 @@
1#! /bin/bash
2
3## Copyright (C) 2002-2012 Free Software Foundation, Inc.
4
5## Author: Francesco Potorti` <pot@gnu.org>
6
7## This file is part of GNU Emacs.
8
9## GNU Emacs is free software: you can redistribute it and/or modify
10## it under the terms of the GNU General Public License as published by
11## the Free Software Foundation, either version 3 of the License, or
12## (at your option) any later version.
13
14## GNU Emacs is distributed in the hope that it will be useful,
15## but WITHOUT ANY WARRANTY; without even the implied warranty of
16## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17## GNU General Public License for more details.
18
19## You should have received a copy of the GNU General Public License
20## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
21
22
23### Code:
24
25if [ $# -ne 2 ]; then
26 echo "usage: $0 <old version number> <new version number>" >&2
27 exit 1
28fi
29
30if [ ! -f INSTALL -o ! -f configure -o ! -d lib-src ]; then
31 echo "this script should be run in the emacs root directory" >&2
32 exit 2
33fi
34
35OLD=$1
36NEW=$2
37outfile=emacs-$NEW.announce
38oldtag=EMACS_PRETEST_$(echo $OLD|tr . _)
39newtag=EMACS_PRETEST_$(echo $NEW|tr . _)
40
41if [ -f $outfile ]; then
42 echo "$outfile exists"
43 echo -n "interrupt to abort, ENTER to overwrite "; read answer
44fi
45
46echo -n "tag name for OLD emacs version $OLD [$oldtag]: "; read answer
47if [ "$answer" ]; then oldtag=$answer; fi
48
49echo -n "tag name for NEW emacs version $NEW [$newtag]: "; read answer
50if [ "$answer" ]; then newtag=$answer; fi
51
52exec > $outfile
53
54cat <<EOF
55
56There is a new pretest available in
57
58 <ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-$NEW.tar.gz>
59
60Please report results from compiling and running the pretest to
61<bug-gnu-emacs@gnu.org>. Your feedback is necessary for us
62to know on which platforms the pretest has been tried.
63
64If you have the tars from the previous pretest, and you have the
65\`xdelta' utility, you can instead download the much smaller
66
67 <ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-$OLD-$NEW.xdelta>
68
69You can use a command like
70
71 $ xdelta patch XDELTA PREVIOUS-TAR CURRENT-TAR
72
73to generate the new tar from the old one, where XDELTA is the xdelta
74file you downloaded, PREVIOUS-TAR is the tar file from the previous
75pretest, and CURRENT-TAR is the name of the tar file you downloaded.
76
77Information about xdelta can be found on the GNU ftp site, in
78/non-gnu/xdelta.README.
79
80Changes since $OLD
81
82EOF
83
84make-changelog-diff $oldtag $newtag
85
86echo " announcement created in $outfile" >&2
87
diff --git a/admin/make-changelog-diff b/admin/make-changelog-diff
deleted file mode 100755
index 88461131a3f..00000000000
--- a/admin/make-changelog-diff
+++ /dev/null
@@ -1,29 +0,0 @@
1#! /bin/bash
2
3## Author: Francesco Potorti` <pot@gnu.org>
4
5if [ $# -ne 2 ]; then
6 echo "usage: $0 TAG1 TAG2" >&2
7 exit 1
8fi
9
10if [ ! -f INSTALL -o ! -f configure -o ! -d lib-src ]; then
11 echo "this script should be run in the emacs root directory" >&2
12 exit 2
13fi
14
15cvs -q diff -b -r $1 -r $2 $(find -name ChangeLog|sort) |
16 sed -n -e 's/^=\+/======/p' -e 's/^> //p' -e 's/^diff.*//p' \
17 -e 's/^RCS file: .cvsroot.emacs.emacs.\(.*\),v/\1/p' |
18 sed -n -e "/^======$/ {
19 N
20 N
21 h
22 d
23 }
24 H
25 s/.*//
26 x
27 s/^\n//
28 p"
29
diff --git a/admin/make-emacs b/admin/make-emacs
index 688f5c196bf..58295c9607a 100755
--- a/admin/make-emacs
+++ b/admin/make-emacs
@@ -2,7 +2,7 @@
2# Build Emacs with various options for profiling, debugging, 2# Build Emacs with various options for profiling, debugging,
3# with and without warnings enabled etc. 3# with and without warnings enabled etc.
4 4
5# Copyright (C) 2001-2012 Free Software Foundation, Inc. 5# Copyright (C) 2001-2013 Free Software Foundation, Inc.
6 6
7# This file is part of GNU Emacs. 7# This file is part of GNU Emacs.
8 8
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index ea9c4a3c2d1..005c6694228 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -1,42 +1,75 @@
1Instructions to create pretest or release tarballs. 1Instructions to create pretest or release tarballs. -*- coding: utf-8 -*-
2-- originally written by Gerd Moellmann, amended by Francesco Potortì 2-- originally written by Gerd Moellmann, amended by Francesco Potortì
3 with the initial help of Eli Zaretskii 3 with the initial help of Eli Zaretskii
4 4
5For each step, check for possible errors. 5
6Steps to take before starting on the first pretest in any release sequence:
7
81. Decide on versions of automake and autoconf, and ensure you will
9 have them available for the duration of the release process.
10
112. Consider increasing the value of the variable
12 `customize-changed-options-previous-release' in cus-edit.el to
13 refer to a newer version of Emacs. (This is probably needed only
14 when preparing the first pretest for a major Emacs release.)
15 Commit cus-edit.el if changed.
16
17
18General steps (for each step, check for possible errors):
6 19
71. `bzr update' (for a bound branch), or `bzr pull'. 201. `bzr update' (for a bound branch), or `bzr pull'.
8 bzr status # check for locally modified files 21 bzr status # check for locally modified files
9 22
102. Bootstrap to make 100% sure all elc files are up-to-date, and to 232. Bootstrap to make 100% sure all elc files are up-to-date, and to
11 make sure that the later tagged version will bootstrap, should it be 24 make sure that the later tagged version will bootstrap, should it be
12 necessary to check it out. 25 necessary to check it out.
13 26
143. Regenerate Emacs' etc/AUTHORS file (M-x load-file RET 273. Regenerate the etc/AUTHORS file:
15 lisp/emacs-lisp/authors.el RET, then M-x authors RET, then save 28 M-: (require 'authors) RET
16 the *Authors* buffer). This may require fixing syntactically 29 M-x authors RET
17 incorrect ChangeLog entries beforehand. 30
31 There is almost guaranteed to be an "*Authors Errors*" buffer with
32 problems caused by certain bad ChangeLog entries. You can ignore
33 the very old ones (eg lisp/erc has a lot). If there are errors
34 related to new entries (especially entries that are new since the
35 last pretest), see if you can fix them. If there was a ChangeLog
36 typo, fix it. If a file was deleted or renamed, consider adding
37 an appropriate entry to authors-ignored-files, authors-valid-file-names,
38 or authors-renamed-files-alist.
39
40 If necessary, repeat M-x authors after making those changes.
41 Save the "*Authors*" buffer as etc/AUTHORS.
42 Check the diff looks reasonable. Maybe add entries to
43 authors-ambiguous-files or authors-aliases, and repeat.
44 Commit any fixes to ChangeLogs or authors.el.
18 45
194. Set the version number (M-x load-file RET admin/admin.el RET, then 464. Set the version number (M-x load-file RET admin/admin.el RET, then
20 M-x set-version RET). For a release, add released change log 47 M-x set-version RET). For a release, add released ChangeLog
21 entries (M-x add-release-logs RET). 48 entries (M-x add-release-logs RET).
22 49
23 For a pretest, start at version .90. After .99, use .990 (so that 50 For a pretest, start at version .90. After .99, use .990 (so that
24 it sorts). 51 it sorts).
25 52
26 If needed, increment the value of the variable 53 The final pretest should be a release candidate. Set the version
27 `customize-changed-options-previous-release' in cus-edit.el to 54 number to that of the actual release. Pick a date about a week
28 refer to a newer release of Emacs. (This is probably needed only 55 from now when you intend to make the release. Use M-x add-release-logs
29 when preparing a major Emacs release, or branching for it.) 56 to add the ChangeLog entries for that date to the tar file (but
57 not yet to the repository). Name the tar file as
58 emacs-XX.Y-rc1.tar. If all goes well in the following week, you
59 can simply rename the file and use it for the actual release.
30 60
315. autoreconf -i -I m4 --force 615. autoreconf -i -I m4 --force
32 make bootstrap 62 make bootstrap
33 63
346. Commit etc/AUTHORS, all the files changed by M-x set-version, and 646. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
35 lisp/cus-edit.el (if modified). 65
36 Copy lisp/loaddefs.el to lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. 66 Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
67 by M-x set-version.
37 For a release, also commit the ChangeLog files in all directories. 68 For a release, also commit the ChangeLog files in all directories.
38 69
397. make-dist --snapshot. Check the contents of the new tar with 707. ./make-dist --snapshot --no-compress
71
72 Check the contents of the new tar with
40 admin/diff-tar-files against an older tar file. Some old pretest 73 admin/diff-tar-files against an older tar file. Some old pretest
41 tarballs may be found at <ftp://alpha.gnu.org/gnu/emacs/pretest>; 74 tarballs may be found at <ftp://alpha.gnu.org/gnu/emacs/pretest>;
42 old release tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>. 75 old release tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
@@ -46,36 +79,54 @@ For each step, check for possible errors.
46 something like `find . | sort' in a clean bzr tree, and compare the 79 something like `find . | sort' in a clean bzr tree, and compare the
47 results against the new tar contents. 80 results against the new tar contents.
48 81
498. xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta 828. tar -xf emacs-NEW.tar; cd emacs-NEW
50 83 ./configure --prefix=/tmp/emacs && make && make install
519. tar -zxf emacs-NEW.tar.gz; cd emacs-NEW
52 ./configure && make && make -n install
53 Use `script' or M-x compile to save the compilation log in 84 Use `script' or M-x compile to save the compilation log in
54 compile-NEW.log and compare it against an old one. The easiest way 85 compile-NEW.log and compare it against an old one. The easiest way
55 to do that is to visit the old log in Emacs, change the version 86 to do that is to visit the old log in Emacs, change the version
56 number of the old Emacs to __, do the same with the new log and do 87 number of the old Emacs to __, do the same with the new log and do
57 M-x ediff. Especially check that Info files aren't built. 88 M-x ediff. Especially check that Info files aren't built, and that
89 no autotools (autoconf etc) run.
58 90
5910. cd EMACS_ROOT_DIR; bzr tag TAG 919. cd EMACS_ROOT_DIR && bzr tag TAG
60 TAG is EMACS_PRETEST_XX_YY_ZZZ for a pretest, EMACS_XX_YY for a 92 TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
61 release.
62 93
63 Shortly before the release, cut the version branch also, and open 94 Shortly before the release, cut the version branch also, and open
64 a Savannah support request asking for commits to the new branch to 95 a Savannah support request asking for commits to the new branch to
65 be sent to the emacs-diffs mailing list (by default, the list 96 be sent to the emacs-diffs mailing list (by default, the list
66 normally only gets commits to the trunk). 97 normally only gets commits to the trunk).
67 98
6811. Now you should upload the files to the GNU ftp server. In order to 9910. Decide what compression schemes to offer.
100 For a release, at least gz and xz:
101 gzip --best -c emacs-NEW.tar > emacs-NEW.tar.gz
102 xz -c emacs-NEW.tar > emacs-NEW.tar.xz
103
104 Now you should upload the files to the GNU ftp server. In order to
69 do that, you must be registered as an Emacs maintainer and have your 105 do that, you must be registered as an Emacs maintainer and have your
70 GPG key acknowledged by the ftp people. Mail <ftp-upload@gnu.org> 106 GPG key acknowledged by the ftp people. For instructions, see
71 for instructions. 107 http://www.gnu.org/prep/maintain/html_node/Automated-Upload-Registration.html
108 The simplest method is to use the gnulib <http://www.gnu.org/s/gnulib/>
109 script "build-aux/gnupload" to upload each FILE, like this:
110
111 For a pretest:
112 gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
113 FILE.gz FILE.xz ...
114
115 For a release:
116 gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \
117 FILE.gz FILE.xz ...
118
119 You only need the --user part if you have multiple GPG keys and do
120 not want to use the default.
121 Obviously, if you do not have a fast uplink, be prepared for the
122 upload to take a while.
72 123
73 You can use the gnupload script to upload each FILE, like this:
74 gnupload --to alpha.gnu.org:emacs/pretest FILE (for a pretest)
75 gnupload --to ftp.gnu.org:emacs FILE (for a release)
76 124
77 Instead of using gnupload, for each FILE, create a detached GPG 125 If you prefer to do it yourself rather than use gnupload:
78 binary signature and a clearsigned directive file like this: 126
127 For each FILE, create a detached GPG binary signature and a
128 clearsigned directive file like this:
129
79 gpg -b FILE 130 gpg -b FILE
80 echo directory: emacs/pretest > FILE.directive (for a pretest) 131 echo directory: emacs/pretest > FILE.directive (for a pretest)
81 echo directory: emacs > FILE.directive (for a release) 132 echo directory: emacs > FILE.directive (for a release)
@@ -86,16 +137,17 @@ For each step, check for possible errors.
86 For a pretest, place the files in /incoming/alpha instead, so that 137 For a pretest, place the files in /incoming/alpha instead, so that
87 they appear on ftp://alpha.gnu.org/. 138 they appear on ftp://alpha.gnu.org/.
88 139
89 For a release, upload a bz2 tarfile as well; this can save a lot 14011. After five minutes, verify that the files are visible at
90 of bandwidth. 141 ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or
91
9212. After five minutes, verify that the files are visible at
93 ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, at
94 ftp://ftp.gnu.org/gnu/emacs/ for a release. 142 ftp://ftp.gnu.org/gnu/emacs/ for a release.
95 143
9613. For a pretest, announce it on emacs-devel and BCC the pretesters. 144 Download them and check the signatures. Check they build.
97 For a release, announce it on info-gnu@gnu.org, 145
98 info-gnu-emacs@gnu.org, and emacs-devel. 14612. For a pretest, announce it on emacs-devel and info-gnu-emacs@gnu.org.
147 For a release, also announce it on info-gnu@gnu.org. (Probably
148 bcc the info- addresses to make it less likely that people will
149 followup on those lists.)
99 150
10014. For a release, update the Emacs homepage in the web repository. 15113. For a release, update the Emacs homepage in the web repository.
101 Also add the new NEWS file as NEWS.xx.y. 152 Also add the new NEWS file as NEWS.xx.y.
153 Maybe regenerate the html manuals, update the FAQ, etc, etc.
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 775d43e68d3..c8bfe0dacc3 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -4,7 +4,7 @@
4# 4#
5# admin/merge-gnulib 5# admin/merge-gnulib
6 6
7# Copyright 2012 Free Software Foundation, Inc. 7# Copyright 2012-2013 Free Software Foundation, Inc.
8 8
9# This file is part of GNU Emacs. 9# This file is part of GNU Emacs.
10 10
@@ -27,21 +27,26 @@ GNULIB_URL=git://git.savannah.gnu.org/gnulib.git
27 27
28GNULIB_MODULES=' 28GNULIB_MODULES='
29 alloca-opt c-ctype c-strcase 29 alloca-opt c-ctype c-strcase
30 careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 30 careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
31 dtoastr dtotimespec dup2 environ execinfo 31 dtoastr dtotimespec dup2 environ execinfo faccessat
32 filemode getloadavg getopt-gnu gettime gettimeofday 32 fcntl-h fdatasync fdopendir filemode fstatat fsync
33 getloadavg getopt-gnu gettime gettimeofday
33 ignore-value intprops largefile lstat 34 ignore-value intprops largefile lstat
34 manywarnings mktime pselect pthread_sigmask readlink 35 manywarnings memrchr mktime
35 socklen stat-time stdalign stdarg stdbool stdio 36 pselect pthread_sigmask putenv qacl readlink readlinkat
37 sig2str socklen stat-time stdalign stdarg stdbool stdio
36 strftime strtoimax strtoumax symlink sys_stat 38 strftime strtoimax strtoumax symlink sys_stat
37 sys_time time timespec-add timespec-sub utimens 39 sys_time time timer-time timespec-add timespec-sub unsetenv utimens
38 warnings 40 warnings
39' 41'
40 42
41GNULIB_TOOL_FLAGS=' 43GNULIB_TOOL_FLAGS='
42 --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat 44 --avoid=dup
43 --avoid=msvc-inval --avoid=msvc-nothrow 45 --avoid=fchdir --avoid=fcntl --avoid=fstat
44 --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types 46 --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow
47 --avoid=open --avoid=openat-die --avoid=opendir
48 --avoid=raise
49 --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types
45 --avoid=threadlib 50 --avoid=threadlib
46 --conditional-dependencies --import --no-changelog --no-vc-files 51 --conditional-dependencies --import --no-changelog --no-vc-files
47 --makefile-name=gnulib.mk 52 --makefile-name=gnulib.mk
@@ -85,7 +90,7 @@ test -x "$gnulib_srcdir"/gnulib-tool || {
85} 90}
86 91
87"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS $GNULIB_MODULES && 92"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS $GNULIB_MODULES &&
88rm -- "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 && 93rm -- "$src"m4/fcntl-o.m4 "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 &&
89cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc && 94cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc &&
90cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux && 95cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux &&
91autoreconf -i -I m4 -- ${src:+"$src"} 96autoreconf -i -I m4 -- ${src:+"$src"}
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker
index 7d5e85a3ae0..7947b17973b 100644
--- a/admin/notes/bugtracker
+++ b/admin/notes/bugtracker
@@ -8,7 +8,8 @@ This is 95% of all you will ever need to know.
8 8
9** How do I report a bug? 9** How do I report a bug?
10Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org. 10Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
11If you want to Cc someone, use an "X-Debbugs-CC" header instead. 11If you want to Cc someone, use an "X-Debbugs-CC" header (or
12pseudo-header, see below) instead.
12 13
13** How do I comment on a bug? 14** How do I comment on a bug?
14Reply to a mail on the bug-gnu-emacs list in the normal way. 15Reply to a mail on the bug-gnu-emacs list in the normal way.
@@ -52,8 +53,8 @@ i) Your report will be assigned a number and generate an automatic reply.
52ii) Optionally, you can set some database parameters when you first 53ii) Optionally, you can set some database parameters when you first
53report a bug (see "Setting bug parameters" below). 54report a bug (see "Setting bug parameters" below).
54 55
55iii) If you want to CC: someone, use X-Debbugs-CC: (this is important; 56iii) If you want to CC: someone, use X-Debbugs-CC: (note this only
56see below). 57applies to _new_ reports, not followups).
57 58
58Once your report is filed and assigned a number, it is sent out to the 59Once your report is filed and assigned a number, it is sent out to the
59bug mailing list. In some cases, it may be appropriate to just file a 60bug mailing list. In some cases, it may be appropriate to just file a
@@ -92,18 +93,21 @@ but create duplicates and errors. (It is possible, but unlikely, that
92you might want to have a dialog with the owner address, outside of 93you might want to have a dialog with the owner address, outside of
93normal bug reporting.) 94normal bug reporting.)
94 95
95** When reporting a bug, to send a Cc to another address 96** When reporting a new bug, to send a Cc to another address
96(e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header. 97(e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
97Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a 98Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a
98mail with the bug report number in. If you do not do this, each reply 99mail with the bug report number in. If you do not do this, each reply
99in the subsequent discussion will end up creating a new bug. 100in the subsequent discussion might end up creating a new bug.
100This is annoying. 101This is annoying. (So annoying that a form of message-id tracking has
102been implemented to hopefully stop this happening, but it is still
103better to use X-Debbugs-CC.)
101 104
102(So annoying that a form of message-id tracking has been implemented 105Like any X-Debbugs- header, this one can also be specified in the
103to hopefully stop this happening, but it is still better to use X-Debbugs-CC.) 106pseudo-header (see below), if your mail client does not let you add
107"X-" headers.
104 108
105If a new report contains X-Debbugs-CC in the input, this is 109If a new report contains X-Debbugs-CC in the input, this is
106converted to a real Cc header in the output. (See Bug#1720). 110converted to a real Cc header in the output. (See Bug#1780,5384)
107It is also merged into the Resent-CC header (see below). 111It is also merged into the Resent-CC header (see below).
108 112
109** How does Debbugs send out mails? 113** How does Debbugs send out mails?
@@ -218,8 +222,8 @@ Package: emacs
218Version: 23.0.60 222Version: 23.0.60
219Severity: minor 223Severity: minor
220 224
221This can also include tags. Some things (e.g. submitter) don't seem to 225This can also include tags, or any X-Debbugs- setting.
222work here. 226Some things (e.g. submitter) don't seem to work here.
223 227
224Otherwise, send mail to the control server, control@debbugs.gnu.org. 228Otherwise, send mail to the control server, control@debbugs.gnu.org.
225At the start of the message body, supply the desired commands, one per 229At the start of the message body, supply the desired commands, one per
@@ -270,32 +274,35 @@ to a bug. There are two differences between normal tags and user tags:
2701) Anyone can define any valid usertag they like. In contrast, only a 2741) Anyone can define any valid usertag they like. In contrast, only a
271limited, predefined set of normal tags are available (see above). 275limited, predefined set of normal tags are available (see above).
272 276
2732) A usertag is associated with a specific email address. 2772) A usertag is associated with a specific user. This is normally
278an email address (with an "@" sign and least 4 characters after the "@"),
279but on debbugs.gnu.org, the definition is less strict - anything with
2805 or more alphanumeric characters will work. For personal tags,
281using an email address is still recommended. Please only use the
282"emacs" user, or other short users, for "official" tags.
274 283
275You set usertags in the same way as tags, by talking to the control 284You set usertags in the same way as tags, by talking to the control server.
276server. One difference is that you can also specify the associated 285One difference is that you can also specify the associated user.
277email address. If you don't explicitly specify an address, then it 286If you don't explicitly specify a user, then it will use the email
278will use the one from which you send the control message. The address 287address from which you send the control message.
279must have the form of an email address (with an "@" sign and least 4
280characters after the "@").
281 288
282*** Setting usertags 289*** Setting usertags
283 290
284a) In a control message: 291a) In a control message:
285 292
286user bug-gnu-emacs@gnu.org 293user emacs # or email@example.com
287usertags 1234 any-tag-you-like 294usertags 1234 any-tag-you-like
288 295
289This will add a usertag "any-tag-you-like" to bug 1234. The tag will 296This will add a usertag "any-tag-you-like" to bug 1234. The tag will
290be associated with the address "bug-gnu-emacs@gnu.org". If you omit 297be associated with the user "emacs". If you omit the first line,
291the first line, the tag will be associated with your email address. 298the tag will be associated with your email address.
292 299
293The syntax of the usertags command is the same as that of tags (eg wrt 300The syntax of the usertags command is the same as that of tags (eg wrt
294the optional [=+-] argument). 301the optional [=+-] argument).
295 302
296b) In an initial submission, in the pseudo-header: 303b) In an initial submission, in the pseudo-header:
297 304
298User: bug-gnu-emacs@gnu.org 305User: emacs
299Usertags: a-new-tag 306Usertags: a-new-tag
300 307
301Again, the "User" is optional. 308Again, the "User" is optional.
@@ -312,7 +319,7 @@ http://debbugs.gnu.org/cgi/pkgindex.cgi?indexon=users
312 319
313**** To find all bugs usertagged by a given email address: 320**** To find all bugs usertagged by a given email address:
314 321
315http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org 322http://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs
316 323
317(Supposedly, the "users" field can be a comma-separated list of more 324(Supposedly, the "users" field can be a comma-separated list of more
318than one email address, but it does not seem to work for me.) 325than one email address, but it does not seem to work for me.)
@@ -322,7 +329,7 @@ than one email address, but it does not seem to work for me.)
322This works just like a normal tags search, but with the addition of a 329This works just like a normal tags search, but with the addition of a
323"users" field. Eg: 330"users" field. Eg:
324 331
325http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org;tag=calendar 332http://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs;tag=calendar
326 333
327*** To merge bugs: 334*** To merge bugs:
328Eg when bad replies create a bunch of new bugs for the same report. 335Eg when bad replies create a bunch of new bugs for the same report.
@@ -610,7 +617,7 @@ An /etc/aliases entry redirects it to the real emacs-bug-tracker address.
610All discarded messages are stored in /var/lib/mailman/spam. 617All discarded messages are stored in /var/lib/mailman/spam.
611If a non-spam message accidentally gets discarded, just do: 618If a non-spam message accidentally gets discarded, just do:
612 619
613cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive 620/usr/lib/debbugs/receive < /var/lib/mailman/spam/not-really-spam.msg
614chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/* 621chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/*
615... check it works ... 622... check it works ...
616mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/ 623mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
@@ -618,6 +625,18 @@ mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
618Also check that the sender was not added to the auto-discard/reject list 625Also check that the sender was not added to the auto-discard/reject list
619in the debbugs-submit Mailman interface. 626in the debbugs-submit Mailman interface.
620 627
628If you don't have the actual mail, just the mailman moderation mail
629version of it, you need to extract the original mail, and add the
630following headers:
631
6321) The leading envelope From line.
6332) Message-ID (get it from /var/log/mailman/vette).
6343) X-Debbugs-Envelope-To: xxx
635For a new report, xxx = submit; for a control message, xxx = control;
636for a reply to bug#123, xxx = 123
637
638Then pipe it to receive as above.
639
621** Administrivia 640** Administrivia
622 641
623The debbugs-submit list should have the administrivia option off, 642The debbugs-submit list should have the administrivia option off,
diff --git a/admin/notes/bzr b/admin/notes/bzr
index 50eaf3710ee..8f7d0d94fa8 100644
--- a/admin/notes/bzr
+++ b/admin/notes/bzr
@@ -182,6 +182,71 @@ where revision N+1 is the one where file was removed.
182You could also try `bzr add --file-ids-from', if you have a copy of 182You could also try `bzr add --file-ids-from', if you have a copy of
183another branch where file still exists. 183another branch where file still exists.
184 184
185* Undoing a commit (uncommitting)
186
187It is possible to undo/remove a bzr commit (ie, to uncommit).
188Only do this if you really, really, need to. For example, if you
189somehow made a commit that triggers a bug in bzr itself.
190Don't do it because you made a typo in a commit or the log.
191
192If you do need to do this, do it as soon as possible, because the
193longer you leave it, the more work is involved.
194
1950. First, tell emacs-devel that you are going to do this, and suggest
196people not commit anything to the affected branch for the duration.
197
198In the following, replace USER with your Savannah username, and
199BRANCH with the name of the branch.
200Let's assume that revno 100 is the bad commit, and that there have
201been two more commits after that (because nothing is ever easy).
202
2031. Ensure your copy of the branch is up-to-date (for a bound
204branch, bzr up; for an unbound branch, bzr pull) and has no local
205changes (bzr st).
206
2072. Make a record of the commits you are going to undo:
208bzr diff -c 102 > /tmp/102.diff
209etc
210
211Also record the commit message, author, and any --fixes information.
212
2133. Most Emacs branches are set up to prevent just this kind of thing.
214So we need to disable that protection:
215
216bzr config append_revisions_only=False \
217 -d bzr+ssh://USER@bzr.savannah.gnu.org/emacs/BRANCH/
218
2194. Undo the commits:
220bzr uncommit -r -4
221
222This will show the commits it is going to undo, and prompt you to confirm.
223
2245. If using an unbound branch:
225bzr push --overwrite
226
2276. Now, replay the commits you just undid (obviously, fix whatever it
228was in the bad commit that caused the problem):
229
230patch -p0 < /tmp/100.diff
231bzr commit --author ... --fixes ... -F /tmp/100.log
232etc
233
2347. If using an unbound branch:
235bzr push
236
2378. Finally, re-enable the branch protection:
238bzr config append_revisions_only=True \
239 -d bzr+ssh://USER@bzr.savannah.gnu.org/emacs/BRANCH/
240
2419. Tell emacs-devel that it is ok to use the branch again.
242Anyone with local changes should back them up before doing anything.
243
244For a bound branch, bzr up will convert any of the undone commits to a
245pending merge. Just bzr revert these away.
246
247For an unbound branch, bzr pull will complain about diverged branches
248and refuse to do anything. Use bzr pull --overwrite.
249
185* Loggerhead 250* Loggerhead
186 251
187Loggerhead is the bzr tool for viewing a repository over http (similar 252Loggerhead is the bzr tool for viewing a repository over http (similar
@@ -202,3 +267,97 @@ For example, on RHEL6 I needed:
202 yum --enablerepo=epel install python-simpletal 267 yum --enablerepo=epel install python-simpletal
203 268
204Then point your web-browser to http://127.0.0.1:8080/ . 269Then point your web-browser to http://127.0.0.1:8080/ .
270
271* Bisecting
272
273This is a semi-automated way to find the revision that introduced a bug.
274
275First, get the bzr bisect plugin if you do not have it already:
276
277 cd ~/.bazaar/plugins
278 bzr branch lp:bzr-bisect bisect
279
280`bzr help bisect' should work now.
281
282It's probably simplest to make a new copy of the branch to work in
283from this point onwards.
284
285Identify the last known "good" revision where the relevant issue is
286NOT present (e.g. maybe Emacs 24.1). Let's say this is revision 1000.
287
288 bzr bisect start
289 bzr bisect no -r 1000
290
291At this point, bzr will switch to the mid-point of revision 1000 and
292the current revision. If you know that the issue was definitely
293present in some specific revision (say 2000), you can use:
294
295 bzr bisect yes -r 2000
296
297Now bzr switches to revision 1500.
298
299Now test whether the issue is present. You might need to rebuild
300Emacs to do this, or if you know the problem is in a specific Lisp
301file, you might be able to get away with just loading that one file in
302current Emacs.
303
304If the issue is present, use
305
306 bzr bisect yes
307
308If it is not, use
309
310 bzr bisect no
311
312Repeat until you zero-in on the specific revision.
313
314When finished, use
315
316 bzr bisect reset
317
318or simply delete the entire branch if you created it just for this.
319
320* Commit emails
321
322** Old method: bzr-hookless-email
323https://launchpad.net/bzr-hookless-email
324
325Runs hourly via cron. Must ask Savannah admins to enable/disable it
326for each branch. Stores the last revision that it mailed as
327last_revision_mailed in branch.conf on the server. Breaks with bzr 2.6:
328
329http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00000.html
330
331Fix from https://bugs.launchpad.net/bzr-hookless-email/+bug/988195
332only partially works. Breaks again on every merge commit:
333
334https://lists.ubuntu.com/archives/bazaar/2013q2/075520.html
335http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00024.html
336
337You can force it to skip the merge commit by changing the value for
338last_revision_mailed, eg:
339
340bzr config last_revision_mailed=xfq.free@gmail.com-20130603233720-u1aumaxvf3o0rlai -d bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/trunk/
341
342** New method: bzr-email plugin
343https://launchpad.net/bzr-email
344http://lists.gnu.org/archive/html/savannah-hackers-public/2013-06/msg00007.html
345
346Runs on commit. Projects can enable it themselves by using `bzr
347config' to set post_commit_to option for a branch. See `bzr help email'
348(if you have the plugin installed) for other options.
349
350Note: if you have the bzr-email plugin installed locally, then when
351you commit to the Emacs repository it will also try to send a commit
352email from your local machine. If your machine is not configured to
353send external mail, this will just fail. In any case, you may prefer
354to either remove the plugin from your machine, or disable it for Emacs
355branches. You can do this either by editing branch.conf in your Emacs
356branches, to override the server setting (untested; not sure this
357works), or by adding an entry to ~/.bazaar/locations.conf:
358
359 [bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/*/]
360 post_commit_to = ""
361
362You have to use locations.conf rather than bazaar.conf because the
363latter has a lower priority than branch.conf.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index 72b7d7e2d23..3a404b69678 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -1,4 +1,4 @@
1Copyright (C) 2007-2012 Free Software Foundation, Inc. 1Copyright (C) 2007-2013 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 4
@@ -380,7 +380,7 @@ Makefile.in does now.
380src/gmalloc.c 380src/gmalloc.c
381 - contains numerous copyrights from the GNU C library. Leave them alone. 381 - contains numerous copyrights from the GNU C library. Leave them alone.
382 382
383src/ndir.h 383nt/inc/dirent.h
384 - see comments below. This file is OK to be released with Emacs 384 - see comments below. This file is OK to be released with Emacs
385 22, but we may want to revisit it afterwards. 385 22, but we may want to revisit it afterwards.
386 386
@@ -429,7 +429,7 @@ admin/check-doc-strings
429 File says it's in the public domain, but that might not make it so. 429 File says it's in the public domain, but that might not make it so.
430 430
431etc/e/eterm-color.ti 431etc/e/eterm-color.ti
432src/ndir.h 432nt/inc/dirent.h
433 On legal advice from Matt Norwood, the following comment was added 433 On legal advice from Matt Norwood, the following comment was added
434 to these files in Feb/Mar 2007: 434 to these files in Feb/Mar 2007:
435 435
diff --git a/admin/notes/font-backend b/admin/notes/font-backend
index ec2dc11345b..cdf2001580d 100644
--- a/admin/notes/font-backend
+++ b/admin/notes/font-backend
@@ -1,4 +1,4 @@
1Copyright (C) 2002-2012 Free Software Foundation, Inc. 1Copyright (C) 2002-2013 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 4
diff --git a/admin/notes/lel-TODO b/admin/notes/lel-TODO
index 139aa09e919..2c6d86a4ffd 100644
--- a/admin/notes/lel-TODO
+++ b/admin/notes/lel-TODO
@@ -1,6 +1,6 @@
1Some lisp/emacs-lisp/ Features and Where They Are Documented 1Some lisp/emacs-lisp/ Features and Where They Are Documented
2 2
3Copyright (C) 2007-2012 Free Software Foundation, Inc. 3Copyright (C) 2007-2013 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6 6
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty
index 5408b9a3d00..c4edd3abc93 100644
--- a/admin/notes/multi-tty
+++ b/admin/notes/multi-tty
@@ -1,6 +1,6 @@
1-*- coding: utf-8; mode: text; -*- 1-*- coding: utf-8; mode: text; -*-
2 2
3Copyright (C) 2007-2012 Free Software Foundation, Inc. 3Copyright (C) 2007-2013 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6From README.multi-tty in the multi-tty branch. 6From README.multi-tty in the multi-tty branch.
diff --git a/admin/notes/unicode b/admin/notes/unicode
index dda6ec4cc93..6db5bb7d05c 100644
--- a/admin/notes/unicode
+++ b/admin/notes/unicode
@@ -1,6 +1,6 @@
1 -*-mode: text; coding: latin-1;-*- 1 -*-mode: text; coding: utf-8;-*-
2 2
3Copyright (C) 2002-2012 Free Software Foundation, Inc. 3Copyright (C) 2002-2013 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6Problems, fixmes and other unicode-related issues 6Problems, fixmes and other unicode-related issues
@@ -12,9 +12,9 @@ regard to completeness.
12 12
13 * SINGLE_BYTE_CHAR_P returns true for Latin-1 characters, which has 13 * SINGLE_BYTE_CHAR_P returns true for Latin-1 characters, which has
14 undesirable effects. E.g.: 14 undesirable effects. E.g.:
15 (multibyte-string-p (let ((s "x")) (aset s 0 ?£) s)) => nil 15 (multibyte-string-p (let ((s "x")) (aset s 0 ?£) s)) => nil
16 (multibyte-string-p (concat [?£])) => nil 16 (multibyte-string-p (concat [?£])) => nil
17 (text-char-description ?£) => "M-#" 17 (text-char-description ?£) => "M-#"
18 18
19 These examples are all fixed by the change of 2002-10-14, but 19 These examples are all fixed by the change of 2002-10-14, but
20 there still exist questionable SINGLE_BYTE_CHAR_P in the 20 there still exist questionable SINGLE_BYTE_CHAR_P in the
@@ -77,7 +77,7 @@ regard to completeness.
77 spelling and calendar, but that's not a Unicode issue.) 77 spelling and calendar, but that's not a Unicode issue.)
78 78
79 * Handle Unicode combining characters usefully, e.g. diacritics, and 79 * Handle Unicode combining characters usefully, e.g. diacritics, and
80 handle more scripts specifically (à la Devanagari). There are 80 handle more scripts specifically (à la Devanagari). There are
81 issues with canonicalization. 81 issues with canonicalization.
82 82
83 * We need tabular input methods, e.g. for maths symbols. (Not 83 * We need tabular input methods, e.g. for maths symbols. (Not
@@ -98,6 +98,134 @@ regard to completeness.
98 * Old auto-save files, and similar files, such as Gnus drafts, 98 * Old auto-save files, and similar files, such as Gnus drafts,
99 containing non-ASCII characters probably won't be re-read correctly. 99 containing non-ASCII characters probably won't be re-read correctly.
100 100
101
102Source file encoding
103--------------------
104
105Most Emacs source files are encoded in UTF-8 (or in ASCII, which is a
106subset), but there are a few exceptions, listed below. Perhaps
107someday many of these files will be converted to UTF-8, for
108convenience when using tools like 'grep -r', but this might need
109nontrivial changes to the build process.
110
111 * chinese-big5
112
113 These are verbatim copies of files taken from external sources.
114 They haven't been converted to UTF-8.
115
116 leim/CXTERM-DIC/4Corner.tit
117 leim/CXTERM-DIC/ARRAY30.tit
118 leim/CXTERM-DIC/ECDICT.tit
119 leim/CXTERM-DIC/ETZY.tit
120 leim/CXTERM-DIC/PY-b5.tit
121 leim/CXTERM-DIC/Punct-b5.tit
122 leim/CXTERM-DIC/QJ-b5.tit
123 leim/CXTERM-DIC/ZOZY.tit
124 leim/MISC-DIC/CTLau-b5.html
125 leim/MISC-DIC/cangjie-table.b5
126
127 * chinese-iso-8bit
128
129 These are verbatim copies of files taken from external sources.
130 They haven't been converted to UTF-8.
131
132 leim/CXTERM-DIC/CCDOSPY.tit
133 leim/CXTERM-DIC/Punct.tit
134 leim/CXTERM-DIC/QJ.tit
135 leim/CXTERM-DIC/SW.tit
136 leim/CXTERM-DIC/TONEPY.tit
137 leim/MISC-DIC/pinyin.map
138 leim/MISC-DIC/CTLau.html
139 leim/MISC-DIC/ziranma.cin
140
141 * cp850
142
143 This file contains non-ASCII characters in unibyte strings. When
144 editing a keyboard layout it's more convenient to see 'é' than
145 '\202', and the MS-DOS compiler requires the single byte if a
146 backslash escape is not being used.
147
148 src/msdos.c
149
150 * iso-2022-cn-ext
151
152 This file is externally generated from leim/MISC-DIC/cangjie-table.b5
153 by Big5->CNS converter. It hasn't been converted to UTF-8.
154
155 leim/MISC-DIC/cangjie-table.cns
156
157 * iso-latin-2
158
159 These files are processed by csplain, a program that requires
160 Latin-2 input. In 2012 the csplain maintainers started
161 recommending UTF-8, but these files haven't been converted yet.
162
163 etc/refcards/cs-dired-ref.tex
164 etc/refcards/cs-refcard.tex
165 etc/refcards/cs-survival.tex
166 etc/refcards/sk-dired-ref.tex
167 etc/refcards/sk-refcard.tex
168 etc/refcards/sk-survival.tex
169
170 * japanese-iso-8bit
171
172 SKK-JISYO.L is a verbatim copy of a file taken from an external source.
173 It hasn't been converted to UTF-8.
174
175 leim/SKK-DIC/SKK-JISYO.L
176
177 * japanese-shift-jis
178
179 This is a verbatim copy of a file taken from an external source.
180 It hasn't been converted to UTF-8.
181
182 admin/charsets/mapfiles/cns2ucsdkw.txt
183
184 * no-conversion
185
186 This file purposely contains arbitrary bytes interspersed within text,
187 to test whether the Emacs distribution is corrupted.
188
189 lib-src/testfile
190
191 * iso-2022-7bit
192
193 This file switches between CJK charsets, which is not encoded in UTF-8.
194
195 etc/HELLO
196
197 Each of these files contains just one CJK charset, but Emacs
198 currently has no easy way to specify set-charset-priority on a
199 per-file basis, so converting any of these files to UTF-8 might
200 change the file's appearance when viewed by an Emacs that is
201 operating in some other language environment.
202
203 etc/tutorials/TUTORIAL.ja
204 leim/quail/cyril-jis.el
205 leim/quail/hanja-jis.el
206 leim/quail/japanese.el
207 leim/quail/py-punct.el
208 leim/quail/pypunct-b5.el
209 lisp/international/ja-dic-cnv.el
210 lisp/international/ja-dic-utl.el
211 lisp/international/kinsoku.el
212 lisp/international/kkc.el
213 lisp/international/titdic-cnv.el
214 lisp/language/japan-util.el
215 lisp/language/japanese.el
216 lisp/term/x-win.el
217
218 * utf-8-emacs
219
220 These files contain characters that cannot be encoded in UTF-8.
221
222 leim/quail/tibetan.el
223 leim/quail/ethiopic.el
224 lisp/international/titdic-cnv.el
225 lisp/language/tibetan.el
226 lisp/language/tibet-util.el
227 lisp/language/ind-util.el
228
101 229
102This file is part of GNU Emacs. 230This file is part of GNU Emacs.
103 231
diff --git a/admin/nt/README-UNDUMP.W32 b/admin/nt/README-UNDUMP.W32
index d3dd88a99ec..8138d0ba0f1 100644
--- a/admin/nt/README-UNDUMP.W32
+++ b/admin/nt/README-UNDUMP.W32
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2012 Free Software Foundation, Inc. 1Copyright (C) 2001-2013 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 Emacs for Windows 4 Emacs for Windows
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index 1b0c9390889..5983a0f9617 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -1,4 +1,4 @@
1Copyright (C) 2001-2012 Free Software Foundation, Inc. 1Copyright (C) 2001-2013 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4 Precompiled Distributions of 4 Precompiled Distributions of
@@ -288,4 +288,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
288GNU General Public License for more details. 288GNU General Public License for more details.
289 289
290You should have received a copy of the GNU General Public License 290You should have received a copy of the GNU General Public License
291along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 291along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs
index 4abef102dc4..98bd61f839d 100755
--- a/admin/quick-install-emacs
+++ b/admin/quick-install-emacs
@@ -1,7 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2### quick-install-emacs --- do a halfway-decent job of installing emacs quickly 2### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
3 3
4## Copyright (C) 2001-2012 Free Software Foundation, Inc. 4## Copyright (C) 2001-2013 Free Software Foundation, Inc.
5 5
6## Author: Miles Bader <miles@gnu.org> 6## Author: Miles Bader <miles@gnu.org>
7 7
@@ -105,8 +105,8 @@ and build directories reside.
105 105
106Optionally, $me can also remove old versions of 106Optionally, $me can also remove old versions of
107automatically generated files that are version-specific (such as the 107automatically generated files that are version-specific (such as the
108versioned emacs executables in the \`src' directory, and the DOC-* files 108versioned emacs executables in the \`src' directory).
109in the \`etc' directory). The latter action is called \`pruning,' and 109The latter action is called \`pruning,' and
110can be enabled using the \`-p' or \`--prune' options. 110can be enabled using the \`-p' or \`--prune' options.
111EOF 111EOF
112 exit 0 112 exit 0
@@ -209,10 +209,6 @@ maybe_mkdir "$DST_INFO"
209 209
210PRUNED="" 210PRUNED=""
211if test x"$PRUNE" != xno; then 211if test x"$PRUNE" != xno; then
212 for D in `ls -1t $BUILD/etc/DOC-* | sed 1d`; do
213 echo $REMOVE_CMD $D
214 PRUNED="$PRUNED $D"
215 done
216 for D in `ls -1t $BUILD/src/emacs-$VERSION.* | sed 1d`; do 212 for D in `ls -1t $BUILD/src/emacs-$VERSION.* | sed 1d`; do
217 echo $REMOVE_CMD $D 213 echo $REMOVE_CMD $D
218 PRUNED="$PRUNED $D" 214 PRUNED="$PRUNED $D"
diff --git a/admin/unidata/BidiMirroring.txt b/admin/unidata/BidiMirroring.txt
index 2e719bc1e05..ec41b769375 100644
--- a/admin/unidata/BidiMirroring.txt
+++ b/admin/unidata/BidiMirroring.txt
@@ -1,19 +1,19 @@
1# BidiMirroring-6.1.0.txt 1# BidiMirroring-6.2.0.txt
2# Date: 2011-12-20, 19:31:00 GMT [KW, LI] 2# Date: 2012-05-15, 24:19:00 GMT [KW, LI]
3# 3#
4# Bidi_Mirroring_Glyph Property 4# Bidi_Mirroring_Glyph Property
5# 5#
6# This file is an informative contributory data file in the 6# This file is an informative contributory data file in the
7# Unicode Character Database. 7# Unicode Character Database.
8# 8#
9# Copyright (c) 1991-2011 Unicode, Inc. 9# Copyright (c) 1991-2012 Unicode, Inc.
10# For terms of use, see http://www.unicode.org/terms_of_use.html 10# For terms of use, see http://www.unicode.org/terms_of_use.html
11# 11#
12# This data file lists characters that have the Bidi_Mirrored=Yes property 12# This data file lists characters that have the Bidi_Mirrored=Yes property
13# value, for which there is another Unicode character that typically has a glyph 13# value, for which there is another Unicode character that typically has a glyph
14# that is the mirror image of the original character's glyph. 14# that is the mirror image of the original character's glyph.
15# 15#
16# The repertoire covered by the file is Unicode 6.1.0. 16# The repertoire covered by the file is Unicode 6.2.0.
17# 17#
18# The file contains a list of lines with mappings from one code point 18# The file contains a list of lines with mappings from one code point
19# to another one for character-based mirroring. 19# to another one for character-based mirroring.
@@ -30,16 +30,8 @@
30# characters exist with mirrored glyphs, are 30# characters exist with mirrored glyphs, are
31# listed as comments at the end of the file. 31# listed as comments at the end of the file.
32# 32#
33# Note: (2011-12-19) There is an inconsistency between the
34# following statement about the default value
35# of the Bidi_Mirroring_Glyph property and the
36# value of the @missing line for Bidi_Mirroring_Glyph in
37# PropertyValueAliases.txt. This inconsistency was discovered too
38# late in the release process to be resolved by
39# the UTC. The inconsistency will be resolved in a future revision.
40#
41# Formally, the default value of the Bidi_Mirroring_Glyph property 33# Formally, the default value of the Bidi_Mirroring_Glyph property
42# for each code point is the code point itself, unless a mapping to 34# for each code point is <none>, unless a mapping to
43# some other character is specified in this data file. When a code 35# some other character is specified in this data file. When a code
44# point has the default value for the Bidi_Mirroring_Glyph property, 36# point has the default value for the Bidi_Mirroring_Glyph property,
45# that means that no other character exists whose glyph is suitable 37# that means that no other character exists whose glyph is suitable
@@ -50,12 +42,13 @@
50# 42#
51# This file was originally created by Markus Scherer. 43# This file was originally created by Markus Scherer.
52# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler, 44# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
53# and for Unicode 6.1 by Ken Whistler and Laurentiu Iancu. 45# and for Unicode 6.1 and 6.2 by Ken Whistler and Laurentiu Iancu.
54# 46#
55# ############################################################ 47# ############################################################
56# 48#
57# Property: Bidi_Mirroring_Glyph 49# Property: Bidi_Mirroring_Glyph
58# 50#
51# @missing: 0000..10FFFF; <none>
59 52
600028; 0029 # LEFT PARENTHESIS 530028; 0029 # LEFT PARENTHESIS
610029; 0028 # RIGHT PARENTHESIS 540029; 0028 # RIGHT PARENTHESIS
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in
index ecbd0490246..49cd9bb6d3a 100644
--- a/admin/unidata/Makefile.in
+++ b/admin/unidata/Makefile.in
@@ -1,6 +1,6 @@
1# Makefile -- Makefile to generate character property tables. 1# Makefile -- Makefile to generate character property tables.
2 2
3# Copyright (C) 2012 Free Software Foundation, Inc. 3# Copyright (C) 2012-2013 Free Software Foundation, Inc.
4 4
5# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 5# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
6# National Institute of Advanced Industrial Science and Technology (AIST) 6# National Institute of Advanced Industrial Science and Technology (AIST)
diff --git a/admin/unidata/UnicodeData.txt b/admin/unidata/UnicodeData.txt
index 9f204050c6b..086379eb4f3 100644
--- a/admin/unidata/UnicodeData.txt
+++ b/admin/unidata/UnicodeData.txt
@@ -7190,6 +7190,7 @@
719020B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; 719020B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
719120B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; 719120B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
719220B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;; 719220B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
719320BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;;
719320D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 719420D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
719420D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 719520D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
719520D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; 719620D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
@@ -18703,8 +18704,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
187031242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; 187041242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
1870412430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; 1870512430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
1870512431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; 1870612431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
1870612432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; 1870712432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;;
1870712433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; 1870812433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;;
1870812434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; 1870912434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
1870912435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; 1871012435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
1871012436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; 1871112436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
@@ -18739,8 +18740,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1873912453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; 1874012453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
1874012454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; 1874112454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
1874112455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; 1874212455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
1874212456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; 1874312456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;;
1874312457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; 1874412457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;;
1874412458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; 1874512458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
1874512459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; 1874612459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
187461245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; 187471245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;