diff options
| author | Stephen Berman | 2013-06-14 22:07:55 +0200 |
|---|---|---|
| committer | Stephen Berman | 2013-06-14 22:07:55 +0200 |
| commit | bd358779861f265a7acff31ead40172735af693e (patch) | |
| tree | 345217a9889dbd29b09bdc80a94265c17719d41f /admin | |
| parent | 2a97b47f0878cbda86cb6ba0e7e744924810b70e (diff) | |
| parent | f7394b12358ae453a0c8b85fc307afc1b740010d (diff) | |
| download | emacs-bd358779861f265a7acff31ead40172735af693e.tar.gz emacs-bd358779861f265a7acff31ead40172735af693e.zip | |
Merge from trunk.
Diffstat (limited to 'admin')
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 | ||
| 10 | AIX | 10 | AIX |
| 11 | _AIX | 11 | _AIX |
| 12 | BSD4_2 | ||
| 13 | BSD_SYSTEM | ||
| 14 | CYGWIN Compiling the Cygwin port. | 12 | CYGWIN Compiling the Cygwin port. |
| 15 | __CYGWIN__ Ditto | 13 | __CYGWIN__ Ditto |
| 16 | GNU_LINUX | 14 | GNU_LINUX |
| @@ -86,18 +84,11 @@ anymore, so they can be removed. | |||
| 86 | AMPERSAND_FULL_NAME | 84 | AMPERSAND_FULL_NAME |
| 87 | BROKEN_DATAGRAM_SOCKETS | 85 | BROKEN_DATAGRAM_SOCKETS |
| 88 | BROKEN_FIONREAD | 86 | BROKEN_FIONREAD |
| 89 | BROKEN_GETWD | ||
| 90 | BROKEN_GET_CURRENT_DIR_NAME | 87 | BROKEN_GET_CURRENT_DIR_NAME |
| 91 | BROKEN_NON_BLOCKING_CONNECT | 88 | BROKEN_NON_BLOCKING_CONNECT |
| 92 | BROKEN_PTY_READ_AFTER_EAGAIN | 89 | BROKEN_PTY_READ_AFTER_EAGAIN |
| 93 | BROKEN_SA_RESTART | ||
| 94 | BROKEN_SIGAIO | ||
| 95 | BROKEN_SIGIO | ||
| 96 | BROKEN_SIGPOLL | ||
| 97 | BROKEN_SIGPTY | ||
| 98 | CLASH_DETECTION | 90 | CLASH_DETECTION |
| 99 | DATA_SEG_BITS | 91 | DATA_SEG_BITS |
| 100 | DATA_START | ||
| 101 | DEFAULT_SOUND_DEVICE | 92 | DEFAULT_SOUND_DEVICE |
| 102 | DEVICE_SEP | 93 | DEVICE_SEP |
| 103 | DIRECTORY_SEP | 94 | DIRECTORY_SEP |
| @@ -124,7 +115,6 @@ HAVE_CFMAKERAW | |||
| 124 | HAVE_CFSETSPEED | 115 | HAVE_CFSETSPEED |
| 125 | HAVE_CLOCK_GETTIME | 116 | HAVE_CLOCK_GETTIME |
| 126 | HAVE_CLOCK_SETTIME | 117 | HAVE_CLOCK_SETTIME |
| 127 | HAVE_CLOSEDIR | ||
| 128 | HAVE_COFF_H | 118 | HAVE_COFF_H |
| 129 | HAVE_COM_ERR_H | 119 | HAVE_COM_ERR_H |
| 130 | HAVE_COPYSIGN | 120 | HAVE_COPYSIGN |
| @@ -149,26 +139,21 @@ HAVE_DES_H | |||
| 149 | HAVE_DEV_PTMX | 139 | HAVE_DEV_PTMX |
| 150 | HAVE_DIALOGS | 140 | HAVE_DIALOGS |
| 151 | HAVE_DIFFTIME | 141 | HAVE_DIFFTIME |
| 152 | HAVE_DIRENT_H | ||
| 153 | HAVE_DUP2 | 142 | HAVE_DUP2 |
| 154 | HAVE_ENDGRENT | 143 | HAVE_ENDGRENT |
| 155 | HAVE_ENDPWENT | 144 | HAVE_ENDPWENT |
| 156 | HAVE_ENVIRON_DECL | 145 | HAVE_ENVIRON_DECL |
| 157 | HAVE_EUIDACCESS | 146 | HAVE_EUIDACCESS |
| 158 | HAVE_FCNTL_H | ||
| 159 | HAVE_FORK | 147 | HAVE_FORK |
| 160 | HAVE_FPATHCONF | ||
| 161 | HAVE_FREEIFADDRS | 148 | HAVE_FREEIFADDRS |
| 162 | HAVE_FREETYPE | 149 | HAVE_FREETYPE |
| 163 | HAVE_FSEEKO | 150 | HAVE_FSEEKO |
| 164 | HAVE_FSYNC | ||
| 165 | HAVE_FUTIMENS | 151 | HAVE_FUTIMENS |
| 166 | HAVE_FUTIMES | 152 | HAVE_FUTIMES |
| 167 | HAVE_FUTIMESAT | 153 | HAVE_FUTIMESAT |
| 168 | HAVE_GAI_STRERROR | 154 | HAVE_GAI_STRERROR |
| 169 | HAVE_GCONF | 155 | HAVE_GCONF |
| 170 | HAVE_GETADDRINFO | 156 | HAVE_GETADDRINFO |
| 171 | HAVE_GETCWD | ||
| 172 | HAVE_GETDELIM | 157 | HAVE_GETDELIM |
| 173 | HAVE_GETGRENT | 158 | HAVE_GETGRENT |
| 174 | HAVE_GETHOSTNAME | 159 | HAVE_GETHOSTNAME |
| @@ -185,7 +170,6 @@ HAVE_GETRLIMIT | |||
| 185 | HAVE_GETRUSAGE | 170 | HAVE_GETRUSAGE |
| 186 | HAVE_GETSOCKNAME | 171 | HAVE_GETSOCKNAME |
| 187 | HAVE_GETTIMEOFDAY | 172 | HAVE_GETTIMEOFDAY |
| 188 | HAVE_GETWD | ||
| 189 | HAVE_GET_CURRENT_DIR_NAME | 173 | HAVE_GET_CURRENT_DIR_NAME |
| 190 | HAVE_GHOSTSCRIPT | 174 | HAVE_GHOSTSCRIPT |
| 191 | HAVE_GIF | 175 | HAVE_GIF |
| @@ -271,7 +255,6 @@ HAVE_MEMSET | |||
| 271 | HAVE_MENUS | 255 | HAVE_MENUS |
| 272 | HAVE_MKSTEMP | 256 | HAVE_MKSTEMP |
| 273 | HAVE_MMAP | 257 | HAVE_MMAP |
| 274 | HAVE_MOUSE | ||
| 275 | HAVE_MULTILINGUAL_MENU | 258 | HAVE_MULTILINGUAL_MENU |
| 276 | HAVE_NANOTIME | 259 | HAVE_NANOTIME |
| 277 | HAVE_NET_IF_DL_H | 260 | HAVE_NET_IF_DL_H |
| @@ -303,9 +286,7 @@ HAVE_SENDTO | |||
| 303 | HAVE_SEQPACKET | 286 | HAVE_SEQPACKET |
| 304 | HAVE_SETITIMER | 287 | HAVE_SETITIMER |
| 305 | HAVE_SETLOCALE | 288 | HAVE_SETLOCALE |
| 306 | HAVE_SETPGID | ||
| 307 | HAVE_SETRLIMIT | 289 | HAVE_SETRLIMIT |
| 308 | HAVE_SETSID | ||
| 309 | HAVE_SHARED_GAME_DIR | 290 | HAVE_SHARED_GAME_DIR |
| 310 | HAVE_SHUTDOWN | 291 | HAVE_SHUTDOWN |
| 311 | HAVE_SIGNED_${GLTYPE} | 292 | HAVE_SIGNED_${GLTYPE} |
| @@ -313,7 +294,6 @@ HAVE_SIGNED_SIG_ATOMIC_T | |||
| 313 | HAVE_SIGNED_WCHAR_T | 294 | HAVE_SIGNED_WCHAR_T |
| 314 | HAVE_SIGNED_WINT_T | 295 | HAVE_SIGNED_WINT_T |
| 315 | HAVE_SIGSET_T | 296 | HAVE_SIGSET_T |
| 316 | HAVE_SIZE_T | ||
| 317 | HAVE_SNPRINTF | 297 | HAVE_SNPRINTF |
| 318 | HAVE_SOCKETS | 298 | HAVE_SOCKETS |
| 319 | HAVE_SOUND | 299 | HAVE_SOUND |
| @@ -378,7 +358,6 @@ HAVE_TM_ZONE | |||
| 378 | HAVE_TOUCHLOCK | 358 | HAVE_TOUCHLOCK |
| 379 | HAVE_TZNAME | 359 | HAVE_TZNAME |
| 380 | HAVE_TZSET | 360 | HAVE_TZSET |
| 381 | HAVE_UNISTD_H | ||
| 382 | HAVE_UNSIGNED_LONG_LONG_INT | 361 | HAVE_UNSIGNED_LONG_LONG_INT |
| 383 | HAVE_UTIL_H | 362 | HAVE_UTIL_H |
| 384 | HAVE_UTIMENSAT | 363 | HAVE_UTIMENSAT |
| @@ -398,7 +377,6 @@ HAVE_WS2TCPIP_H | |||
| 398 | HAVE_XAW3D | 377 | HAVE_XAW3D |
| 399 | HAVE_XFT | 378 | HAVE_XFT |
| 400 | HAVE_XIM | 379 | HAVE_XIM |
| 401 | HAVE_XKBGETKEYBOARD | ||
| 402 | HAVE_XPM | 380 | HAVE_XPM |
| 403 | HAVE_XRMSETDATABASE | 381 | HAVE_XRMSETDATABASE |
| 404 | HAVE_XSCREENNUMBEROFSCREEN | 382 | HAVE_XSCREENNUMBEROFSCREEN |
| @@ -423,15 +401,10 @@ MAIL_USE_SYSTEM_LOCK | |||
| 423 | MAXPATHLEN | 401 | MAXPATHLEN |
| 424 | NLIST_STRUCT | 402 | NLIST_STRUCT |
| 425 | NO_EDITRES | 403 | NO_EDITRES |
| 426 | NO_TERMIO | ||
| 427 | NSIG | 404 | NSIG |
| 428 | NSIG_MINIMUM | 405 | NSIG_MINIMUM |
| 429 | NULL_DEVICE | 406 | NULL_DEVICE |
| 430 | ORDINARY_LINK | ||
| 431 | O_RDONLY | ||
| 432 | O_RDWR | ||
| 433 | PAGESIZE | 407 | PAGESIZE |
| 434 | PENDING_OUTPUT_COUNT | ||
| 435 | PREFER_VSUSP | 408 | PREFER_VSUSP |
| 436 | PTY_ITERATION | 409 | PTY_ITERATION |
| 437 | PTY_NAME_SPRINTF | 410 | PTY_NAME_SPRINTF |
| @@ -439,17 +412,8 @@ PTY_OPEN | |||
| 439 | PTY_TTY_NAME_SPRINTF | 412 | PTY_TTY_NAME_SPRINTF |
| 440 | PURESIZE | 413 | PURESIZE |
| 441 | RUN_TIME_REMAP | 414 | RUN_TIME_REMAP |
| 442 | SA_RESTART | ||
| 443 | SETPGRP_RELEASES_CTTY | ||
| 444 | SETUP_SLAVE_PTY | 415 | SETUP_SLAVE_PTY |
| 445 | SIGALRM | ||
| 446 | SIGCHLD | ||
| 447 | SIGHUP | ||
| 448 | SIGKILL | ||
| 449 | SIGNALS_VIA_CHARACTERS | 416 | SIGNALS_VIA_CHARACTERS |
| 450 | SIGPIPE | ||
| 451 | SIGQUIT | ||
| 452 | SIGTRAP | ||
| 453 | STDC_HEADERS | 417 | STDC_HEADERS |
| 454 | SYSTEM_PURESIZE_EXTRA | 418 | SYSTEM_PURESIZE_EXTRA |
| 455 | SYSTEM_MALLOC | 419 | SYSTEM_MALLOC |
| @@ -459,7 +423,6 @@ TERM | |||
| 459 | TIME_WITH_SYS_TIME | 423 | TIME_WITH_SYS_TIME |
| 460 | TIOCSIGSEND | 424 | TIOCSIGSEND |
| 461 | TM_IN_SYS_TIME | 425 | TM_IN_SYS_TIME |
| 462 | ULIMIT_BREAK_VALUE | ||
| 463 | UNIX98_PTYS | 426 | UNIX98_PTYS |
| 464 | USE_TOOLKIT_SCROLL_BARS | 427 | USE_TOOLKIT_SCROLL_BARS |
| 465 | USG_SUBTTY_WORKS | 428 | USG_SUBTTY_WORKS |
diff --git a/admin/ChangeLog b/admin/ChangeLog index b70067d7465..ac6031fa205 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog | |||
| @@ -1,3 +1,335 @@ | |||
| 1 | 2013-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 | |||
| 8 | 2013-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 | |||
| 14 | 2013-05-15 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 15 | |||
| 16 | * quick-install-emacs: Don't prune DOC-* files a any more. | ||
| 17 | |||
| 18 | 2013-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 | |||
| 24 | 2013-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 | |||
| 31 | 2013-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 | |||
| 37 | 2013-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 | |||
| 53 | 2013-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 | |||
| 59 | 2013-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 | |||
| 67 | 2013-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 | |||
| 74 | 2013-03-16 Glenn Morris <rgm@gnu.org> | ||
| 75 | |||
| 76 | * admin.el (manual-pdf, manual-dvi): Pass -I to texi2pdf, texi2dvi. | ||
| 77 | |||
| 78 | 2013-03-16 Glenn Morris <rgm@gnu.org> | ||
| 79 | |||
| 80 | * admin.el (manual-html-mono, manual-html-node): Add -DWWW_GNU_ORG. | ||
| 81 | |||
| 82 | 2013-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 | |||
| 88 | 2013-03-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 89 | |||
| 90 | * notes/unicode: Improve notes about Emacs source file encoding. | ||
| 91 | |||
| 92 | 2013-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 | |||
| 99 | 2013-03-10 Glenn Morris <rgm@gnu.org> | ||
| 100 | |||
| 101 | * admin.el (add-release-logs): Use UTC for release date. | ||
| 102 | |||
| 103 | 2013-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 | |||
| 108 | 2013-03-05 Paul Eggert <eggert@cs.ucla.edu> | ||
| 109 | |||
| 110 | * notes/unicode: Add notes about Emacs source file encoding. | ||
| 111 | |||
| 112 | 2013-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 | |||
| 118 | 2013-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 | |||
| 123 | 2013-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 | |||
| 128 | 2013-02-11 Paul Eggert <eggert@cs.ucla.edu> | ||
| 129 | |||
| 130 | Tune by using memchr and memrchr. | ||
| 131 | * merge-gnulib (GNULIB_MODULES): Add memrchr. | ||
| 132 | |||
| 133 | 2013-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 | |||
| 140 | 2013-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 | |||
| 145 | 2013-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 | |||
| 152 | 2012-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 | |||
| 157 | 2012-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 | |||
| 165 | 2012-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 | |||
| 173 | 2012-11-24 Ken Brown <kbrown@cornell.edu> | ||
| 174 | |||
| 175 | * CPP-DEFINES (HAVE_MOUSE): Remove. | ||
| 176 | |||
| 177 | 2012-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 | |||
| 183 | 2012-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 | |||
| 189 | 2012-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 | |||
| 195 | 2012-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 | |||
| 200 | 2012-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 | |||
| 208 | 2012-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 | |||
| 217 | 2012-11-03 Glenn Morris <rgm@gnu.org> | ||
| 218 | |||
| 219 | * admin.el (set-copyright): Add msdos/sed2v2.inp. | ||
| 220 | |||
| 221 | 2012-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 | |||
| 226 | 2012-10-12 Kenichi Handa <handa@gnu.org> | ||
| 227 | |||
| 228 | * charsets/Makefile (JISC6226.map): Add missing mappings. | ||
| 229 | |||
| 230 | 2012-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 | |||
| 254 | 2012-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 | |||
| 259 | 2012-10-07 Glenn Morris <rgm@gnu.org> | ||
| 260 | |||
| 261 | * admin.el (cusver-new-version): Set default. | ||
| 262 | (cusver-check): Improve interactive argument reading. | ||
| 263 | |||
| 264 | 2012-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 | |||
| 270 | 2012-10-01 David Engster <deng@randomsample.de> | ||
| 271 | |||
| 272 | * grammars/bovine-grammar.el: | ||
| 273 | * grammars/wisent-grammar.el: Move to lisp directory. | ||
| 274 | |||
| 275 | 2012-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 | |||
| 289 | 2012-09-27 Glenn Morris <rgm@gnu.org> | ||
| 290 | |||
| 291 | * admin.el (set-version): Set msdos.c's Vwindow_system_version. | ||
| 292 | |||
| 293 | 2012-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 | |||
| 298 | 2012-09-26 Juanma Barranquero <lekktu@gmail.com> | ||
| 299 | |||
| 300 | * unidata/BidiMirroring.txt: | ||
| 301 | * unidata/UnicodeData.txt: Update to Unicode 6.2. | ||
| 302 | |||
| 303 | 2012-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 | |||
| 317 | 2012-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 | |||
| 322 | 2012-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 | |||
| 327 | 2012-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 | |||
| 1 | 2012-09-11 Paul Eggert <eggert@cs.ucla.edu> | 333 | 2012-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. | |||
| 16 | 1. | 16 | 1. |
| 17 | ============================================================================== | 17 | ============================================================================== |
| 18 | 18 | ||
| 19 | Richard Stallman | ||
| 20 | ??? | ||
| 21 | |||
| 22 | Jason Rumney | 19 | Jason 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 | ||
| 74 | Michael Olson | ||
| 75 | ERC | ||
| 76 | lisp/erc/* | ||
| 77 | etc/ERC-NEWS | ||
| 78 | doc/misc/erc.texi | ||
| 79 | lisp/emacs-lisp/tq.el | ||
| 80 | |||
| 81 | Bastien Guerry | 71 | Bastien Guerry |
| 82 | Org | 72 | Org |
| 83 | lisp/org/* | 73 | lisp/org/* |
| @@ -87,9 +77,6 @@ Bastien Guerry | |||
| 87 | 2. | 77 | 2. |
| 88 | ============================================================================== | 78 | ============================================================================== |
| 89 | 79 | ||
| 90 | Steven Tamm | ||
| 91 | MacOS | ||
| 92 | |||
| 93 | Eli Zaretskii | 80 | Eli 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 @@ | |||
| 1 | Copyright (C) 2001-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2001-2013 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See 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 | ||
| 25 | Utilities for setting version numbers and alike. | 25 | Utilities for setting version numbers and alike. |
| 26 | 26 | ||
| 27 | ** make-announcement, make-changelog-diff | ||
| 28 | |||
| 29 | Scripts 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. |
| 31 | Root must be the root of an Emacs source tree." | 37 | Root must be the root of an Emacs source tree. |
| 32 | (interactive "DEmacs root directory: \nNVersion number: ") | 38 | Optional 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 | |||
| 290 | HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using | 285 | HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using |
| 291 | the @import directive." | 286 | the @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. |
| 354 | Also generate PostScript output in PS-DEST." | 368 | Also 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. |
| 487 | Return a list with elements of the form (VAR . VER), | 508 | Return a list with elements of the form (VAR . VER), |
| @@ -490,8 +511,8 @@ a :version tag having value VER (may be nil). | |||
| 490 | If optional argument OLD is non-nil, also scan for defvars." | 511 | If 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. |
| 533 | NEWDIR is the current lisp/ directory, OLDDIR is that from the previous | 579 | NEWDIR is the current lisp/ directory, OLDDIR is that from the previous |
| 534 | release. A defcustom that is only in NEWDIR should have a :version | 580 | release. 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 | ||
| 538 | Note that a :version tag should also be added if the value of a defcustom | 584 | Note that a :version tag should also be added if the value of a defcustom |
| 539 | changes (in a non-trivial way). This function does not check for that." | 585 | changes (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 | ||
| 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/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! | 323 | BEWARE! Important metadata is kept in this Emacs session! |
| 324 | Do not commit without re-running `M-x bzrmerge' first!" | 324 | Do 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 | ||
| 79 | TRANS_TABLE = cp51932.el eucjp-ms.el | 79 | TRANS_TABLE = cp51932.el eucjp-ms.el |
| 80 | SED_SCRIPT = jisx2131-filter | ||
| 80 | 81 | ||
| 81 | all: ${CHARSETS} ${TRANS_TABLE} | 82 | all: ${CHARSETS} ${TRANS_TABLE} |
| 82 | 83 | ||
| @@ -86,11 +87,11 @@ AWK = gawk | |||
| 86 | 87 | ||
| 87 | VSCII.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk | 88 | VSCII.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 | ||
| 91 | VSCII-2.map: ${GLIBC_CHARMAPS}/TCVN5712-1.gz mapconv compact.awk | 92 | VSCII-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 | ||
| 96 | ALTERNATIVNYJ.map: IBM866.map | 97 | ALTERNATIVNYJ.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 | ||
| 113 | MIK.map: mapfiles/bulgarian-mik.txt.gz mapconv compact.awk | 114 | MIK.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 | ||
| 117 | PTCP154.map: mapfiles/PTCP154.gz mapconv compact.awk | 118 | PTCP154.map: mapfiles/PTCP154 mapconv compact.awk |
| 118 | # Generating $@... | 119 | # Generating $@... |
| 119 | @mapconv $< '/^0x/' IANA compact.awk > $@ | 120 | @./mapconv $< '/^0x/' IANA compact.awk > $@ |
| 120 | 121 | ||
| 121 | stdenc.map: mapfiles/stdenc.txt.gz mapconv compact.awk | 122 | stdenc.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 | ||
| 125 | symbol.map: mapfiles/symbol.txt.gz mapconv compact.awk | 126 | symbol.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 | ||
| 129 | CP720.map: mapfiles/CP720.map.gz | 130 | CP720.map: mapfiles/CP720.map |
| 130 | # Generating $@... | 131 | # Generating $@... |
| 131 | @zcat $< > $@ | 132 | @cp $< $@ |
| 132 | 133 | ||
| 133 | CP858.map: mapfiles/CP858.map.gz | 134 | CP858.map: mapfiles/CP858.map |
| 134 | # Generating $@... | 135 | # Generating $@... |
| 135 | @zcat $< > $@ | 136 | @cp $< $@ |
| 136 | 137 | ||
| 137 | CP949-2BYTE.map: ${GLIBC_CHARMAPS}/CP949.gz mapconv compact.awk | 138 | CP949-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 | ||
| 141 | GB2312.map: ${GLIBC_CHARMAPS}/GB2312.gz mapconv compact.awk | 142 | GB2312.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 | ||
| 145 | GBK.map: ${GLIBC_CHARMAPS}/GBK.gz mapconv compact.awk | 146 | GBK.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 | ||
| 149 | GB180302.map: ${GLIBC_CHARMAPS}/GB18030.gz mapconv gb180302.awk | 150 | GB180302.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 | ||
| 153 | GB180304.map: GB180302.map gb180304.awk | 154 | GB180304.map: GB180302.map gb180304.awk |
| 154 | # Generating $@... | 155 | # Generating $@... |
| @@ -156,35 +157,39 @@ GB180304.map: GB180302.map gb180304.awk | |||
| 156 | 157 | ||
| 157 | JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz mapconv compact.awk | 158 | JISX0201.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 | ||
| 163 | JISX0208.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv | 164 | JISX0208.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 | ||
| 168 | JISX0212.map: ${GLIBC_CHARMAPS}/EUC-JP.gz mapconv compact.awk | 169 | JISX0212.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 | ||
| 172 | JISX2131.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv | 173 | jisx2131-filter: mapfiles/JISX213A.map |
| 174 | @sed -n -e '/^#/d' -e 's,.*0x\([0-9A-Z]*\)$$,/0x0*\1$$/d,p' < $< > $@ | ||
| 175 | |||
| 176 | JISX2131.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 | ||
| 177 | JISX2132.map: ${GLIBC_CHARMAPS}/EUC-JISX0213.gz mapconv | 182 | JISX2132.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 | ||
| 181 | JISX213A.map: mapfiles/JISX213A.map.gz | 186 | JISX213A.map: mapfiles/JISX213A.map |
| 182 | # Generating $@ | 187 | # Generating $@ |
| 183 | @zcat $< > $@ | 188 | @cp $< $@ |
| 184 | 189 | ||
| 185 | CP932-2BYTE.map: mapfiles/CP932.TXT.gz mapconv cp932.awk | 190 | CP932-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 | ||
| 189 | cp51932.el: CP932-2BYTE.map cp51932.awk | 194 | cp51932.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 | |||
| 192 | eucjp-ms.el: ${GLIBC_CHARMAPS}/EUC-JP-MS.gz eucjp-ms.awk | 197 | eucjp-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 | ||
| 195 | JISC6226.map : mapfiles/Uni2JIS.gz mapconv kuten.awk | 200 | JISC6226.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 | ||
| 199 | KSC5601.map: ${GLIBC_CHARMAPS}/EUC-KR.gz mapconv compact.awk | 214 | KSC5601.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 | ||
| 203 | BIG5.map: ${GLIBC_CHARMAPS}/BIG5.gz mapconv compact.awk | 218 | BIG5.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 | ||
| 207 | BIG5-1.map: BIG5.map mapconv big5.awk | 222 | BIG5-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 | ||
| 217 | BIG5-HKSCS.map: ${GLIBC_CHARMAPS}/BIG5-HKSCS.gz mapconv compact.awk | 232 | BIG5-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 | ||
| 221 | JOHAB.map: ${GLIBC_CHARMAPS}/JOHAB.gz mapconv compact.awk | 236 | JOHAB.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 | ||
| 225 | CNS-1.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk | 240 | CNS-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 | ||
| 233 | CNS-2.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 248 | CNS-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 | ||
| 237 | CNS-3.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 252 | CNS-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 | ||
| 241 | CNS-4.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 256 | CNS-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 | ||
| 245 | CNS-5.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 260 | CNS-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 | ||
| 249 | CNS-6.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 264 | CNS-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 | ||
| 253 | CNS-7.map: mapfiles/cns2ucsdkw.txt.gz mapconv compact.awk | 268 | CNS-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 | ||
| 257 | CNS-F.map: ${GLIBC_CHARMAPS}/EUC-TW.gz mapconv compact.awk | 272 | CNS-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. |
| 262 | MULE-%.map: mapfiles/MULE-%.map.gz | 277 | MULE-%.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 | ||
| 270 | 8859-%.map: ${GLIBC_CHARMAPS}/ISO-8859-%.gz mapconv compact.awk | 285 | 8859-%.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 | ||
| 274 | KA-%.map: ${GLIBC_CHARMAPS}/GEORGIAN-%.gz mapconv compact.awk | 289 | KA-%.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 | ||
| 278 | EBCDIC%.map: ${GLIBC_CHARMAPS}/EBCDIC-%.gz mapconv compact.awk | 293 | EBCDIC%.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 | ||
| 288 | install: | 303 | install: |
| 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. |
| 307 | clean: | 322 | clean: |
| 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} |
| 103 | elif [ "$3" = "CZYBORRA" ] ; then | 102 | elif [ "$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} |
| 109 | elif [ "$3" = "IANA" ] ; then | 108 | elif [ "$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} |
| 115 | elif [ "$3" = "UNICODE" ] ; then | 114 | elif [ "$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 |
| 123 | elif [ "$3" = "UNICODE2" ] ; then | 122 | elif [ "$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 |
| 129 | elif [ "$3" = "YASUOKA" ] ; then | 128 | elif [ "$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} |
| 135 | elif [ "$3" = "KANJI-DATABASE" ] ; then | 134 | elif [ "$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} |
| 141 | else | 140 | else |
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. |
| 2 | 0x2121 0x1200 | 2 | 0x2121 0x1200 |
| 3 | 0x2122 0x1201 | 3 | 0x2122 0x1201 |
| 4 | 0x2123 0x1202 | 4 | 0x2123 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. |
| 2 | 0x20 0x0069 | 2 | 0x20 0x0069 |
| 3 | 0x21 0x026A | 3 | 0x21 0x026A |
| 4 | 0x22 0x0065 | 4 | 0x22 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. |
| 2 | 0x21 0x0901 | 2 | 0x21 0x0901 |
| 3 | 0x22 0x0902 | 3 | 0x22 0x0902 |
| 4 | 0x23 0x0903 | 4 | 0x23 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. |
| 2 | 0x21 0x1EAF | 2 | 0x21 0x1EAF |
| 3 | 0x22 0x1EB1 | 3 | 0x22 0x1EB1 |
| 4 | 0x23 0x1EB7 | 4 | 0x23 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. |
| 2 | 0x21 0x0101 | 2 | 0x21 0x0101 |
| 3 | 0x22 0x00E1 | 3 | 0x22 0x00E1 |
| 4 | 0x23 0x01CE | 4 | 0x23 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. |
| 2 | 0x2130 0x0F00 | 2 | 0x2130 0x0F00 |
| 3 | 0x2131 0x0F01 | 3 | 0x2131 0x0F01 |
| 4 | 0x2132 0x0F02 | 4 | 0x2132 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. |
| 2 | 0x21 0x1EAE | 2 | 0x21 0x1EAE |
| 3 | 0x22 0x1EB0 | 3 | 0x22 0x1EB0 |
| 4 | 0x23 0x1EB6 | 4 | 0x23 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 @@ | |||
| 1 | Copyright (C) 2009-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2009-2013 Free Software Foundation, Inc. |
| 2 | Copyright (C) 2009, 2010, 2011 | 2 | Copyright (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. | |||
| 17 | This program is in the public domain.\n"; | 17 | This program is in the public domain.\n"; |
| 18 | 18 | ||
| 19 | die $usage if @ARGV; | 19 | die $usage if @ARGV; |
| 20 | die $usage unless -r "src/alloc.c" && -d "CVS" && -d "lisp"; | 20 | die $usage unless -r "src/alloc.c" && -d ".bzr" && -d "lisp"; |
| 21 | 21 | ||
| 22 | my %texi_funtype; | 22 | my %texi_funtype; |
| 23 | my %texi_arglist; | 23 | my %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 | ||
| 200 | my $lisprefdir; | 200 | my $lisprefdir = "doc/lispref"; |
| 201 | if (-d "man/lispref") { $lisprefdir = "man/lispref"; } | 201 | die "Can't find lispref texi directory.\n" unless -d $lisprefdir; |
| 202 | elsif (-d "lispref") { $lisprefdir = "lispref"; } | ||
| 203 | else { die "Can't find lispref texi directory.\n"; } | ||
| 204 | 202 | ||
| 205 | open (FIND, "find $lisprefdir -name '*.texi' -print |") or die; | 203 | open (FIND, "find $lisprefdir -name '*.texi' -print |") or die; |
| 206 | while (my $file = <FIND>) { | 204 | while (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 | @@ | ||
| 3 | expression 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'. | ||
| 111 | Names 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) | 237 | If 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. | ||
| 252 | If GROUP is non-nil, return groups rather than options. | ||
| 253 | If GROUP is `cus-load', include groups listed in cus-loads as well as | ||
| 254 | currently 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. |
| 310 | Don't load libraries in `cus-test-libs-noloads'." | 308 | Don't load libraries in `cus-test-libs-noloads'. |
| 309 | If optional argument MORE is \"defcustom\", load all files with defcustoms. | ||
| 310 | If 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)) | 338 | Optional 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. |
| 358 | This function is suitable for batch mode. E.g., invoke | 363 | This 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 | ||
| 362 | in the Emacs source directory." | 367 | in the Emacs source directory. |
| 368 | Normally only tests options belonging to files in loaddefs.el. | ||
| 369 | If 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. |
| 449 | This function is useful to detect load problems of libraries. | 460 | This function is useful to detect load problems of libraries. |
| 450 | It is suitable for batch mode. E.g., invoke | 461 | It 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 | ||
| 454 | in the Emacs source directory." | 465 | in the Emacs source directory. |
| 466 | |||
| 467 | If optional argument MORE is \"defcustom\", load all files with defcustoms. | ||
| 468 | If 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 | ||
| 496 | in the Emacs source directory." | 514 | in 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 @@ | |||
| 1 | Here are the guidelines for being an Emacs pretester. | ||
| 2 | If you would like to do this, say so, and I'll add you to | ||
| 3 | the pretest list. | ||
| 4 | |||
| 5 | |||
| 6 | Information for Emacs Pretesters | ||
| 7 | |||
| 8 | The purpose of Emacs pretesting is to verify that the new Emacs | ||
| 9 | distribution, about to be released, works properly on your system *with | ||
| 10 | no change whatever*, when installed following the precise | ||
| 11 | recommendations that come with the Emacs distribution. | ||
| 12 | |||
| 13 | Here are some guidelines on how to do pretesting so as to make it | ||
| 14 | helpful. All of them follow from common sense together with the | ||
| 15 | nature of the purpose and the situation. | ||
| 16 | |||
| 17 | Please save this file, and reread it when a new series of pretests | ||
| 18 | starts. | ||
| 19 | |||
| 20 | * Get the pretest from gnu/emacs/pretest/emacs-MM.0.NN.tar.gz | ||
| 21 | on alpha.gnu.org. | ||
| 22 | |||
| 23 | * After a few days of testing, if there are no problems, please report | ||
| 24 | that 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 | ||
| 27 | emacs-pretesters@gnu.org. I don't use that mailing list when I send | ||
| 28 | to you because I've found that mailing lists tend to amplify random | ||
| 29 | noise into long discussions or even arguments, and that can waste a | ||
| 30 | lot of time. But when you have a reason to ask other pretesters for | ||
| 31 | help, you can do it that way. | ||
| 32 | |||
| 33 | * It is absolutely vital that you report even the smallest change or | ||
| 34 | departure from the standard sources and procedure. | ||
| 35 | |||
| 36 | Otherwise, you are not testing the same program that we asked you to | ||
| 37 | test. Testing a different program is usually of no use whatever. It | ||
| 38 | can even cause trouble, if you fail to tell us that you tested some | ||
| 39 | other program instead of what we are about to release. We might think | ||
| 40 | that Emacs works, when in fact it has not even been tried, and might | ||
| 41 | have a glaring fault. | ||
| 42 | |||
| 43 | * Don't use a site-load.el file or a site-init.el file when you pretest. | ||
| 44 | Using either of those files means you are not testing Emacs as a typical | ||
| 45 | site would use it. | ||
| 46 | |||
| 47 | Actually, it does no harm to test Emacs with such customizations *as | ||
| 48 | well as* testing it "out of the box". Anything you do that could find | ||
| 49 | a bug is useful, as long as you make sure we know exactly what you | ||
| 50 | did. The important point is that testing with local changes is no | ||
| 51 | substitute for testing Emacs exactly as it is distributed. | ||
| 52 | |||
| 53 | * Even changing the compilation options counts as a change in the | ||
| 54 | program. The Emacs sources specify which compilation options to use. | ||
| 55 | Some of them are specified in makefiles, and some in machine-specific | ||
| 56 | configuration files. They also give you ways to override this--but if | ||
| 57 | you do, then you are not testing what ordinary users will do. | ||
| 58 | Therefore, when pretesting, it is vital to test with the default | ||
| 59 | compilation options. | ||
| 60 | |||
| 61 | (Testing with a different set of options can be useful *in addition*, | ||
| 62 | but not *instead of* the default options.) | ||
| 63 | |||
| 64 | * The machine and system configuration files of Emacs are parts of | ||
| 65 | Emacs. So when you test Emacs, you need to do it with the | ||
| 66 | configuration files that come with Emacs. | ||
| 67 | |||
| 68 | If Emacs does not come with configuration files for a certain machine, | ||
| 69 | and you test it with configuration files that don't come with Emacs, | ||
| 70 | this is effectively changing Emacs. Because the crucial fact about | ||
| 71 | the planned release is that, without changes, it doesn't work on that | ||
| 72 | machine. | ||
| 73 | |||
| 74 | To make Emacs work on that machine, we would need to install new | ||
| 75 | configuration files. That is not out of the question, since it is | ||
| 76 | safe--it certainly won't break any other machines that already work. | ||
| 77 | But you will have to rush in the legal papers to give the FSF | ||
| 78 | permission to use such a large piece of text. | ||
| 79 | |||
| 80 | * Look in the etc/MACHINES file. | ||
| 81 | |||
| 82 | The etc/MACHINES file says which configuration files to use for your | ||
| 83 | machine, so use the ones that are recommended. If you guess, you might | ||
| 84 | guess wrong and encounter spurious difficulties. What's more, if you | ||
| 85 | don't follow etc/MACHINES then you aren't helping to test that its | ||
| 86 | recommendations are valid. | ||
| 87 | |||
| 88 | The etc/MACHINES file may describe other things that you need to do | ||
| 89 | to make Emacs work on your machine. If so, you should follow these | ||
| 90 | recommendations also, for the same reason. | ||
| 91 | |||
| 92 | * Send your problem reports to bug-gnu-emacs@gnu.org. | ||
| 93 | |||
| 94 | Sometimes we won't know what to do about a system-dependent issue, and | ||
| 95 | we may need people to say what happens if you try a certain thing on a | ||
| 96 | certain system. When this happens, we'll send out a query. | ||
| 97 | |||
| 98 | * Don't delay sending information. | ||
| 99 | |||
| 100 | When you test on a system and encounter no problems, please report it | ||
| 101 | right away. That way, we will know that someone has tested Emacs on | ||
| 102 | that kind of system. | ||
| 103 | |||
| 104 | Please don't wait for several days "to see if it really works before | ||
| 105 | you say anything." Tell us right away that Emacs seems basically to | ||
| 106 | work; then, if you notice a problem a few days later, tell us | ||
| 107 | immediately about that when you see it. | ||
| 108 | |||
| 109 | It is okay if you double check things before reporting a problem, such | ||
| 110 | as to see if you can easily fix it. But don't wait very long. A good | ||
| 111 | rule to use in pretesting is always to report every problem on the | ||
| 112 | same day you encounter it, even if that means you can't find a | ||
| 113 | solution before you report the problem. | ||
| 114 | |||
| 115 | I'd much rather hear about a problem today and a solution tomorrow | ||
| 116 | than get both of them tomorrow at the same time. | ||
| 117 | |||
| 118 | * Make each bug report self-contained. | ||
| 119 | |||
| 120 | If you refer back to another message, whether from you or from someone | ||
| 121 | else, then it will be necessary for anyone who wants to investigate | ||
| 122 | the bug to find the other message. This may be difficult, it is | ||
| 123 | probably time-consuming. | ||
| 124 | |||
| 125 | To help save our time, simply copy the relevant parts of any previous | ||
| 126 | messages into your own bug report. | ||
| 127 | |||
| 128 | In particular, if we ask you for more information because a bug report | ||
| 129 | was incomplete, it is best to send me the *entire* collection of | ||
| 130 | relevant information, all together. If you send just the additional | ||
| 131 | information, that makes extra work for us. There is even a risk that | ||
| 132 | we 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, | ||
| 135 | try setting debug-on-error to t and making the bug happen again. | ||
| 136 | Then you will get a Lisp backtrace. Including that in your bug report | ||
| 137 | is very useful. | ||
| 138 | |||
| 139 | * For advice on debugging, see etc/DEBUG. | ||
| 140 | |||
| 141 | * Debugging optimized code is possible, if you compile with GCC, but | ||
| 142 | in some cases the optimized code can be confusing. If you are not | ||
| 143 | accustomed 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 | ||
| 149 | compiling and linking programs which calls various functions and looks | ||
| 150 | at whether that succeeds. The file config.log contains any messages | ||
| 151 | produced by compilers while running configure, to aid debugging if | ||
| 152 | configure makes a mistake. But note that config.cache reads: | ||
| 153 | |||
| 154 | # Giving --cache-file=/dev/null disables caching, for debugging configure. | ||
| 155 | |||
| 156 | or more simply, | ||
| 157 | |||
| 158 | rm config.cache | ||
| 159 | ./configure | ||
| 160 | |||
| 161 | * Don't try changing Emacs *in any way* during pretest unless it fails | ||
| 162 | to work unchanged. | ||
| 163 | |||
| 164 | * Always be precise when talking about changes you have made. Show | ||
| 165 | things rather than describing them. Use exact filenames (relative to | ||
| 166 | the main directory of the distribution), not partial ones. For | ||
| 167 | example, say "I changed Makefile" rather than "I changed the | ||
| 168 | makefile". Instead of saying "I defined the MUMBLE macro", send a | ||
| 169 | diff. | ||
| 170 | |||
| 171 | * Always use `diff -c' to make diffs. If you don't include context, it | ||
| 172 | may be hard for us to figure out where you propose to make the | ||
| 173 | changes. So we might ignore your patch. | ||
| 174 | |||
| 175 | * When you write a fix, keep in mind that we can't install a change | ||
| 176 | that *might* break other systems without the risk that it will fail to | ||
| 177 | work and therefore require an additional cycle of pretesting. | ||
| 178 | |||
| 179 | People often suggest fixing a problem by changing config.h or | ||
| 180 | src/Makefile to do something special that a particular system needs. | ||
| 181 | Sometimes it is totally obvious that such changes would break Emacs | ||
| 182 | for almost all users. We can't possibly make a change like that. All | ||
| 183 | we can do is ask you to find a fix that is safe to install. | ||
| 184 | |||
| 185 | Sometimes people send fixes that *might* be an improvement in | ||
| 186 | general--but it is hard to be sure of this. I can install such | ||
| 187 | changes some of the time, but not during pretest, when I am trying to | ||
| 188 | get a new version to work reliably as quickly as possible. | ||
| 189 | |||
| 190 | The safest changes for us to install are changes to the s- and m- | ||
| 191 | files. At least those can't break other systems. | ||
| 192 | |||
| 193 | Another safe kind of change is one that uses a conditional to make | ||
| 194 | sure it will apply only to a particular kind of system. Ordinarily, | ||
| 195 | that is a bad way to solve a problem, and I would want to find a | ||
| 196 | cleaner alternative. But the virtue of safety can make it superior at | ||
| 197 | pretest time. | ||
| 198 | |||
| 199 | * Don't suggest changes during pretest to add features or make | ||
| 200 | something cleaner. Every change risks introducing a bug, so I won't | ||
| 201 | install a change during pretest unless it is *necessary*. | ||
| 202 | |||
| 203 | * If you would like to suggest changes for purposes other than fixing | ||
| 204 | user-visible bugs, don't wait till pretest time. Instead, send them | ||
| 205 | after we have made a release that proves to be stable. That is the | ||
| 206 | easiest time to consider such suggestions. If you send them at | ||
| 207 | pretest time, we will have to defer them till later, and that might | ||
| 208 | mean we forget all about them. | ||
| 209 | |||
| 210 | * In some cases, if you don't follow these guidelines, your | ||
| 211 | information might still be useful, but we would have to do more work | ||
| 212 | to make use of it. That might cause it to fall by the wayside. | ||
| 213 | |||
| 214 | Local Variables: | ||
| 215 | mode: text | ||
| 216 | End: | ||
| 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 | |||
| 3 | lisp/semantic/wisent/ directories. You can run the parser generators | 3 | lisp/semantic/wisent/ directories. You can run the parser generators |
| 4 | with | 4 | with |
| 5 | 5 | ||
| 6 | emacs -batch -Q -l bovine-grammar.el -f bovine-make-parsers | 6 | emacs -batch -Q -l semantic/bovine/grammar -f bovine-make-parsers |
| 7 | emacs -batch -Q -l wisent-grammar.el -f wisent-make-parsers | 7 | emacs -batch -Q -l semantic/wisent/grammar -f wisent-make-parsers |
| 8 | 8 | ||
| 9 | Currently, the parser files in lisp/ are not generated directly from | 9 | Currently, the parser files in lisp/ are not generated directly from |
| 10 | these grammar files when making Emacs. This state of affairs, and the | 10 | these 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. | ||
| 41 | Return the form to parse from within a nonterminal between BOUNDS. | ||
| 42 | NONTERM 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. | ||
| 48 | Return the form to recursively parse the area between BOUNDS. | ||
| 49 | NONTERM 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. | ||
| 55 | Return the form to create a generic semantic tag. | ||
| 56 | See the function `semantic-tag' for the meaning of arguments NAME, | ||
| 57 | CLASS 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. | ||
| 62 | Return the form to create a semantic tag of class variable. | ||
| 63 | See the function `semantic-tag-new-variable' for the meaning of | ||
| 64 | arguments 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. | ||
| 69 | Return the form to create a semantic tag of class function. | ||
| 70 | See the function `semantic-tag-new-function' for the meaning of | ||
| 71 | arguments 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. | ||
| 76 | Return the form to create a semantic tag of class type. | ||
| 77 | See the function `semantic-tag-new-type' for the meaning of arguments | ||
| 78 | NAME, 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. | ||
| 83 | Return the form to create a semantic tag of class include. | ||
| 84 | See the function `semantic-tag-new-include' for the meaning of | ||
| 85 | arguments 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. | ||
| 90 | Return the form to create a semantic tag of class package. | ||
| 91 | See the function `semantic-tag-new-package' for the meaning of | ||
| 92 | arguments 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. | ||
| 97 | Return the form to create a semantic tag of class code. | ||
| 98 | See the function `semantic-tag-new-code' for the meaning of arguments | ||
| 99 | NAME, 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. | ||
| 104 | Return the form to create a semantic tag of class alias. | ||
| 105 | See the function `semantic-tag-new-alias' for the meaning of arguments | ||
| 106 | NAME, 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. | ||
| 122 | FORM is a list in which we are substituting. | ||
| 123 | Argument QUOTEMODE is non-nil if we are in backquote mode. | ||
| 124 | When non-nil, optional argument INPLACE indicates that FORM is being | ||
| 125 | expanded 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. | ||
| 246 | QUOTEMODE 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. | ||
| 275 | The 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 | |||
| 282 | Where each NONTERMINAL-SYMBOL is an artificial symbol which can appear | ||
| 283 | in any child state. As a starting place, one of the NONTERMINAL-SYMBOLS | ||
| 284 | must be `bovine-toplevel'. | ||
| 285 | |||
| 286 | A MATCH-LIST is a list of possible matches of the form: | ||
| 287 | |||
| 288 | ( STATE-LIST1 | ||
| 289 | STATE-LIST2 | ||
| 290 | ... | ||
| 291 | STATE-LISTN ) | ||
| 292 | |||
| 293 | where STATE-LIST is of the form: | ||
| 294 | ( TYPE1 [ \"VALUE1\" ] TYPE2 [ \"VALUE2\" ] ... LAMBDA ) | ||
| 295 | |||
| 296 | where TYPE is one of the returned types of the token stream. | ||
| 297 | VALUE is a value, or range of values to match against. For | ||
| 298 | example, a SYMBOL might need to match \"foo\". Some TYPES will not | ||
| 299 | have matching criteria. | ||
| 300 | |||
| 301 | LAMBDA is a lambda expression which is evalled with the text of the | ||
| 302 | type when it is found. It is passed the list of all buffer text | ||
| 303 | elements found since the last lambda expression. It should return a | ||
| 304 | semantic element (see below.) | ||
| 305 | |||
| 306 | For consistency between languages, try to use common return values | ||
| 307 | from your parser. Please reference the chapter \"Writing Parsers\" in | ||
| 308 | the \"Language Support Developer's Guide -\" in the semantic texinfo | ||
| 309 | manual." | ||
| 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. | ||
| 427 | Menu 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 | |||
| 1098 | function-pointer | 1109 | function-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 | ||
| 1103 | fun-or-proto-end | 1116 | fun-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 | ||
| 171 | provide_decl: | ||
| 172 | PROVIDE SYMBOL | ||
| 173 | `(TAG ',$2 'provide) | ||
| 174 | ; | ||
| 175 | |||
| 168 | precedence_decl: | 176 | precedence_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") |
| 390 | import_declaration | 391 | import_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") |
| 446 | interface_declaration | 447 | interface_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") |
| 479 | constructor_declaration | 480 | constructor_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 | ||
| 492 | constructor_body | 493 | constructor_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") |
| 498 | method_declaration | 499 | method_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") |
| 549 | formal_parameter | 550 | formal_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 | ||
| 586 | opt_variable_declarator_id | ||
| 587 | : ;; EMPTY | ||
| 588 | (identity "") | ||
| 589 | | variable_declarator_id | ||
| 590 | (identity $1) | ||
| 591 | ; | ||
| 592 | |||
| 585 | variable_declarator_id | 593 | variable_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)* |
| 547 | dotted_as_name_list | 558 | dotted_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 | ||
| 777 | with_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 | |||
| 784 | with_var | ||
| 785 | : AS expr | ||
| 786 | () ;; TODO capture | ||
| 787 | ; | ||
| 788 | |||
| 789 | ;;;============================================================================ | ||
| 759 | ;;;@@ funcdef | 790 | ;;;@@ funcdef |
| 760 | ;;;============================================================================ | 791 | ;;;============================================================================ |
| 761 | 792 | ||
| 762 | ;; funcdef: 'def' NAME parameters ':' suite | 793 | decorator |
| 794 | : AT dotted_name varargslist_opt NEWLINE | ||
| 795 | (FUNCTION-TAG $2 "decorator" $3) | ||
| 796 | ; | ||
| 797 | |||
| 798 | decorators | ||
| 799 | : decorator | ||
| 800 | (list $1) | ||
| 801 | | decorator decorators | ||
| 802 | (cons $1 $2) | ||
| 803 | ; | ||
| 804 | |||
| 805 | ;; funcdef: [decorators] 'def' NAME parameters ':' suite | ||
| 763 | funcdef | 806 | funcdef |
| 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 | ||
| 768 | function_parameter_list | 815 | function_parameter_list |
| @@ -798,10 +845,11 @@ function_parameter | |||
| 798 | ;; classdef: 'class' NAME ['(' testlist ')'] ':' suite | 845 | ;; classdef: 'class' NAME ['(' testlist ')'] ':' suite |
| 799 | class_declaration | 846 | class_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 | |||
| 113 | variable | 125 | variable |
| 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 | |||
| 134 | template | 150 | template |
| 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 | ||
| 168 | opt-section-dictionaries | ||
| 169 | : () ;; EMPTY | ||
| 170 | | section-dictionary-list | ||
| 171 | ; | ||
| 172 | |||
| 173 | section-dictionary-list | 184 | section-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 | ||
| 180 | one-section-dictionary | 193 | flat-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 | |||
| 199 | flat-dictionary-entry-list | ||
| 200 | : ;; empty | ||
| 201 | () | ||
| 202 | | flat-dictionary-entry-list flat-dictionary-entry | ||
| 203 | (append $1 $2) | ||
| 204 | ; | ||
| 205 | |||
| 206 | flat-dictionary-entry | ||
| 207 | : variable | ||
| 208 | (EXPANDTAG $1) | ||
| 209 | ; | ||
| 210 | |||
| 211 | section-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 | ||
| 186 | variable-list | 218 | dictionary-entry-list |
| 219 | : ;; empty | ||
| 220 | () | ||
| 221 | | dictionary-entry-list dictionary-entry | ||
| 222 | (append $1 $2) | ||
| 223 | ; | ||
| 224 | |||
| 225 | dictionary-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 | ||
| 193 | opt-bind | 232 | opt-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. | ||
| 38 | Return 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. | ||
| 45 | Return the form to parse from within a nonterminal. | ||
| 46 | SYMB is a $I placeholder symbol that gives the bounds of the area to | ||
| 47 | parse. | ||
| 48 | NONTERM 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. | ||
| 60 | Return the form to recursively parse an area. | ||
| 61 | SYMB is a $I placeholder symbol that gives the bounds of the area. | ||
| 62 | NONTERM 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. | ||
| 74 | Return the form to create a generic semantic tag. | ||
| 75 | See the function `semantic-tag' for the meaning of arguments NAME, | ||
| 76 | CLASS 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. | ||
| 82 | Return the form to create a semantic tag of class variable. | ||
| 83 | See the function `semantic-tag-new-variable' for the meaning of | ||
| 84 | arguments 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. | ||
| 90 | Return the form to create a semantic tag of class function. | ||
| 91 | See the function `semantic-tag-new-function' for the meaning of | ||
| 92 | arguments 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. | ||
| 98 | Return the form to create a semantic tag of class type. | ||
| 99 | See the function `semantic-tag-new-type' for the meaning of arguments | ||
| 100 | NAME, 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. | ||
| 106 | Return the form to create a semantic tag of class include. | ||
| 107 | See the function `semantic-tag-new-include' for the meaning of | ||
| 108 | arguments 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. | ||
| 114 | Return the form to create a semantic tag of class package. | ||
| 115 | See the function `semantic-tag-new-package' for the meaning of | ||
| 116 | arguments 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. | ||
| 122 | Return the form to create a semantic tag of class code. | ||
| 123 | See the function `semantic-tag-new-code' for the meaning of arguments | ||
| 124 | NAME, 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. | ||
| 130 | Return the form to create a semantic tag of class alias. | ||
| 131 | See the function `semantic-tag-new-alias' for the meaning of arguments | ||
| 132 | NAME, 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. | ||
| 138 | Return the form to produce a list of cooked tags from raw form of | ||
| 139 | Semantic 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. | ||
| 144 | Return the form to update the abstract syntax tree AST with NODES. | ||
| 145 | See 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. | ||
| 150 | Return the form to update the abstract syntax tree AST with NODES. | ||
| 151 | See 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. | ||
| 156 | Return the form to get, from the abstract syntax tree AST, the value | ||
| 157 | of NODE. | ||
| 158 | See 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. | ||
| 163 | Return the form to get, from the abstract syntax tree AST, the first | ||
| 164 | value of NODE. | ||
| 165 | See 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. | ||
| 170 | Return the form to get, from the abstract syntax tree AST, the value | ||
| 171 | of NODE as a string. | ||
| 172 | See 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. | ||
| 177 | Return the form to merge the abstract syntax trees AST1 and AST2. | ||
| 178 | See 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. | ||
| 183 | Return the form to skip a parenthesized block. | ||
| 184 | Optional argument SYMB is a $I placeholder symbol that gives the | ||
| 185 | bounds of the block to skip. By default, skip the block at `$1'. | ||
| 186 | See 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. | ||
| 195 | Return the form to skip the lookahead token. | ||
| 196 | See 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. | ||
| 210 | Keep 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. | ||
| 229 | Return 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. | ||
| 324 | Menu 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 | |||
| 25 | if [ $# -ne 2 ]; then | ||
| 26 | echo "usage: $0 <old version number> <new version number>" >&2 | ||
| 27 | exit 1 | ||
| 28 | fi | ||
| 29 | |||
| 30 | if [ ! -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 | ||
| 33 | fi | ||
| 34 | |||
| 35 | OLD=$1 | ||
| 36 | NEW=$2 | ||
| 37 | outfile=emacs-$NEW.announce | ||
| 38 | oldtag=EMACS_PRETEST_$(echo $OLD|tr . _) | ||
| 39 | newtag=EMACS_PRETEST_$(echo $NEW|tr . _) | ||
| 40 | |||
| 41 | if [ -f $outfile ]; then | ||
| 42 | echo "$outfile exists" | ||
| 43 | echo -n "interrupt to abort, ENTER to overwrite "; read answer | ||
| 44 | fi | ||
| 45 | |||
| 46 | echo -n "tag name for OLD emacs version $OLD [$oldtag]: "; read answer | ||
| 47 | if [ "$answer" ]; then oldtag=$answer; fi | ||
| 48 | |||
| 49 | echo -n "tag name for NEW emacs version $NEW [$newtag]: "; read answer | ||
| 50 | if [ "$answer" ]; then newtag=$answer; fi | ||
| 51 | |||
| 52 | exec > $outfile | ||
| 53 | |||
| 54 | cat <<EOF | ||
| 55 | |||
| 56 | There is a new pretest available in | ||
| 57 | |||
| 58 | <ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-$NEW.tar.gz> | ||
| 59 | |||
| 60 | Please report results from compiling and running the pretest to | ||
| 61 | <bug-gnu-emacs@gnu.org>. Your feedback is necessary for us | ||
| 62 | to know on which platforms the pretest has been tried. | ||
| 63 | |||
| 64 | If 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 | |||
| 69 | You can use a command like | ||
| 70 | |||
| 71 | $ xdelta patch XDELTA PREVIOUS-TAR CURRENT-TAR | ||
| 72 | |||
| 73 | to generate the new tar from the old one, where XDELTA is the xdelta | ||
| 74 | file you downloaded, PREVIOUS-TAR is the tar file from the previous | ||
| 75 | pretest, and CURRENT-TAR is the name of the tar file you downloaded. | ||
| 76 | |||
| 77 | Information about xdelta can be found on the GNU ftp site, in | ||
| 78 | /non-gnu/xdelta.README. | ||
| 79 | |||
| 80 | Changes since $OLD | ||
| 81 | |||
| 82 | EOF | ||
| 83 | |||
| 84 | make-changelog-diff $oldtag $newtag | ||
| 85 | |||
| 86 | echo " 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 | |||
| 5 | if [ $# -ne 2 ]; then | ||
| 6 | echo "usage: $0 TAG1 TAG2" >&2 | ||
| 7 | exit 1 | ||
| 8 | fi | ||
| 9 | |||
| 10 | if [ ! -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 | ||
| 13 | fi | ||
| 14 | |||
| 15 | cvs -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 @@ | |||
| 1 | Instructions to create pretest or release tarballs. | 1 | Instructions 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 | ||
| 5 | For each step, check for possible errors. | 5 | |
| 6 | Steps to take before starting on the first pretest in any release sequence: | ||
| 7 | |||
| 8 | 1. Decide on versions of automake and autoconf, and ensure you will | ||
| 9 | have them available for the duration of the release process. | ||
| 10 | |||
| 11 | 2. 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 | |||
| 18 | General steps (for each step, check for possible errors): | ||
| 6 | 19 | ||
| 7 | 1. `bzr update' (for a bound branch), or `bzr pull'. | 20 | 1. `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 | ||
| 10 | 2. Bootstrap to make 100% sure all elc files are up-to-date, and to | 23 | 2. 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 | ||
| 14 | 3. Regenerate Emacs' etc/AUTHORS file (M-x load-file RET | 27 | 3. 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 | ||
| 19 | 4. Set the version number (M-x load-file RET admin/admin.el RET, then | 46 | 4. 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 | ||
| 31 | 5. autoreconf -i -I m4 --force | 61 | 5. autoreconf -i -I m4 --force |
| 32 | make bootstrap | 62 | make bootstrap |
| 33 | 63 | ||
| 34 | 6. Commit etc/AUTHORS, all the files changed by M-x set-version, and | 64 | 6. 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 | ||
| 39 | 7. make-dist --snapshot. Check the contents of the new tar with | 70 | 7. ./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 | ||
| 49 | 8. xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta | 82 | 8. tar -xf emacs-NEW.tar; cd emacs-NEW |
| 50 | 83 | ./configure --prefix=/tmp/emacs && make && make install | |
| 51 | 9. 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 | ||
| 59 | 10. cd EMACS_ROOT_DIR; bzr tag TAG | 91 | 9. 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 | ||
| 68 | 11. Now you should upload the files to the GNU ftp server. In order to | 99 | 10. 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 | 140 | 11. 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 | |||
| 92 | 12. 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 | ||
| 96 | 13. 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. | 146 | 12. 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 | ||
| 100 | 14. For a release, update the Emacs homepage in the web repository. | 151 | 13. 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 | ||
| 28 | GNULIB_MODULES=' | 28 | GNULIB_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 | ||
| 41 | GNULIB_TOOL_FLAGS=' | 43 | GNULIB_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 && |
| 88 | rm -- "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 && | 93 | rm -- "$src"m4/fcntl-o.m4 "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 && |
| 89 | cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc && | 94 | cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc && |
| 90 | cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux && | 95 | cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux && |
| 91 | autoreconf -i -I m4 -- ${src:+"$src"} | 96 | autoreconf -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? |
| 10 | Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org. | 10 | Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org. |
| 11 | If you want to Cc someone, use an "X-Debbugs-CC" header instead. | 11 | If you want to Cc someone, use an "X-Debbugs-CC" header (or |
| 12 | pseudo-header, see below) instead. | ||
| 12 | 13 | ||
| 13 | ** How do I comment on a bug? | 14 | ** How do I comment on a bug? |
| 14 | Reply to a mail on the bug-gnu-emacs list in the normal way. | 15 | Reply 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. | |||
| 52 | ii) Optionally, you can set some database parameters when you first | 53 | ii) Optionally, you can set some database parameters when you first |
| 53 | report a bug (see "Setting bug parameters" below). | 54 | report a bug (see "Setting bug parameters" below). |
| 54 | 55 | ||
| 55 | iii) If you want to CC: someone, use X-Debbugs-CC: (this is important; | 56 | iii) If you want to CC: someone, use X-Debbugs-CC: (note this only |
| 56 | see below). | 57 | applies to _new_ reports, not followups). |
| 57 | 58 | ||
| 58 | Once your report is filed and assigned a number, it is sent out to the | 59 | Once your report is filed and assigned a number, it is sent out to the |
| 59 | bug mailing list. In some cases, it may be appropriate to just file a | 60 | bug 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 | |||
| 92 | you might want to have a dialog with the owner address, outside of | 93 | you might want to have a dialog with the owner address, outside of |
| 93 | normal bug reporting.) | 94 | normal 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. |
| 97 | Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a | 98 | Instead, use "X-Debbugs-CC:". This ensures the Cc address will get a |
| 98 | mail with the bug report number in. If you do not do this, each reply | 99 | mail with the bug report number in. If you do not do this, each reply |
| 99 | in the subsequent discussion will end up creating a new bug. | 100 | in the subsequent discussion might end up creating a new bug. |
| 100 | This is annoying. | 101 | This is annoying. (So annoying that a form of message-id tracking has |
| 102 | been implemented to hopefully stop this happening, but it is still | ||
| 103 | better to use X-Debbugs-CC.) | ||
| 101 | 104 | ||
| 102 | (So annoying that a form of message-id tracking has been implemented | 105 | Like any X-Debbugs- header, this one can also be specified in the |
| 103 | to hopefully stop this happening, but it is still better to use X-Debbugs-CC.) | 106 | pseudo-header (see below), if your mail client does not let you add |
| 107 | "X-" headers. | ||
| 104 | 108 | ||
| 105 | If a new report contains X-Debbugs-CC in the input, this is | 109 | If a new report contains X-Debbugs-CC in the input, this is |
| 106 | converted to a real Cc header in the output. (See Bug#1720). | 110 | converted to a real Cc header in the output. (See Bug#1780,5384) |
| 107 | It is also merged into the Resent-CC header (see below). | 111 | It 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 | |||
| 218 | Version: 23.0.60 | 222 | Version: 23.0.60 |
| 219 | Severity: minor | 223 | Severity: minor |
| 220 | 224 | ||
| 221 | This can also include tags. Some things (e.g. submitter) don't seem to | 225 | This can also include tags, or any X-Debbugs- setting. |
| 222 | work here. | 226 | Some things (e.g. submitter) don't seem to work here. |
| 223 | 227 | ||
| 224 | Otherwise, send mail to the control server, control@debbugs.gnu.org. | 228 | Otherwise, send mail to the control server, control@debbugs.gnu.org. |
| 225 | At the start of the message body, supply the desired commands, one per | 229 | At 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: | |||
| 270 | 1) Anyone can define any valid usertag they like. In contrast, only a | 274 | 1) Anyone can define any valid usertag they like. In contrast, only a |
| 271 | limited, predefined set of normal tags are available (see above). | 275 | limited, predefined set of normal tags are available (see above). |
| 272 | 276 | ||
| 273 | 2) A usertag is associated with a specific email address. | 277 | 2) A usertag is associated with a specific user. This is normally |
| 278 | an email address (with an "@" sign and least 4 characters after the "@"), | ||
| 279 | but on debbugs.gnu.org, the definition is less strict - anything with | ||
| 280 | 5 or more alphanumeric characters will work. For personal tags, | ||
| 281 | using an email address is still recommended. Please only use the | ||
| 282 | "emacs" user, or other short users, for "official" tags. | ||
| 274 | 283 | ||
| 275 | You set usertags in the same way as tags, by talking to the control | 284 | You set usertags in the same way as tags, by talking to the control server. |
| 276 | server. One difference is that you can also specify the associated | 285 | One difference is that you can also specify the associated user. |
| 277 | email address. If you don't explicitly specify an address, then it | 286 | If you don't explicitly specify a user, then it will use the email |
| 278 | will use the one from which you send the control message. The address | 287 | address from which you send the control message. |
| 279 | must have the form of an email address (with an "@" sign and least 4 | ||
| 280 | characters after the "@"). | ||
| 281 | 288 | ||
| 282 | *** Setting usertags | 289 | *** Setting usertags |
| 283 | 290 | ||
| 284 | a) In a control message: | 291 | a) In a control message: |
| 285 | 292 | ||
| 286 | user bug-gnu-emacs@gnu.org | 293 | user emacs # or email@example.com |
| 287 | usertags 1234 any-tag-you-like | 294 | usertags 1234 any-tag-you-like |
| 288 | 295 | ||
| 289 | This will add a usertag "any-tag-you-like" to bug 1234. The tag will | 296 | This will add a usertag "any-tag-you-like" to bug 1234. The tag will |
| 290 | be associated with the address "bug-gnu-emacs@gnu.org". If you omit | 297 | be associated with the user "emacs". If you omit the first line, |
| 291 | the first line, the tag will be associated with your email address. | 298 | the tag will be associated with your email address. |
| 292 | 299 | ||
| 293 | The syntax of the usertags command is the same as that of tags (eg wrt | 300 | The syntax of the usertags command is the same as that of tags (eg wrt |
| 294 | the optional [=+-] argument). | 301 | the optional [=+-] argument). |
| 295 | 302 | ||
| 296 | b) In an initial submission, in the pseudo-header: | 303 | b) In an initial submission, in the pseudo-header: |
| 297 | 304 | ||
| 298 | User: bug-gnu-emacs@gnu.org | 305 | User: emacs |
| 299 | Usertags: a-new-tag | 306 | Usertags: a-new-tag |
| 300 | 307 | ||
| 301 | Again, the "User" is optional. | 308 | Again, 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 | ||
| 315 | http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org | 322 | http://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 |
| 318 | than one email address, but it does not seem to work for me.) | 325 | than 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.) | |||
| 322 | This works just like a normal tags search, but with the addition of a | 329 | This works just like a normal tags search, but with the addition of a |
| 323 | "users" field. Eg: | 330 | "users" field. Eg: |
| 324 | 331 | ||
| 325 | http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org;tag=calendar | 332 | http://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs;tag=calendar |
| 326 | 333 | ||
| 327 | *** To merge bugs: | 334 | *** To merge bugs: |
| 328 | Eg when bad replies create a bunch of new bugs for the same report. | 335 | Eg 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. | |||
| 610 | All discarded messages are stored in /var/lib/mailman/spam. | 617 | All discarded messages are stored in /var/lib/mailman/spam. |
| 611 | If a non-spam message accidentally gets discarded, just do: | 618 | If a non-spam message accidentally gets discarded, just do: |
| 612 | 619 | ||
| 613 | cat /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 |
| 614 | chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/* | 621 | chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/* |
| 615 | ... check it works ... | 622 | ... check it works ... |
| 616 | mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/ | 623 | mv /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/ | |||
| 618 | Also check that the sender was not added to the auto-discard/reject list | 625 | Also check that the sender was not added to the auto-discard/reject list |
| 619 | in the debbugs-submit Mailman interface. | 626 | in the debbugs-submit Mailman interface. |
| 620 | 627 | ||
| 628 | If you don't have the actual mail, just the mailman moderation mail | ||
| 629 | version of it, you need to extract the original mail, and add the | ||
| 630 | following headers: | ||
| 631 | |||
| 632 | 1) The leading envelope From line. | ||
| 633 | 2) Message-ID (get it from /var/log/mailman/vette). | ||
| 634 | 3) X-Debbugs-Envelope-To: xxx | ||
| 635 | For a new report, xxx = submit; for a control message, xxx = control; | ||
| 636 | for a reply to bug#123, xxx = 123 | ||
| 637 | |||
| 638 | Then pipe it to receive as above. | ||
| 639 | |||
| 621 | ** Administrivia | 640 | ** Administrivia |
| 622 | 641 | ||
| 623 | The debbugs-submit list should have the administrivia option off, | 642 | The 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. | |||
| 182 | You could also try `bzr add --file-ids-from', if you have a copy of | 182 | You could also try `bzr add --file-ids-from', if you have a copy of |
| 183 | another branch where file still exists. | 183 | another branch where file still exists. |
| 184 | 184 | ||
| 185 | * Undoing a commit (uncommitting) | ||
| 186 | |||
| 187 | It is possible to undo/remove a bzr commit (ie, to uncommit). | ||
| 188 | Only do this if you really, really, need to. For example, if you | ||
| 189 | somehow made a commit that triggers a bug in bzr itself. | ||
| 190 | Don't do it because you made a typo in a commit or the log. | ||
| 191 | |||
| 192 | If you do need to do this, do it as soon as possible, because the | ||
| 193 | longer you leave it, the more work is involved. | ||
| 194 | |||
| 195 | 0. First, tell emacs-devel that you are going to do this, and suggest | ||
| 196 | people not commit anything to the affected branch for the duration. | ||
| 197 | |||
| 198 | In the following, replace USER with your Savannah username, and | ||
| 199 | BRANCH with the name of the branch. | ||
| 200 | Let's assume that revno 100 is the bad commit, and that there have | ||
| 201 | been two more commits after that (because nothing is ever easy). | ||
| 202 | |||
| 203 | 1. Ensure your copy of the branch is up-to-date (for a bound | ||
| 204 | branch, bzr up; for an unbound branch, bzr pull) and has no local | ||
| 205 | changes (bzr st). | ||
| 206 | |||
| 207 | 2. Make a record of the commits you are going to undo: | ||
| 208 | bzr diff -c 102 > /tmp/102.diff | ||
| 209 | etc | ||
| 210 | |||
| 211 | Also record the commit message, author, and any --fixes information. | ||
| 212 | |||
| 213 | 3. Most Emacs branches are set up to prevent just this kind of thing. | ||
| 214 | So we need to disable that protection: | ||
| 215 | |||
| 216 | bzr config append_revisions_only=False \ | ||
| 217 | -d bzr+ssh://USER@bzr.savannah.gnu.org/emacs/BRANCH/ | ||
| 218 | |||
| 219 | 4. Undo the commits: | ||
| 220 | bzr uncommit -r -4 | ||
| 221 | |||
| 222 | This will show the commits it is going to undo, and prompt you to confirm. | ||
| 223 | |||
| 224 | 5. If using an unbound branch: | ||
| 225 | bzr push --overwrite | ||
| 226 | |||
| 227 | 6. Now, replay the commits you just undid (obviously, fix whatever it | ||
| 228 | was in the bad commit that caused the problem): | ||
| 229 | |||
| 230 | patch -p0 < /tmp/100.diff | ||
| 231 | bzr commit --author ... --fixes ... -F /tmp/100.log | ||
| 232 | etc | ||
| 233 | |||
| 234 | 7. If using an unbound branch: | ||
| 235 | bzr push | ||
| 236 | |||
| 237 | 8. Finally, re-enable the branch protection: | ||
| 238 | bzr config append_revisions_only=True \ | ||
| 239 | -d bzr+ssh://USER@bzr.savannah.gnu.org/emacs/BRANCH/ | ||
| 240 | |||
| 241 | 9. Tell emacs-devel that it is ok to use the branch again. | ||
| 242 | Anyone with local changes should back them up before doing anything. | ||
| 243 | |||
| 244 | For a bound branch, bzr up will convert any of the undone commits to a | ||
| 245 | pending merge. Just bzr revert these away. | ||
| 246 | |||
| 247 | For an unbound branch, bzr pull will complain about diverged branches | ||
| 248 | and refuse to do anything. Use bzr pull --overwrite. | ||
| 249 | |||
| 185 | * Loggerhead | 250 | * Loggerhead |
| 186 | 251 | ||
| 187 | Loggerhead is the bzr tool for viewing a repository over http (similar | 252 | Loggerhead 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 | ||
| 204 | Then point your web-browser to http://127.0.0.1:8080/ . | 269 | Then point your web-browser to http://127.0.0.1:8080/ . |
| 270 | |||
| 271 | * Bisecting | ||
| 272 | |||
| 273 | This is a semi-automated way to find the revision that introduced a bug. | ||
| 274 | |||
| 275 | First, 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 | |||
| 282 | It's probably simplest to make a new copy of the branch to work in | ||
| 283 | from this point onwards. | ||
| 284 | |||
| 285 | Identify the last known "good" revision where the relevant issue is | ||
| 286 | NOT 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 | |||
| 291 | At this point, bzr will switch to the mid-point of revision 1000 and | ||
| 292 | the current revision. If you know that the issue was definitely | ||
| 293 | present in some specific revision (say 2000), you can use: | ||
| 294 | |||
| 295 | bzr bisect yes -r 2000 | ||
| 296 | |||
| 297 | Now bzr switches to revision 1500. | ||
| 298 | |||
| 299 | Now test whether the issue is present. You might need to rebuild | ||
| 300 | Emacs to do this, or if you know the problem is in a specific Lisp | ||
| 301 | file, you might be able to get away with just loading that one file in | ||
| 302 | current Emacs. | ||
| 303 | |||
| 304 | If the issue is present, use | ||
| 305 | |||
| 306 | bzr bisect yes | ||
| 307 | |||
| 308 | If it is not, use | ||
| 309 | |||
| 310 | bzr bisect no | ||
| 311 | |||
| 312 | Repeat until you zero-in on the specific revision. | ||
| 313 | |||
| 314 | When finished, use | ||
| 315 | |||
| 316 | bzr bisect reset | ||
| 317 | |||
| 318 | or simply delete the entire branch if you created it just for this. | ||
| 319 | |||
| 320 | * Commit emails | ||
| 321 | |||
| 322 | ** Old method: bzr-hookless-email | ||
| 323 | https://launchpad.net/bzr-hookless-email | ||
| 324 | |||
| 325 | Runs hourly via cron. Must ask Savannah admins to enable/disable it | ||
| 326 | for each branch. Stores the last revision that it mailed as | ||
| 327 | last_revision_mailed in branch.conf on the server. Breaks with bzr 2.6: | ||
| 328 | |||
| 329 | http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00000.html | ||
| 330 | |||
| 331 | Fix from https://bugs.launchpad.net/bzr-hookless-email/+bug/988195 | ||
| 332 | only partially works. Breaks again on every merge commit: | ||
| 333 | |||
| 334 | https://lists.ubuntu.com/archives/bazaar/2013q2/075520.html | ||
| 335 | http://lists.gnu.org/archive/html/savannah-hackers-public/2013-05/msg00024.html | ||
| 336 | |||
| 337 | You can force it to skip the merge commit by changing the value for | ||
| 338 | last_revision_mailed, eg: | ||
| 339 | |||
| 340 | bzr 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 | ||
| 343 | https://launchpad.net/bzr-email | ||
| 344 | http://lists.gnu.org/archive/html/savannah-hackers-public/2013-06/msg00007.html | ||
| 345 | |||
| 346 | Runs on commit. Projects can enable it themselves by using `bzr | ||
| 347 | config' to set post_commit_to option for a branch. See `bzr help email' | ||
| 348 | (if you have the plugin installed) for other options. | ||
| 349 | |||
| 350 | Note: if you have the bzr-email plugin installed locally, then when | ||
| 351 | you commit to the Emacs repository it will also try to send a commit | ||
| 352 | email from your local machine. If your machine is not configured to | ||
| 353 | send external mail, this will just fail. In any case, you may prefer | ||
| 354 | to either remove the plugin from your machine, or disable it for Emacs | ||
| 355 | branches. You can do this either by editing branch.conf in your Emacs | ||
| 356 | branches, to override the server setting (untested; not sure this | ||
| 357 | works), or by adding an entry to ~/.bazaar/locations.conf: | ||
| 358 | |||
| 359 | [bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/*/] | ||
| 360 | post_commit_to = "" | ||
| 361 | |||
| 362 | You have to use locations.conf rather than bazaar.conf because the | ||
| 363 | latter 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 @@ | |||
| 1 | Copyright (C) 2007-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2007-2013 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See the end of the file for license conditions. |
| 3 | 3 | ||
| 4 | 4 | ||
| @@ -380,7 +380,7 @@ Makefile.in does now. | |||
| 380 | src/gmalloc.c | 380 | src/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 | ||
| 383 | src/ndir.h | 383 | nt/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 | ||
| 431 | etc/e/eterm-color.ti | 431 | etc/e/eterm-color.ti |
| 432 | src/ndir.h | 432 | nt/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 @@ | |||
| 1 | Copyright (C) 2002-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2002-2013 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See 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 @@ | |||
| 1 | Some lisp/emacs-lisp/ Features and Where They Are Documented | 1 | Some lisp/emacs-lisp/ Features and Where They Are Documented |
| 2 | 2 | ||
| 3 | Copyright (C) 2007-2012 Free Software Foundation, Inc. | 3 | Copyright (C) 2007-2013 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. | 4 | See 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 | ||
| 3 | Copyright (C) 2007-2012 Free Software Foundation, Inc. | 3 | Copyright (C) 2007-2013 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. | 4 | See the end of the file for license conditions. |
| 5 | 5 | ||
| 6 | From README.multi-tty in the multi-tty branch. | 6 | From 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 | ||
| 3 | Copyright (C) 2002-2012 Free Software Foundation, Inc. | 3 | Copyright (C) 2002-2013 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. | 4 | See the end of the file for license conditions. |
| 5 | 5 | ||
| 6 | Problems, fixmes and other unicode-related issues | 6 | Problems, 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 | |||
| 102 | Source file encoding | ||
| 103 | -------------------- | ||
| 104 | |||
| 105 | Most Emacs source files are encoded in UTF-8 (or in ASCII, which is a | ||
| 106 | subset), but there are a few exceptions, listed below. Perhaps | ||
| 107 | someday many of these files will be converted to UTF-8, for | ||
| 108 | convenience when using tools like 'grep -r', but this might need | ||
| 109 | nontrivial 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 | ||
| 102 | This file is part of GNU Emacs. | 230 | This 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 @@ | |||
| 1 | Copyright (C) 2001-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2001-2013 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See 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 @@ | |||
| 1 | Copyright (C) 2001-2012 Free Software Foundation, Inc. | 1 | Copyright (C) 2001-2013 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See 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 | |||
| 288 | GNU General Public License for more details. | 288 | GNU General Public License for more details. |
| 289 | 289 | ||
| 290 | You should have received a copy of the GNU General Public License | 290 | You should have received a copy of the GNU General Public License |
| 291 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | 291 | along 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 | ||
| 106 | Optionally, $me can also remove old versions of | 106 | Optionally, $me can also remove old versions of |
| 107 | automatically generated files that are version-specific (such as the | 107 | automatically generated files that are version-specific (such as the |
| 108 | versioned emacs executables in the \`src' directory, and the DOC-* files | 108 | versioned emacs executables in the \`src' directory). |
| 109 | in the \`etc' directory). The latter action is called \`pruning,' and | 109 | The latter action is called \`pruning,' and |
| 110 | can be enabled using the \`-p' or \`--prune' options. | 110 | can be enabled using the \`-p' or \`--prune' options. |
| 111 | EOF | 111 | EOF |
| 112 | exit 0 | 112 | exit 0 |
| @@ -209,10 +209,6 @@ maybe_mkdir "$DST_INFO" | |||
| 209 | 209 | ||
| 210 | PRUNED="" | 210 | PRUNED="" |
| 211 | if test x"$PRUNE" != xno; then | 211 | if 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 | ||
| 60 | 0028; 0029 # LEFT PARENTHESIS | 53 | 0028; 0029 # LEFT PARENTHESIS |
| 61 | 0029; 0028 # RIGHT PARENTHESIS | 54 | 0029; 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 @@ | |||
| 7190 | 20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; | 7190 | 20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; |
| 7191 | 20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; | 7191 | 20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; |
| 7192 | 20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;; | 7192 | 20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;; |
| 7193 | 20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;; | ||
| 7193 | 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; | 7194 | 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; |
| 7194 | 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; | 7195 | 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; |
| 7195 | 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; | 7196 | 20D2;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;;;;; | |||
| 18703 | 1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; | 18704 | 1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; |
| 18704 | 12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; | 18705 | 12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; |
| 18705 | 12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; | 18706 | 12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; |
| 18706 | 12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; | 18707 | 12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;; |
| 18707 | 12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; | 18708 | 12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;; |
| 18708 | 12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; | 18709 | 12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; |
| 18709 | 12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; | 18710 | 12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; |
| 18710 | 12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; | 18711 | 12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; |
| @@ -18739,8 +18740,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; | |||
| 18739 | 12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; | 18740 | 12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; |
| 18740 | 12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; | 18741 | 12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; |
| 18741 | 12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; | 18742 | 12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; |
| 18742 | 12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; | 18743 | 12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;; |
| 18743 | 12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; | 18744 | 12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;; |
| 18744 | 12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; | 18745 | 12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; |
| 18745 | 12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; | 18746 | 12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; |
| 18746 | 1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; | 18747 | 1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; |