Now on revision 111951. ------------------------------------------------------------ revno: 111951 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-03-05 22:26:55 -0800 message: Mention GZIP_PROG in INSTALL. diff: === modified file 'INSTALL' --- INSTALL 2013-01-01 09:11:05 +0000 +++ INSTALL 2013-03-06 06:26:55 +0000 @@ -656,7 +656,7 @@ path variables - `bindir' and `libexecdir'. The above variables serve analogous purposes in the makefiles for all -GNU software; the following variable is specific to Emacs. +GNU software; the following variables are specific to Emacs. `archlibdir' indicates where Emacs installs and expects the executable files and other architecture-dependent data it uses while @@ -664,6 +664,10 @@ see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' (where VERSION and CONFIGURATION-NAME are as described above). +`GZIP_PROG' is the name of the executable that compresses installed info, + manual, and .el files. It defaults to gzip. Setting it to + the empty string suppresses compression. + Remember that you must specify any variable values you need each time you run `make' in the top directory. If you run `make' once to build emacs, test it, and then run `make' again to install the files, you ------------------------------------------------------------ revno: 111950 committer: Katsumi Yamaoka branch nick: trunk timestamp: Wed 2013-03-06 03:55:49 +0000 message: lisp/gnus/nndir.el (nndir-request-list): Remove 2nd argument passed to nnml-request-list (Bug#13873) diff: === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2013-03-04 10:27:33 +0000 +++ lisp/gnus/ChangeLog 2013-03-06 03:55:49 +0000 @@ -1,3 +1,11 @@ +2013-03-06 Katsumi Yamaoka + + * nndir.el (nndir-request-list): Remove 2nd argument passed to + nnml-request-list. (Bug#13873) + (nndir-request-newsgroups): Remove, unused. + + * nndraft.el (nndraft-request-newsgroups): Remove, unused. + 2013-03-03 Ted Phelps * shr.el: Make all the overlays set the `evaporate' property so that === modified file 'lisp/gnus/nndir.el' --- lisp/gnus/nndir.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/nndir.el 2013-03-06 03:55:49 +0000 @@ -90,8 +90,7 @@ (nnml-request-article 0 nndir-current-group 0 0) (nnmh-request-group nndir-current-group 0 0) (nnml-close-group nndir-current-group 0) - (nnml-request-list (nnoo-current-server 'nndir) nndir-directory) - (nnml-request-newsgroups (nnoo-current-server 'nndir) nndir-directory)) + (nnml-request-list (nnoo-current-server 'nndir))) (provide 'nndir) === modified file 'lisp/gnus/nndraft.el' --- lisp/gnus/nndraft.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/nndraft.el 2013-03-06 03:55:49 +0000 @@ -346,8 +346,7 @@ nnmh-retrieve-headers nnmh-request-group nnmh-close-group - nnmh-request-list - nnmh-request-newsgroups)) + nnmh-request-list)) (provide 'nndraft) ------------------------------------------------------------ revno: 111949 committer: Dmitry Antipov branch nick: trunk timestamp: Wed 2013-03-06 03:08:11 +0400 message: * lisp.h (find_next_newline_no_quit): Rename to find_next_newline. * xdisp.c (back_to_previous_line_start, forward_to_next_line_start) (get_visually_first_element, move_it_vertically_backward): Ajust users. * bidi.c (bidi_find_paragraph_start): Likewise. * indent.c (vmotion): Likewise. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-05 22:35:41 +0000 +++ src/ChangeLog 2013-03-05 23:08:11 +0000 @@ -1,3 +1,11 @@ +2013-03-06 Dmitry Antipov + + * lisp.h (find_next_newline_no_quit): Rename to find_next_newline. + * xdisp.c (back_to_previous_line_start, forward_to_next_line_start) + (get_visually_first_element, move_it_vertically_backward): Ajust users. + * bidi.c (bidi_find_paragraph_start): Likewise. + * indent.c (vmotion): Likewise. + 2013-03-05 Paul Eggert FILE's lock is now always .#FILE and may be a regular file (Bug#13807). === modified file 'src/bidi.c' --- src/bidi.c 2013-03-05 18:12:25 +0000 +++ src/bidi.c 2013-03-05 23:08:11 +0000 @@ -1108,7 +1108,7 @@ display string? And what if a display string covering some of the text over which we scan back includes paragraph_start_re? */ - pos = find_next_newline_no_quit (pos - 1, -1, &pos_byte); + pos = find_next_newline (pos - 1, -1, &pos_byte); if (n >= MAX_PARAGRAPH_SEARCH) pos_byte = BEGV_BYTE; return pos_byte; === modified file 'src/indent.c' --- src/indent.c 2013-02-20 05:18:20 +0000 +++ src/indent.c 2013-03-05 23:08:11 +0000 @@ -1843,7 +1843,7 @@ ptrdiff_t bytepos; Lisp_Object propval; - prevline = find_next_newline_no_quit (from - 1, -1, &bytepos); + prevline = find_next_newline (from - 1, -1, &bytepos); while (prevline > BEGV && ((selective > 0 && indented_beyond_p (prevline, bytepos, selective)) @@ -1853,7 +1853,7 @@ Qinvisible, text_prop_object), TEXT_PROP_MEANS_INVISIBLE (propval)))) - prevline = find_next_newline_no_quit (prevline - 1, -1, &bytepos); + prevline = find_next_newline (prevline - 1, -1, &bytepos); pos = *compute_motion (prevline, 0, lmargin, 0, @@ -1894,7 +1894,7 @@ ptrdiff_t bytepos; Lisp_Object propval; - prevline = find_next_newline_no_quit (from, -1, &bytepos); + prevline = find_next_newline (from, -1, &bytepos); while (prevline > BEGV && ((selective > 0 && indented_beyond_p (prevline, bytepos, selective)) @@ -1904,7 +1904,7 @@ Qinvisible, text_prop_object), TEXT_PROP_MEANS_INVISIBLE (propval)))) - prevline = find_next_newline_no_quit (prevline - 1, -1, &bytepos); + prevline = find_next_newline (prevline - 1, -1, &bytepos); pos = *compute_motion (prevline, 0, lmargin, 0, === modified file 'src/lisp.h' --- src/lisp.h 2013-03-02 20:10:05 +0000 +++ src/lisp.h 2013-03-05 23:08:11 +0000 @@ -3346,8 +3346,7 @@ ptrdiff_t *, ptrdiff_t *, bool); extern EMACS_INT scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, EMACS_INT, bool); -extern ptrdiff_t find_next_newline (ptrdiff_t, int); -extern ptrdiff_t find_next_newline_no_quit (ptrdiff_t, ptrdiff_t, ptrdiff_t *); +extern ptrdiff_t find_next_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern void syms_of_search (void); === modified file 'src/search.c' --- src/search.c 2013-02-20 05:18:20 +0000 +++ src/search.c 2013-03-05 23:08:11 +0000 @@ -942,7 +942,7 @@ } ptrdiff_t -find_next_newline_no_quit (ptrdiff_t from, ptrdiff_t cnt, ptrdiff_t *bytepos) +find_next_newline (ptrdiff_t from, ptrdiff_t cnt, ptrdiff_t *bytepos) { return find_newline (from, 0, cnt, NULL, bytepos, 0); } === modified file 'src/xdisp.c' --- src/xdisp.c 2013-02-24 19:45:17 +0000 +++ src/xdisp.c 2013-03-05 23:08:11 +0000 @@ -5906,8 +5906,7 @@ back_to_previous_line_start (struct it *it) { IT_CHARPOS (*it) - = find_next_newline_no_quit (IT_CHARPOS (*it) - 1, - -1, &IT_BYTEPOS (*it)); + = find_next_newline (IT_CHARPOS (*it) - 1, -1, &IT_BYTEPOS (*it)); } @@ -5979,7 +5978,7 @@ if (!newline_found_p) { ptrdiff_t bytepos, start = IT_CHARPOS (*it); - ptrdiff_t limit = find_next_newline_no_quit (start, 1, &bytepos); + ptrdiff_t limit = find_next_newline (start, 1, &bytepos); Lisp_Object pos; eassert (!STRINGP (it->string)); @@ -7434,8 +7433,7 @@ it->bidi_it.charpos = it->bidi_it.bytepos = 0; else it->bidi_it.charpos - = find_next_newline_no_quit (IT_CHARPOS (*it), -1, - &it->bidi_it.bytepos); + = find_next_newline (IT_CHARPOS (*it), -1, &it->bidi_it.bytepos); bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); do { @@ -9070,7 +9068,7 @@ && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n') { ptrdiff_t nl_pos = - find_next_newline_no_quit (IT_CHARPOS (*it) - 1, -1, NULL); + find_next_newline (IT_CHARPOS (*it) - 1, -1, NULL); move_it_to (it, nl_pos, -1, -1, -1, MOVE_TO_POS); } ------------------------------------------------------------ revno: 111948 fixes bug: http://debbugs.gnu.org/13807 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-03-05 14:35:41 -0800 message: FILE's lock is now always .#FILE and may be a regular file. * etc/NEWS: Document this. * nt/inc/unistd.h (O_NOFOLLOW): New macro. * src/filelock.c: Include . (MAX_LFINFO): New top-level constant. (lock_info_type): Remove members pid, boot_time. Add members at, dot, colon. Change user member to be the entire buffer, not a pointer. This allows us to handle the case where a foreign pid or boot time exceeds the local range. All uses changed. (LINKS_MIGHT_NOT_WORK): New constant. (FREE_LOCK_INFO): Remove, as the pieces no longer need freeing. (defined_WINDOWSNT): Remove. (MAKE_LOCK_NAME, file_in_lock_file_name): Always use .#FILE (not .#-FILE) for the file lock, even if it is a regular file. (rename_lock_file): New function. (create_lock_file): Use it. (create_lock_file, read_lock_data): Prefer a symbolic link for the lock file, falling back on a regular file if symlinks don't work. Do not try to create symlinks on MS-Windows, due to security hassles. Stick with POSIXish functions (open, read, write, close, fchmod, readlink, symlink, link, rename, unlink, mkstemp) when creating locks, as a GNUish host may be using a Windowsish file system, and cannot use MS-Windows-only system calls. Fall back on mktemp if mkstemp doesn't work. Don't fail merely because of a symlink-contents length limit in the current file system; fall back on regular files. Increase the symlink contents length limit to 8 KiB, this should be big enough for any real use and doesn't crunch the stack. (create_lock_file, lock_file_1, read_lock_data): Simplify allocation of lock file buffers now that they fit in 8 KiB. (lock_file_1): Return error number, not bool. All callers changed. (ELOOP): New macro, if not already defined. (read_lock_data): Return size of lock file contents, not Lisp object. All callers changed. Handle a race condition if some other process replaces a regular-file lock with a symlink lock or vice versa, while we're trying to read the lock. (current_lock_owner): Parse contents more carefully, to help avoid confusing a regular-file lock with some other application's use of the file. Check for lock file contents being too long, or not parsing correctly. (current_lock_owner, lock_file): Allow foreign pid and boot times that exceed the local range. (current_lock_owner, lock_if_free, lock_file): Simplify allocation of lock file contents. * src/w32.c (sys_rename_replace): New function, containing most of the contents of the old sys_rename. (sys_rename): Use it. (fchmod): New dummy function. * src/w32.h (sys_rename_replace, fchmod): New decls. diff: === modified file 'configure.ac' --- configure.ac 2013-03-05 03:59:35 +0000 +++ configure.ac 2013-03-05 22:35:41 +0000 @@ -594,7 +594,8 @@ test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS" fi -# Avoid gnulib's tests for O_NOATIME and O_NOFOLLOW, as we don't use them. +# Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, +# as we don't use them. AC_DEFUN([gl_FCNTL_O_FLAGS]) # Avoid gnulib's threadlib module, as we do threads our own way. AC_DEFUN([gl_THREADLIB]) === modified file 'etc/ChangeLog' --- etc/ChangeLog 2013-03-03 00:02:19 +0000 +++ etc/ChangeLog 2013-03-05 22:35:41 +0000 @@ -1,3 +1,8 @@ +2013-03-05 Paul Eggert + + FILE's lock is now always .#FILE and may be a regular file (Bug#13807). + * NEWS: Document this. + 2013-03-02 Bill Wohler Release MH-E version 8.5. === modified file 'etc/NEWS' --- etc/NEWS 2013-03-03 00:02:19 +0000 +++ etc/NEWS 2013-03-05 22:35:41 +0000 @@ -320,7 +320,7 @@ ** The `defalias-fset-function' property lets you catch calls to defalias and redirect them to your own function instead of `fset'. -** The lock for 'DIR/FILE' is now 'DIR/.#FILE' or 'DIR/.#-FILE'. +** The lock for 'DIR/FILE' is now 'DIR/.#FILE' and may be a regular file. When you edit DIR/FILE, Emacs normally creates a symbolic link DIR/.#FILE as a lock that warns other instances of Emacs that DIR/FILE is being edited. Formerly, if there was already a non-symlink file @@ -328,9 +328,8 @@ through DIR/.#FILE.9. These fallbacks have been removed, so that Emacs now no longer locks DIR/FILE in that case. -On MS-Windows the lock is a regular file DIR/.#-FILE, not a symlink. -MS-Windows and non-MS-Windows implementations of Emacs ignore each -other's locks. +On file systems that do not support symbolic links, the lock is now a +regular file with contents being what would have been in the symlink. ** The 9th element returned by `file-attributes' is now unspecified. Formerly, it was t if the file's gid would change if file were deleted === modified file 'nt/ChangeLog' --- nt/ChangeLog 2013-03-04 17:14:08 +0000 +++ nt/ChangeLog 2013-03-05 22:35:41 +0000 @@ -1,3 +1,8 @@ +2013-03-05 Paul Eggert + + FILE's lock is now always .#FILE and may be a regular file (Bug#13807). + * inc/unistd.h (O_NOFOLLOW): New macro. + 2013-03-04 Juanma Barranquero * config.nt: Sync with autogen/config.in. === modified file 'nt/inc/unistd.h' --- nt/inc/unistd.h 2013-02-01 06:30:51 +0000 +++ nt/inc/unistd.h 2013-03-05 22:35:41 +0000 @@ -27,8 +27,9 @@ #define AT_EACCESS 4 #define AT_SYMLINK_NOFOLLOW 4096 +#define O_IGNORE_CTTY 0 #define O_NOCTTY 0 -#define O_IGNORE_CTTY 0 +#define O_NOFOLLOW 0 /* This is normally on stdlib.h, but we don't override that header. */ extern int unsetenv (const char *); === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-05 18:12:25 +0000 +++ src/ChangeLog 2013-03-05 22:35:41 +0000 @@ -1,3 +1,55 @@ +2013-03-05 Paul Eggert + + FILE's lock is now always .#FILE and may be a regular file (Bug#13807). + * filelock.c: Include . + (MAX_LFINFO): New top-level constant. + (lock_info_type): Remove members pid, boot_time. Add members at, + dot, colon. Change user member to be the entire buffer, not a + pointer. This allows us to handle the case where a foreign + pid or boot time exceeds the local range. All uses changed. + (LINKS_MIGHT_NOT_WORK): New constant. + (FREE_LOCK_INFO): Remove, as the pieces no longer need freeing. + (defined_WINDOWSNT): Remove. + (MAKE_LOCK_NAME, file_in_lock_file_name): + Always use .#FILE (not .#-FILE) for the file lock, + even if it is a regular file. + (rename_lock_file): New function. + (create_lock_file): Use it. + (create_lock_file, read_lock_data): + Prefer a symbolic link for the lock file, falling back on a + regular file if symlinks don't work. Do not try to create + symlinks on MS-Windows, due to security hassles. Stick with + POSIXish functions (open, read, write, close, fchmod, readlink, symlink, + link, rename, unlink, mkstemp) when creating locks, as a GNUish + host may be using a Windowsish file system, and cannot use + MS-Windows-only system calls. Fall back on mktemp if mkstemp + doesn't work. Don't fail merely because of a symlink-contents + length limit in the current file system; fall back on regular + files. Increase the symlink contents length limit to 8 KiB, this + should be big enough for any real use and doesn't crunch the + stack. + (create_lock_file, lock_file_1, read_lock_data): + Simplify allocation of lock file buffers now that they fit in 8 KiB. + (lock_file_1): Return error number, not bool. All callers changed. + (ELOOP): New macro, if not already defined. + (read_lock_data): Return size of lock file contents, not Lisp object. + All callers changed. Handle a race condition if some other process + replaces a regular-file lock with a symlink lock or vice versa, + while we're trying to read the lock. + (current_lock_owner): Parse contents more carefully, to help avoid + confusing a regular-file lock with some other application's use + of the file. Check for lock file contents being too long, or + not parsing correctly. + (current_lock_owner, lock_file): + Allow foreign pid and boot times that exceed the local range. + (current_lock_owner, lock_if_free, lock_file): + Simplify allocation of lock file contents. + * w32.c (sys_rename_replace): New function, containing most of + the contents of the old sys_rename. + (sys_rename): Use it. + (fchmod): New dummy function. + * w32.h (sys_rename_replace, fchmod): New decls. + 2013-03-05 Eli Zaretskii * bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or === modified file 'src/filelock.c' --- src/filelock.c 2013-03-02 21:05:52 +0000 +++ src/filelock.c 2013-03-05 22:35:41 +0000 @@ -38,6 +38,8 @@ #include +#include + #include "lisp.h" #include "character.h" #include "buffer.h" @@ -64,7 +66,7 @@ #define WTMP_FILE "/var/log/wtmp" #endif -/* On non-MS-Windows systems, use a symbolic link to represent a lock. +/* Normally use a symbolic link to represent a lock. The strategy: to lock a file FN, create a symlink .#FN in FN's directory, with link data `user@host.pid'. This avoids a single mount (== failure) point for lock files. @@ -100,10 +102,21 @@ --karl@cs.umb.edu/karl@hq.ileaf.com. - On MS-Windows, symbolic links do not work well, so instead of a - symlink .#FN -> 'user@host.pid', the lock is a regular file .#-FN - with contents 'user@host.pid'. MS-Windows and non-MS-Windows - versions of Emacs ignore each other's locks. */ + On some file systems, notably those of MS-Windows, symbolic links + do not work well, so instead of a symlink .#FN -> 'user@host.pid', + the lock is a regular file .#FN with contents 'user@host.pid'. To + establish a lock, a nonce file is created and then renamed to .#FN. + On MS-Windows this renaming is atomic unless the lock is forcibly + acquired. On other systems the renaming is atomic if the lock is + forcibly acquired; if not, the renaming is done via hard links, + which is good enough for lock-file purposes. + + To summarize, race conditions can occur with either: + + * Forced locks on MS-Windows systems. + + * Non-forced locks on non-MS-Windows systems that support neither + hard nor symbolic links. */ /* Return the time of the last system boot. */ @@ -284,30 +297,31 @@ } #endif /* BOOT_TIME */ +/* An arbitrary limit on lock contents length. 8 K should be plenty + big enough in practice. */ +enum { MAX_LFINFO = 8 * 1024 }; + /* Here is the structure that stores information about a lock. */ typedef struct { - char *user; - char *host; - pid_t pid; - time_t boot_time; + /* Location of '@', '.', ':' in USER. If there's no colon, COLON + points to the end of USER. */ + char *at, *dot, *colon; + + /* Lock file contents USER@HOST.PID with an optional :BOOT_TIME + appended. This memory is used as a lock file contents buffer, so + it needs room for MAX_LFINFO + 1 bytes. A string " (pid NNNN)" + may be appended to the USER@HOST while generating a diagnostic, + so make room for its extra bytes (as opposed to ".NNNN") too. */ + char user[MAX_LFINFO + 1 + sizeof " (pid )" - sizeof "."]; } lock_info_type; -/* Free the two dynamically-allocated pieces in PTR. */ -#define FREE_LOCK_INFO(i) do { xfree ((i).user); xfree ((i).host); } while (0) - -#ifdef WINDOWSNT -enum { defined_WINDOWSNT = 1 }; -#else -enum { defined_WINDOWSNT = 0 }; -#endif - /* Write the name of the lock file for FNAME into LOCKNAME. Length - will be that of FNAME plus two more for the leading ".#", - plus one for "-" if MS-Windows, plus one for the null. */ + will be that of FNAME plus two more for the leading ".#", plus one + for the null. */ #define MAKE_LOCK_NAME(lockname, fname) \ - (lockname = SAFE_ALLOCA (SBYTES (fname) + 2 + defined_WINDOWSNT + 1), \ + (lockname = SAFE_ALLOCA (SBYTES (fname) + 2 + 1), \ fill_in_lock_file_name (lockname, fname)) static void @@ -319,70 +333,131 @@ memcpy (lockfile, SSDATA (fn), dirlen); lockfile[dirlen] = '.'; lockfile[dirlen + 1] = '#'; - if (defined_WINDOWSNT) - lockfile[dirlen + 2] = '-'; - strcpy (lockfile + dirlen + 2 + defined_WINDOWSNT, base); -} + strcpy (lockfile + dirlen + 2, base); +} + +/* For some reason Linux kernels return EPERM on file systems that do + not support hard or symbolic links. This symbol documents the quirk. + There is no way to tell whether a symlink call fails due to + permissions issues or because links are not supported, but luckily + the lock file code should work either way. */ +enum { LINKS_MIGHT_NOT_WORK = EPERM }; + +/* Rename OLD to NEW. If FORCE, replace any existing NEW. + It is OK if there are temporarily two hard links to OLD. + Return 0 if successful, -1 (setting errno) otherwise. */ +static int +rename_lock_file (char const *old, char const *new, bool force) +{ +#ifdef WINDOWSNT + return sys_rename_replace (old, new, force); +#else + if (! force) + { + struct stat st; + + if (link (old, new) == 0) + return unlink (old) == 0 || errno == ENOENT ? 0 : -1; + if (errno != ENOSYS && errno != LINKS_MIGHT_NOT_WORK) + return -1; + + /* 'link' does not work on this file system. This can occur on + a GNU/Linux host mounting a FAT32 file system. Fall back on + 'rename' after checking that NEW does not exist. There is a + potential race condition since some other process may create + NEW immediately after the existence check, but it's the best + we can portably do here. */ + if (lstat (new, &st) == 0 || errno == EOVERFLOW) + { + errno = EEXIST; + return -1; + } + if (errno != ENOENT) + return -1; + } + + return rename (old, new); +#endif +} + +/* Create the lock file FILE with contents CONTENTS. Return 0 if + successful, an errno value on failure. If FORCE, remove any + existing FILE if necessary. */ static int create_lock_file (char *lfname, char *lock_info_str, bool force) { - int err; - #ifdef WINDOWSNT - /* Symlinks are supported only by latest versions of Windows, and - creating them is a privileged operation that often triggers UAC - elevation prompts. Therefore, instead of using symlinks, we - create a regular file with the lock info written as its - contents. */ - { - /* Deny everybody else any kind of access to the file until we are - done writing it and close the handle. This makes the entire - open/write/close operation atomic, as far as other WINDOWSNT - processes are concerned. */ - int fd = _sopen (lfname, - _O_WRONLY | _O_BINARY | _O_CREAT | _O_EXCL | _O_NOINHERIT, - _SH_DENYRW, S_IREAD | S_IWRITE); - - if (fd < 0 && errno == EEXIST && force) - fd = _sopen (lfname, _O_WRONLY | _O_BINARY | _O_TRUNC |_O_NOINHERIT, - _SH_DENYRW, S_IREAD | S_IWRITE); - if (fd >= 0) - { - ssize_t lock_info_len = strlen (lock_info_str); - - err = 0; - if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len) - err = -1; - if (emacs_close (fd)) - err = -1; - } - else - err = -1; - } + /* Symlinks are supported only by later versions of Windows, and + creating them is a privileged operation that often triggers + User Account Control elevation prompts. Avoid the problem by + pretending that 'symlink' does not work. */ + int err = ENOSYS; #else - err = symlink (lock_info_str, lfname); - if (err != 0 && errno == EEXIST && force) + int err = symlink (lock_info_str, lfname) == 0 ? 0 : errno; +#endif + + if (err == EEXIST && force) { unlink (lfname); - err = symlink (lock_info_str, lfname); + err = symlink (lock_info_str, lfname) == 0 ? 0 : errno; } + + if (err == ENOSYS || err == LINKS_MIGHT_NOT_WORK || err == ENAMETOOLONG) + { + static char const nonce_base[] = ".#-emacsXXXXXX"; + char *last_slash = strrchr (lfname, '/'); + ptrdiff_t lfdirlen = last_slash + 1 - lfname; + USE_SAFE_ALLOCA; + char *nonce = SAFE_ALLOCA (lfdirlen + sizeof nonce_base); + int fd; + bool need_fchmod; + mode_t world_readable = S_IRUSR | S_IRGRP | S_IROTH; + memcpy (nonce, lfname, lfdirlen); + strcpy (nonce + lfdirlen, nonce_base); + +#if HAVE_MKSTEMP + /* Prefer mkstemp if available, as it avoids a race between + mktemp and emacs_open. */ + fd = mkstemp (nonce); + need_fchmod = 1; +#else + mktemp (nonce); + fd = emacs_open (nonce, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, + world_readable); + need_fchmod = 0; #endif + if (fd < 0) + err = errno; + else + { + ptrdiff_t lock_info_len = strlen (lock_info_str); + err = 0; + if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len + || (need_fchmod && fchmod (fd, world_readable) != 0)) + err = errno; + if (emacs_close (fd) != 0) + err = errno; + if (!err && rename_lock_file (nonce, lfname, force) != 0) + err = errno; + if (err) + unlink (nonce); + } + + SAFE_FREE (); + } + return err; } /* Lock the lock file named LFNAME. If FORCE, do so even if it is already locked. - Return true if successful. */ + Return 0 if successful, an error number on failure. */ -static bool +static int lock_file_1 (char *lfname, bool force) { - int err; - int symlink_errno; - USE_SAFE_ALLOCA; - /* Call this first because it can GC. */ printmax_t boot = get_boot_time (); @@ -390,20 +465,16 @@ char const *user_name = STRINGP (luser_name) ? SSDATA (luser_name) : ""; Lisp_Object lhost_name = Fsystem_name (); char const *host_name = STRINGP (lhost_name) ? SSDATA (lhost_name) : ""; - ptrdiff_t lock_info_size = (strlen (user_name) + strlen (host_name) - + 2 * INT_STRLEN_BOUND (printmax_t) - + sizeof "@.:"); - char *lock_info_str = SAFE_ALLOCA (lock_info_size); + char lock_info_str[MAX_LFINFO + 1]; printmax_t pid = getpid (); - esprintf (lock_info_str, boot ? "%s@%s.%"pMd":%"pMd : "%s@%s.%"pMd, - user_name, host_name, pid, boot); - err = create_lock_file (lfname, lock_info_str, force); + if (sizeof lock_info_str + <= snprintf (lock_info_str, sizeof lock_info_str, + boot ? "%s@%s.%"pMd":%"pMd : "%s@%s.%"pMd, + user_name, host_name, pid, boot)) + return ENAMETOOLONG; - symlink_errno = errno; - SAFE_FREE (); - errno = symlink_errno; - return err == 0; + return create_lock_file (lfname, lock_info_str, force); } /* Return true if times A and B are no more than one second apart. */ @@ -414,32 +485,44 @@ return (a - b >= -1 && a - b <= 1); } -static Lisp_Object -read_lock_data (char *lfname) +/* On systems lacking ELOOP, test for an errno value that shouldn't occur. */ +#ifndef ELOOP +# define ELOOP (-1) +#endif + +/* Read the data for the lock file LFNAME into LFINFO. Read at most + MAX_LFINFO + 1 bytes. Return the number of bytes read, or -1 + (setting errno) on error. */ + +static ptrdiff_t +read_lock_data (char *lfname, char lfinfo[MAX_LFINFO + 1]) { -#ifndef WINDOWSNT - return emacs_readlinkat (AT_FDCWD, lfname); -#else - int fd = emacs_open (lfname, O_RDONLY | O_BINARY, S_IREAD); - ssize_t nbytes; - /* 256 chars for user, 1024 chars for host, 10 digits for each of 2 int's. */ - enum { MAX_LFINFO = 256 + 1024 + 10 + 10 + 2 }; - char lfinfo[MAX_LFINFO + 1]; - - if (fd < 0) - return Qnil; - - nbytes = emacs_read (fd, lfinfo, MAX_LFINFO); - emacs_close (fd); - - if (nbytes > 0) + ptrdiff_t nbytes; + + while ((nbytes = readlinkat (AT_FDCWD, lfname, lfinfo, MAX_LFINFO + 1)) < 0 + && errno == EINVAL) { - lfinfo[nbytes] = '\0'; - return build_string (lfinfo); + int fd = emacs_open (lfname, O_RDONLY | O_BINARY | O_NOFOLLOW, 0); + if (0 <= fd) + { + ptrdiff_t read_bytes = emacs_read (fd, lfinfo, MAX_LFINFO + 1); + int read_errno = errno; + if (emacs_close (fd) != 0) + return -1; + errno = read_errno; + return read_bytes; + } + + if (errno != ELOOP) + return -1; + + /* readlinkat saw a non-symlink, but emacs_open saw a symlink. + The former must have been removed and replaced by the latter. + Try again. */ + QUIT; } - else - return Qnil; -#endif + + return nbytes; } /* Return 0 if nobody owns the lock file LFNAME or the lock is obsolete, @@ -451,83 +534,78 @@ current_lock_owner (lock_info_type *owner, char *lfname) { int ret; - ptrdiff_t len; lock_info_type local_owner; - intmax_t n; - char *at, *dot, *colon; - Lisp_Object lfinfo_object = read_lock_data (lfname); - char *lfinfo; - struct gcpro gcpro1; - - /* If nonexistent lock file, all is well; otherwise, got strange error. */ - if (NILP (lfinfo_object)) - return errno == ENOENT ? 0 : -1; - lfinfo = SSDATA (lfinfo_object); + ptrdiff_t lfinfolen; + intmax_t pid, boot_time; + char *at, *dot, *lfinfo_end; /* Even if the caller doesn't want the owner info, we still have to read it to determine return value. */ if (!owner) owner = &local_owner; + /* If nonexistent lock file, all is well; otherwise, got strange error. */ + lfinfolen = read_lock_data (lfname, owner->user); + if (lfinfolen < 0) + return errno == ENOENT ? 0 : -1; + if (MAX_LFINFO < lfinfolen) + return -1; + owner->user[lfinfolen] = 0; + /* Parse USER@HOST.PID:BOOT_TIME. If can't parse, return -1. */ /* The USER is everything before the last @. */ - at = strrchr (lfinfo, '@'); - dot = strrchr (lfinfo, '.'); - if (!at || !dot) - return -1; - len = at - lfinfo; - GCPRO1 (lfinfo_object); - owner->user = xmalloc (len + 1); - memcpy (owner->user, lfinfo, len); - owner->user[len] = 0; + owner->at = at = memrchr (owner->user, '@', lfinfolen); + if (!at) + return -1; + owner->dot = dot = strrchr (at, '.'); + if (!dot) + return -1; /* The PID is everything from the last `.' to the `:'. */ + if (! c_isdigit (dot[1])) + return -1; errno = 0; - n = strtoimax (dot + 1, NULL, 10); - owner->pid = - ((0 <= n && n <= TYPE_MAXIMUM (pid_t) - && (TYPE_MAXIMUM (pid_t) < INTMAX_MAX || errno != ERANGE)) - ? n : 0); + pid = strtoimax (dot + 1, &owner->colon, 10); + if (errno == ERANGE) + pid = -1; - colon = strchr (dot + 1, ':'); /* After the `:', if there is one, comes the boot time. */ - n = 0; - if (colon) + switch (owner->colon[0]) { - errno = 0; - n = strtoimax (colon + 1, NULL, 10); + case 0: + boot_time = 0; + lfinfo_end = owner->colon; + break; + + case ':': + if (! c_isdigit (owner->colon[1])) + return -1; + boot_time = strtoimax (owner->colon + 1, &lfinfo_end, 10); + break; + + default: + return -1; } - owner->boot_time = - ((0 <= n && n <= TYPE_MAXIMUM (time_t) - && (TYPE_MAXIMUM (time_t) < INTMAX_MAX || errno != ERANGE)) - ? n : 0); - - /* The host is everything in between. */ - len = dot - at - 1; - owner->host = xmalloc (len + 1); - memcpy (owner->host, at + 1, len); - owner->host[len] = 0; - - /* We're done looking at the link info. */ - UNGCPRO; + if (lfinfo_end != owner->user + lfinfolen) + return -1; /* On current host? */ - if (STRINGP (Fsystem_name ()) - && strcmp (owner->host, SSDATA (Fsystem_name ())) == 0) + if (STRINGP (Vsystem_name) + && dot - (at + 1) == SBYTES (Vsystem_name) + && memcmp (at + 1, SSDATA (Vsystem_name), SBYTES (Vsystem_name)) == 0) { - if (owner->pid == getpid ()) + if (pid == getpid ()) ret = 2; /* We own it. */ - else if (owner->pid > 0 - && (kill (owner->pid, 0) >= 0 || errno == EPERM) - && (owner->boot_time == 0 - || within_one_second (owner->boot_time, get_boot_time ()))) + else if (0 < pid && pid <= TYPE_MAXIMUM (pid_t) + && (kill (pid, 0) >= 0 || errno == EPERM) + && (boot_time == 0 + || (boot_time <= TYPE_MAXIMUM (time_t) + && within_one_second (boot_time, get_boot_time ())))) ret = 1; /* An existing process on this machine owns it. */ - /* The owner process is dead or has a strange pid (<=0), so try to + /* The owner process is dead or has a strange pid, so try to zap the lockfile. */ - else if (unlink (lfname) < 0) - ret = -1; else - ret = 0; + return unlink (lfname); } else { /* If we wanted to support the check for stale locks on remote machines, @@ -535,11 +613,6 @@ ret = 1; } - /* Avoid garbage. */ - if (owner == &local_owner || ret <= 0) - { - FREE_LOCK_INFO (*owner); - } return ret; } @@ -551,29 +624,25 @@ Return -1 if cannot lock for any other reason. */ static int -lock_if_free (lock_info_type *clasher, register char *lfname) +lock_if_free (lock_info_type *clasher, char *lfname) { - while (! lock_file_1 (lfname, 0)) + int err; + while ((err = lock_file_1 (lfname, 0)) == EEXIST) { - int locker; - - if (errno != EEXIST) - return -1; - - locker = current_lock_owner (clasher, lfname); - if (locker == 2) - { - FREE_LOCK_INFO (*clasher); - return 0; /* We ourselves locked it. */ - } - else if (locker == 1) - return 1; /* Someone else has it. */ - else if (locker == -1) - return -1; /* current_lock_owner returned strange error. */ + switch (current_lock_owner (clasher, lfname)) + { + case 2: + return 0; /* We ourselves locked it. */ + case 1: + return 1; /* Someone else has it. */ + case -1: + return -1; /* current_lock_owner returned strange error. */ + } /* We deleted a stale lock; try again to lock the file. */ } - return 0; + + return err ? -1 : 0; } /* lock_file locks file FN, @@ -645,17 +714,16 @@ if (0 < lock_if_free (&lock_info, lfname)) { /* Someone else has the lock. Consider breaking it. */ - ptrdiff_t locker_size = (strlen (lock_info.user) + strlen (lock_info.host) - + INT_STRLEN_BOUND (printmax_t) - + sizeof "@ (pid )"); - char *locker = SAFE_ALLOCA (locker_size); - printmax_t pid = lock_info.pid; Lisp_Object attack; - esprintf (locker, "%s@%s (pid %"pMd")", - lock_info.user, lock_info.host, pid); - FREE_LOCK_INFO (lock_info); - - attack = call2 (intern ("ask-user-about-lock"), fn, build_string (locker)); + char *dot = lock_info.dot; + ptrdiff_t pidlen = lock_info.colon - (dot + 1); + static char const replacement[] = " (pid "; + int replacementlen = sizeof replacement - 1; + memmove (dot + replacementlen, dot + 1, pidlen); + strcpy (dot + replacementlen + pidlen, ")"); + memcpy (dot, replacement, replacementlen); + attack = call2 (intern ("ask-user-about-lock"), fn, + build_string (lock_info.user)); /* Take the lock if the user said so. */ if (!NILP (attack)) lock_file_1 (lfname, 1); @@ -760,10 +828,7 @@ else if (owner == 2) ret = Qt; else - ret = build_string (locker.user); - - if (owner > 0) - FREE_LOCK_INFO (locker); + ret = make_string (locker.user, locker.at - locker.user); SAFE_FREE (); return ret; === modified file 'src/w32.c' --- src/w32.c 2013-02-28 06:30:48 +0000 +++ src/w32.c 2013-03-05 22:35:41 +0000 @@ -3416,7 +3416,13 @@ } int -sys_rename (const char * oldname, const char * newname) +fchmod (int fd, mode_t mode) +{ + return 0; +} + +int +sys_rename_replace (const char *oldname, const char *newname, BOOL force) { BOOL result; char temp[MAX_PATH]; @@ -3472,7 +3478,7 @@ return -1; } - /* Emulate Unix behavior - newname is deleted if it already exists + /* If FORCE, emulate Unix behavior - newname is deleted if it already exists (at least if it is a file; don't do this for directories). Since we mustn't do this if we are just changing the case of the @@ -3490,7 +3496,7 @@ result = rename (temp, newname); - if (result < 0) + if (result < 0 && force) { DWORD w32err = GetLastError (); @@ -3530,6 +3536,12 @@ } int +sys_rename (char const *old, char const *new) +{ + return sys_rename_replace (old, new, TRUE); +} + +int sys_rmdir (const char * path) { return _rmdir (map_w32_filename (path, NULL)); === modified file 'src/w32.h' --- src/w32.h 2013-02-02 17:14:24 +0000 +++ src/w32.h 2013-03-05 22:35:41 +0000 @@ -186,6 +186,8 @@ extern void srandom (int); extern int random (void); +extern int fchmod (int, mode_t); +extern int sys_rename_replace (char const *, char const *, BOOL); extern int sys_pipe (int *); extern void set_process_dir (char *); ------------------------------------------------------------ revno: 111947 committer: Eli Zaretskii branch nick: trunk timestamp: Tue 2013-03-05 20:12:25 +0200 message: Don't sync charpos and bytepos in bidi_resolve_explicit_1. src/bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or bidi_count_bytes, as the callers now arrange for bidi_it->charpos to be in sync with bidi_it->bytepos. Suggested by Dmitry Antipov . diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2013-03-05 03:59:35 +0000 +++ src/ChangeLog 2013-03-05 18:12:25 +0000 @@ -1,3 +1,10 @@ +2013-03-05 Eli Zaretskii + + * bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or + bidi_count_bytes, as the callers now arrange for bidi_it->charpos + to be in sync with bidi_it->bytepos. Suggested by Dmitry Antipov + . + 2013-03-05 Paul Eggert Fix a build failure on OpenBSD 4.x and MirBSD. === modified file 'src/bidi.c' --- src/bidi.c 2013-02-20 05:18:20 +0000 +++ src/bidi.c 2013-03-05 18:12:25 +0000 @@ -1353,15 +1353,19 @@ : bidi_it->string.s); if (bidi_it->charpos < 0) - bidi_it->charpos = 0; - bidi_it->bytepos = bidi_count_bytes (p, 0, 0, bidi_it->charpos, - bidi_it->string.unibyte); + bidi_it->charpos = bidi_it->bytepos = 0; + eassert (bidi_it->bytepos == bidi_count_bytes (p, 0, 0, + bidi_it->charpos, + bidi_it->string.unibyte)); } else { if (bidi_it->charpos < BEGV) - bidi_it->charpos = BEGV; - bidi_it->bytepos = CHAR_TO_BYTE (bidi_it->charpos); + { + bidi_it->charpos = BEGV; + bidi_it->bytepos = BEGV_BYTE; + } + eassert (bidi_it->bytepos == CHAR_TO_BYTE (bidi_it->charpos)); } } /* Don't move at end of buffer/string. */ ------------------------------------------------------------ revno: 111946 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-03-05 09:55:41 -0800 message: * notes/unicode: Add notes about Emacs source file encoding. diff: === modified file 'admin/ChangeLog' --- admin/ChangeLog 2013-03-04 07:25:17 +0000 +++ admin/ChangeLog 2013-03-05 17:55:41 +0000 @@ -1,3 +1,7 @@ +2013-03-05 Paul Eggert + + * notes/unicode: Add notes about Emacs source file encoding. + 2013-03-04 Paul Eggert * grammars/java-tags.wy (CHAR): Remove "('\u0000' to '\uffff')" === modified file 'admin/notes/unicode' --- admin/notes/unicode 2013-03-05 17:13:01 +0000 +++ admin/notes/unicode 2013-03-05 17:55:41 +0000 @@ -98,6 +98,62 @@ * Old auto-save files, and similar files, such as Gnus drafts, containing non-ASCII characters probably won't be re-read correctly. + +Source file encoding +-------------------- + +Most Emacs source files are encoded in UTF-8 (or in ASCII, which is a +subset), but there are a few exceptions, listed below. Perhaps +someday these files will be converted to UTF-8, for convenience when +using tools like 'grep -r', but this might need nontrivial changes to +the build process. + + * chinese-big5 + + leim/CXTERM-DIC/4Corner.tit + leim/CXTERM-DIC/ARRAY30.tit + leim/CXTERM-DIC/ECDICT.tit + leim/CXTERM-DIC/ETZY.tit + leim/CXTERM-DIC/PY-b5.tit + leim/CXTERM-DIC/Punct-b5.tit + leim/CXTERM-DIC/QJ-b5.tit + leim/CXTERM-DIC/ZOZY.tit + leim/MISC-DIC/CTLau-b5.html + leim/MISC-DIC/cangjie-table.b5 + + * chinese-iso-8bit + + leim/CXTERM-DIC/CCDOSPY.tit + leim/CXTERM-DIC/Punct.tit + leim/CXTERM-DIC/QJ.tit + leim/CXTERM-DIC/SW.tit + leim/CXTERM-DIC/TONEPY.tit + leim/MISC-DIC/pinyin.map + leim/MISC-DIC/CTLau.html + leim/MISC-DIC/ziranma.cin + + * iso-latin-2 + + etc/refcards/cs-refcard.tex + etc/refcards/sk-survival.tex + etc/refcards/cs-survival.tex + etc/refcards/cs-dired-ref.tex + etc/refcards/sk-dired-ref.tex + etc/refcards/sk-refcard.tex + + * japanese-iso-8bit + + leim/SKK-DIC/SKK-JISYO.L + leim/ja-dic/ja-dic.el + + * japanese-shift-jis + + admin/charsets/mapfiles/cns2ucsdkw.txt + + * no-conversion + + lib-src/testfile + This file is part of GNU Emacs. ------------------------------------------------------------ revno: 111945 committer: Paul Eggert branch nick: trunk timestamp: Tue 2013-03-05 09:13:01 -0800 message: Prefer UTF-8 when the encoding shouldn't matter and changes are small. diff: === modified file 'admin/make-tarball.txt' --- admin/make-tarball.txt 2013-01-10 04:12:46 +0000 +++ admin/make-tarball.txt 2013-03-05 17:13:01 +0000 @@ -1,5 +1,5 @@ -Instructions to create pretest or release tarballs. --- originally written by Gerd Moellmann, amended by Francesco Potort +Instructions to create pretest or release tarballs. -*- coding: utf-8 -*- +-- originally written by Gerd Moellmann, amended by Francesco Potortì with the initial help of Eli Zaretskii === modified file 'admin/notes/unicode' --- admin/notes/unicode 2013-01-01 09:11:05 +0000 +++ admin/notes/unicode 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ - -*-mode: text; coding: latin-1;-*- + -*-mode: text; coding: utf-8;-*- Copyright (C) 2002-2013 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -12,9 +12,9 @@ * SINGLE_BYTE_CHAR_P returns true for Latin-1 characters, which has undesirable effects. E.g.: - (multibyte-string-p (let ((s "x")) (aset s 0 ?) s)) => nil - (multibyte-string-p (concat [?])) => nil - (text-char-description ?) => "M-#" + (multibyte-string-p (let ((s "x")) (aset s 0 ?£) s)) => nil + (multibyte-string-p (concat [?£])) => nil + (text-char-description ?£) => "M-#" These examples are all fixed by the change of 2002-10-14, but there still exist questionable SINGLE_BYTE_CHAR_P in the @@ -77,7 +77,7 @@ spelling and calendar, but that's not a Unicode issue.) * Handle Unicode combining characters usefully, e.g. diacritics, and - handle more scripts specifically ( la Devanagari). There are + handle more scripts specifically (à la Devanagari). There are issues with canonicalization. * We need tabular input methods, e.g. for maths symbols. (Not === modified file 'etc/images/mail/README' --- etc/images/mail/README 2008-01-22 23:53:46 +0000 +++ etc/images/mail/README 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES +COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES -*- coding: utf-8 -*- The following icons are from GNOME 2.x. They are not part of Emacs, but are distributed and used by Emacs. They are licensed under the @@ -25,7 +25,7 @@ send.xpm stock_mail-send spam.xpm stock_spam -(preview and save were contributed by Adam Sjgren ) +(preview and save were contributed by Adam Sjøgren ) repack is a slightly modified version of package-x-generic. reply-from is a slightly modified version of reply. === modified file 'etc/images/smilies/grayscale/README' --- etc/images/smilies/grayscale/README 2013-01-01 09:11:05 +0000 +++ etc/images/smilies/grayscale/README 2013-03-05 17:13:01 +0000 @@ -1,6 +1,7 @@ +-*- coding: utf-8 -*- Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm - smile.xpm wry.xpm -Author: Adam Sjgren + smile.xpm wry.xpm +Author: Adam Sjøgren Copyright (C) 2007-2013 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) === modified file 'etc/images/smilies/medium/README' --- etc/images/smilies/medium/README 2013-01-01 09:11:05 +0000 +++ etc/images/smilies/medium/README 2013-03-05 17:13:01 +0000 @@ -1,6 +1,7 @@ +-*- coding: utf-8 -*- Files: blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm frown.xpm grin.xpm indifferent.xpm reverse-smile.xpm sad.xpm - smile.xpm wry.xpm -Author: Adam Sjgren + smile.xpm wry.xpm +Author: Adam Sjøgren Copyright (C) 2007-2013 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) === modified file 'leim/quail/croatian.el' --- leim/quail/croatian.el 2013-01-01 09:11:05 +0000 +++ leim/quail/croatian.el 2013-03-05 17:13:01 +0000 @@ -1,8 +1,8 @@ -;;; quail/croatian.el -- Quail package for inputting Croatian -*-coding: iso-8859-2;-*- +;;; quail/croatian.el -- Quail package for inputting Croatian -*-coding: utf-8;-*- ;; Copyright (C) 2003-2013 Free Software Foundation, Inc. -;; Author: Hrvoje Niki +;; Author: Hrvoje Nikšić ;; Keywords: i18n ;; This file is part of GNU Emacs. @@ -44,16 +44,16 @@ ("_" ??) ("=" ?+) ("+" ?*) - ("[" ?) - ("{" ?) - ("]" ?) - ("}" ?) - (";" ?) - (":" ?) - ("'" ?) - ("\"" ?) - ("\\" ?) - ("|" ?) + ("[" ?š) + ("{" ?Š) + ("]" ?đ) + ("}" ?Đ) + (";" ?č) + (":" ?Č) + ("'" ?ć) + ("\"" ?Ć) + ("\\" ?ž) + ("|" ?Ž) ("<" ?\;) (">" ?:) ("/" ?-) @@ -79,16 +79,16 @@ ("_" ??) ("=" ?+) ("+" ?*) - ("[" ?) - ("{" ?) - ("]" ?) - ("}" ?) - (";" ?) - (":" ?) - ("'" ?) - ("\"" ?) - ("\\" ?) - ("|" ?) + ("[" ?š) + ("{" ?Š) + ("]" ?đ) + ("}" ?Đ) + (";" ?č) + (":" ?Č) + ("'" ?ć) + ("\"" ?Ć) + ("\\" ?ž) + ("|" ?Ž) ("<" ?\;) (">" ?:) ("/" ?-) @@ -98,102 +98,102 @@ "croatian-prefix" "Croatian" "HR" nil "Croatian input method, postfix. -\"c -> -'c -> -\"s -> -\"z -> -/d -> " +\"c -> č +'c -> ć +\"s -> š +\"z -> ž +/d -> đ" nil t nil nil nil nil nil nil nil nil t) (quail-define-rules - ("\"c" ?) - ("\"C" ?) - ("'c" ?) - ("'C" ?) - ("\"s" ?) - ("\"S" ?) - ("\"z" ?) - ("\"Z" ?) - ("/d" ?) - ("/D" ?)) + ("\"c" ?č) + ("\"C" ?Č) + ("'c" ?ć) + ("'C" ?Ć) + ("\"s" ?š) + ("\"S" ?Š) + ("\"z" ?ž) + ("\"Z" ?Ž) + ("/d" ?đ) + ("/D" ?Đ)) (quail-define-package "croatian-postfix" "Croatian" "HR" nil "Croatian input method, postfix. -c\" -> -c' -> -s\" -> -z\" -> -d/ -> " +c\" -> č +c' -> ć +s\" -> š +z\" -> ž +d/ -> đ" nil t nil nil nil nil nil nil nil nil t) (quail-define-rules - ("c\"" ?) - ("C\"" ?) - ("c'" ?) - ("C'" ?) - ("s\"" ?) - ("S\"" ?) - ("z\"" ?) - ("Z\"" ?) - ("d/" ?) - ("D/" ?)) + ("c\"" ?č) + ("C\"" ?Č) + ("c'" ?ć) + ("C'" ?Ć) + ("s\"" ?š) + ("S\"" ?Š) + ("z\"" ?ž) + ("Z\"" ?Ž) + ("d/" ?đ) + ("D/" ?Đ)) (quail-define-package "croatian-xy" "Croatian" "HR" nil "An alternative Croatian input method. -cx -> -cy -> -sx -> -zx -> -dy -> " +cx -> č +cy -> ć +sx -> š +zx -> ž +dy -> đ" nil t nil nil nil nil nil nil nil nil t) (quail-define-rules - ("cx" ?) - ("CX" ?) - ("Cx" ?) - ("cy" ?) - ("CY" ?) - ("Cy" ?) - ("sx" ?) - ("SX" ?) - ("Sx" ?) - ("zx" ?) - ("ZX" ?) - ("Zx" ?) - ("dy" ?) - ("DY" ?) - ("Dy" ?)) + ("cx" ?č) + ("CX" ?Č) + ("Cx" ?Č) + ("cy" ?ć) + ("CY" ?Ć) + ("Cy" ?Ć) + ("sx" ?š) + ("SX" ?Š) + ("Sx" ?Š) + ("zx" ?ž) + ("ZX" ?Ž) + ("Zx" ?Ž) + ("dy" ?đ) + ("DY" ?Đ) + ("Dy" ?Đ)) (quail-define-package "croatian-cc" "Croatian" "HR" nil "Another alternative Croatian input method. -cc -> -ch -> -ss -> -zz -> -dd -> " +cc -> č +ch -> ć +ss -> š +zz -> ž +dd -> đ" nil t nil nil nil nil nil nil nil nil t) (quail-define-rules - ("cc" ?) - ("CC" ?) - ("Cc" ?) - ("ch" ?) - ("CH" ?) - ("Ch" ?) - ("ss" ?) - ("SS" ?) - ("Ss" ?) - ("zz" ?) - ("ZZ" ?) - ("Zz" ?) - ("dd" ?) - ("DD" ?) - ("Dd" ?)) + ("cc" ?č) + ("CC" ?Č) + ("Cc" ?Č) + ("ch" ?ć) + ("CH" ?Ć) + ("Ch" ?Ć) + ("ss" ?š) + ("SS" ?Š) + ("Ss" ?Š) + ("zz" ?ž) + ("ZZ" ?Ž) + ("Zz" ?Ž) + ("dd" ?đ) + ("DD" ?Đ) + ("Dd" ?Đ)) ;;; croatian.el ends here === modified file 'lib-src/etags.c' --- lib-src/etags.c 2013-01-02 16:13:04 +0000 +++ lib-src/etags.c 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -/* Tags file maker to go with GNU Emacs -*- coding: latin-1 -*- +/* Tags file maker to go with GNU Emacs -*- coding: utf-8 -*- Copyright (C) 1984 The Regents of the University of California @@ -64,12 +64,12 @@ * 1985 Emacs TAGS format by Richard Stallman. * 1989 Sam Kendall added C++. * 1992 Joseph B. Wells improved C and C++ parsing. - * 1993 Francesco Potort reorganized C and C++. + * 1993 Francesco Potortì reorganized C and C++. * 1994 Line-by-line regexp tags by Tom Tromey. - * 2001 Nested classes by Francesco Potort (concept by Mykola Dzyuba). - * 2002 #line directives by Francesco Potort. + * 2001 Nested classes by Francesco Potortì (concept by Mykola Dzyuba). + * 2002 #line directives by Francesco Potortì. * - * Francesco Potort has maintained and improved it since 1993. + * Francesco Potortì has maintained and improved it since 1993. */ /* @@ -4275,7 +4275,7 @@ * Perl variable names: /^(my|local).../ * Original code by Bart Robinson (1995) * Additions by Michael Ernst (1997) - * Ideas by Kai Grojohann (2001) + * Ideas by Kai Großjohann (2001) */ static void Perl_functions (FILE *inf) @@ -5105,7 +5105,7 @@ * Contents of , <h1>, <h2>, <h3> are tags. * Contents of <a name=xxx> are tags with name xxx. * - * Francesco Potort, 2002. + * Francesco Potortì, 2002. */ static void HTML_labels (FILE *inf) === modified file 'lisp/battery.el' --- lisp/battery.el 2013-01-02 16:13:04 +0000 +++ lisp/battery.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; battery.el --- display battery status information -*- coding: iso-8859-1 -*- +;;; battery.el --- display battery status information -*- coding: utf-8 -*- ;; Copyright (C) 1997-1998, 2000-2013 Free Software Foundation, Inc. @@ -116,7 +116,7 @@ (defcustom battery-mode-line-format (cond ((eq battery-status-function 'battery-linux-proc-acpi) - "[%b%p%%,%dC]") + "[%b%p%%,%d°C]") (battery-status-function "[%b%p%%]")) "Control string formatting the string to display in the mode line. === modified file 'lisp/filesets.el' --- lisp/filesets.el 2013-01-01 09:11:05 +0000 +++ lisp/filesets.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; filesets.el --- handle group of files +;;; filesets.el --- handle group of files -*- coding: utf-8 -*- ;; Copyright (C) 2002-2013 Free Software Foundation, Inc. @@ -805,8 +805,8 @@ (:match-number 2) (:get-file-name (lambda (master file) (filesets-which-file master file load-path)))))) - ("^\\([A-Z][a-z]+\\([A-Z][a-z]+\\)+\\)$" t - (((:pattern "\\<\\([A-Z][a-z]+\\([A-Z][a-z]+\\)+\\)\\>") + ("^\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)$" t + (((:pattern "\\<\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)\\>") (:scan-depth 5) (:stubp (lambda (a b) (not (filesets-files-in-same-directory-p a b)))) (:case-sensitive t) === modified file 'lisp/gnus/ChangeLog.1' --- lisp/gnus/ChangeLog.1 2013-01-01 09:11:05 +0000 +++ lisp/gnus/ChangeLog.1 2013-03-05 17:13:01 +0000 @@ -452,7 +452,7 @@ * gnus-sum.el (gnus-remove-thread): Didn't work with sparse threads. -1998-08-14 Franois Pinard <pinard@iro.umontreal.ca> +1998-08-14 François Pinard <pinard@iro.umontreal.ca> * nndoc.el (nndoc-generate-mime-parts-head): Use original Subject, Message-ID, and References in fully blown articles. @@ -619,7 +619,7 @@ * gnus.el: Gnus v5.6.31 is released. -1998-08-09 Franois Pinard <pinard@iro.umontreal.ca> +1998-08-09 François Pinard <pinard@iro.umontreal.ca> * nndoc.el: Split MIME multipart messages, maybe recursively. (nndoc-mime-parts-type-p, nndoc-transform-mime-parts, @@ -760,7 +760,7 @@ * gnus-group.el (gnus-group-read-ephemeral-group): Make the server unique. -1998-07-28 Franois Pinard <pinard@iro.umontreal.ca> +1998-07-28 François Pinard <pinard@iro.umontreal.ca> * gnus-uu.el (gnus-uu-reginize-string): Consider the number of parts as part of the fixed subject, instead of a wild quantity. @@ -943,7 +943,7 @@ * nntp.el (nntp-server-opened-hook): Doc change. -1998-07-10 Franois Pinard <pinard@iro.umontreal.ca> +1998-07-10 François Pinard <pinard@iro.umontreal.ca> * gnus-sum.el (gnus-summary-respool-trace): New command and keystroke. @@ -1003,7 +1003,7 @@ * nntp.el (nntp-record-command): Give more precise time info. (nntp-next-result-arrived-p): Look for the end of error lines. -1998-07-01 Franois Pinard <pinard@iro.umontreal.ca> +1998-07-01 François Pinard <pinard@iro.umontreal.ca> * gnus-util.el (gnus-delete-if): Would do the opposite. @@ -2016,7 +2016,7 @@ * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound var. -1998-02-28 Franois Pinard <pinard@iro.umontreal.ca> +1998-02-28 François Pinard <pinard@iro.umontreal.ca> * gnus: configure'd. @@ -2370,7 +2370,7 @@ * gnus-sum.el (gnus-summary-exit): Call purging function. -1998-02-13 Franois Pinard <pinard@iro.umontreal.ca> +1998-02-13 François Pinard <pinard@iro.umontreal.ca> * nnmail.el (nnmail-get-new-mail): Don't clear split-history. (nnmail-purge-split-history): New function. @@ -3724,3 +3724,7 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Local Variables: +;; coding: utf-8 +;; End: === modified file 'lisp/gnus/deuglify.el' --- lisp/gnus/deuglify.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/deuglify.el 2013-03-05 17:13:01 +0000 @@ -270,7 +270,7 @@ :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-verb-regexp - "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a crit\\|schreef\\|escribi" + "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió" "Regular expression matching the verb used in an attribution line." :version "22.1" :type 'string @@ -472,7 +472,7 @@ (provide 'deuglify) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; deuglify.el ends here === modified file 'lisp/gnus/gnus-delay.el' --- lisp/gnus/gnus-delay.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/gnus-delay.el 2013-03-05 17:13:01 +0000 @@ -2,7 +2,7 @@ ;; Copyright (C) 2001-2013 Free Software Foundation, Inc. -;; Author: Kai Grojohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> +;; Author: Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> ;; Keywords: mail, news, extensions ;; This file is part of GNU Emacs. @@ -186,7 +186,7 @@ (provide 'gnus-delay) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-delay.el ends here === modified file 'lisp/gnus/gnus-spec.el' --- lisp/gnus/gnus-spec.el 2013-01-02 16:13:04 +0000 +++ lisp/gnus/gnus-spec.el 2013-03-05 17:13:01 +0000 @@ -418,7 +418,7 @@ ;; them will have the balloon-help text property. (let ((case-fold-search nil)) (if (string-match - "\\`\\(.*\\)%[0-9]?[{(]\\(.*\\)%[0-9]?[})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*" + "\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*" format) (gnus-parse-complex-format format spec-alist) ;; This is a simple format. @@ -435,13 +435,13 @@ (goto-char (point-min)) (insert "(\"") ;; Convert all font specs into font spec lists. - (while (re-search-forward "%\\([0-9]+\\)?\\([{}()]\\)" nil t) + (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t) (let ((number (if (match-beginning 1) (match-string 1) "0")) (delim (aref (match-string 2) 0))) (if (or (= delim ?\() (= delim ?\{) - (= delim ?\)) + (= delim ?\«)) (replace-match (concat "\"(" (cond ((= delim ?\() "mouse") ((= delim ?\{) "face") @@ -733,7 +733,7 @@ (provide 'gnus-spec) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-spec.el ends here === modified file 'lisp/gnus/gnus-sum.el' --- lisp/gnus/gnus-sum.el 2013-02-13 08:28:47 +0000 +++ lisp/gnus/gnus-sum.el 2013-03-05 17:13:01 +0000 @@ -451,7 +451,7 @@ :group 'gnus-summary-maneuvering :type 'boolean) -(defcustom gnus-auto-center-summary +(defcustom gnus-auto-center-summary (max (or (bound-and-true-p scroll-margin) 0) 2) "*If non-nil, always center the current summary buffer. In particular, if `vertical' do only vertical recentering. If non-nil @@ -9788,7 +9788,7 @@ (when (message-goto-body) (gnus-narrow-to-body)) (goto-char (point-min)) - (while (search-forward "" (point-max) t) + (while (search-forward "·" (point-max) t) (replace-match ".")) (unmorse-region (point-min) (point-max)) (widen) @@ -12978,7 +12978,7 @@ (run-hooks 'gnus-sum-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; gnus-sum.el ends here === modified file 'lisp/gnus/html2text.el' --- lisp/gnus/html2text.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/html2text.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; html2text.el --- a simple html to plain text converter +;;; html2text.el --- a simple html to plain text converter -*- coding: utf-8 -*- ;; Copyright (C) 2002-2013 Free Software Foundation, Inc. @@ -65,14 +65,14 @@ ("–" . "-") ("‰" . "%%") ("±" . "+-") - ("£" . "") + ("£" . "£") (""" . "\"") ("»" . ">>") ("&rdquo" . "\"") ("®" . "(R)") ("›" . ")") ("’" . "'") - ("§" . "") + ("§" . "§") ("¹" . "^1") ("²" . "^2") ("³" . "^3") === modified file 'lisp/gnus/message.el' --- lisp/gnus/message.el 2013-01-13 19:46:27 +0000 +++ lisp/gnus/message.el 2013-03-05 17:13:01 +0000 @@ -1743,7 +1743,7 @@ (file-error)) (mm-coding-system-p 'utf-8) (executable-find idna-program) - (string= (idna-to-ascii "rksmrgs") + (string= (idna-to-ascii "räksmörgås") "xn--rksmrgs-5wao1o") t) "Whether to encode non-ASCII in domain names into ASCII according to IDNA. @@ -8421,7 +8421,7 @@ (run-hooks 'message-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; message.el ends here === modified file 'lisp/gnus/mm-decode.el' --- lisp/gnus/mm-decode.el 2013-01-30 09:44:46 +0000 +++ lisp/gnus/mm-decode.el 2013-03-05 17:13:01 +0000 @@ -1803,7 +1803,7 @@ (replace-match (char-to-string char)))) ;; Remove "soft hyphens". (goto-char (point-min)) - (while (search-forward "" nil t) + (while (search-forward "­" nil t) (replace-match "" t t)) (libxml-parse-html-region (point-min) (point-max)))) (unless (bobp) @@ -1825,7 +1825,7 @@ (provide 'mm-decode) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; mm-decode.el ends here === modified file 'lisp/gnus/mml1991.el' --- lisp/gnus/mml1991.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/mml1991.el 2013-03-05 17:13:01 +0000 @@ -2,7 +2,7 @@ ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. -;; Author: Sascha Ldecke <sascha@meta-x.de>, +;; Author: Sascha Lüdecke <sascha@meta-x.de>, ;; Simon Josefsson <simon@josefsson.org> (Mailcrypt interface, Gnus glue) ;; Keywords: PGP @@ -480,7 +480,7 @@ (provide 'mml1991) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; mml1991.el ends here === modified file 'lisp/gnus/nnir.el' --- lisp/gnus/nnir.el 2013-02-10 01:56:25 +0000 +++ lisp/gnus/nnir.el 2013-03-05 17:13:01 +0000 @@ -1,8 +1,8 @@ -;;; nnir.el --- search mail with various search engines -*- coding: iso-8859-1 -*- +;;; nnir.el --- search mail with various search engines -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. -;; Author: Kai Grojohann <grossjohann@ls6.cs.uni-dortmund.de> +;; Author: Kai Großjohann <grossjohann@ls6.cs.uni-dortmund.de> ;; Swish-e and Swish++ backends by: ;; Christoph Conrad <christoph.conrad@gmx.de>. ;; IMAP backend by: Simon Josefsson <jas@pdc.kth.se>. === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2013-03-04 10:27:33 +0000 +++ lisp/gnus/shr.el 2013-03-05 17:13:01 +0000 @@ -347,11 +347,11 @@ ((eq shr-folding-mode 'none) (insert text)) (t - (when (and (string-match "\\`[ \t\n]" text) + (when (and (string-match "\\`[ \t\n ]" text) (not (bolp)) (not (eq (char-after (1- (point))) ? ))) (insert " ")) - (dolist (elem (split-string text "[ \f\t\n\r\v]+" t)) + (dolist (elem (split-string text "[ \f\t\n\r\v ]+" t)) (when (and (bolp) (> shr-indentation 0)) (shr-indent)) @@ -391,7 +391,7 @@ (shr-indent)) (end-of-line)) (insert " "))) - (unless (string-match "[ \t\r\n]\\'" text) + (unless (string-match "[ \t\r\n ]\\'" text) (delete-char -1))))) (defun shr-find-fill-point () @@ -1476,7 +1476,7 @@ (provide 'shr) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; shr.el ends here === modified file 'lisp/gnus/utf7.el' --- lisp/gnus/utf7.el 2013-01-01 09:11:05 +0000 +++ lisp/gnus/utf7.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: iso-8859-1;-*- +;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: utf-8;-*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. @@ -52,10 +52,10 @@ ;; necessary coding system. The code below doesn't seem to DTRT ;; generally. E.g.: ;; -;; (utf7-encode "a+") +;; (utf7-encode "a+£") ;; => "a+ACsAow-" ;; -;; $ echo "a+"|iconv -f iso-8859-1 -t utf-7 +;; $ echo "a+£"|iconv -f utf-8 -t utf-7 ;; a+-+AKM ;; ;; -- fx === modified file 'lisp/international/iso-cvt.el' --- lisp/international/iso-cvt.el 2013-01-01 09:11:05 +0000 +++ lisp/international/iso-cvt.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- coding: iso-latin-1 -*- +;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- coding: utf-8 -*- ;; This file was formerly called gm-lingo.el. ;; Copyright (C) 1993-1998, 2000-2013 Free Software Foundation, Inc. @@ -45,19 +45,19 @@ (defvar iso-spanish-trans-tab '( - ("~n" "") - ("\([a-zA-Z]\)#" "\\1") - ("~N" "") - ("\\([-a-zA-Z\"`]\\)\"u" "\\1") - ("\\([-a-zA-Z\"`]\\)\"U" "\\1") - ("\\([-a-zA-Z]\\)'o" "\\1") - ("\\([-a-zA-Z]\\)'O" "\\") - ("\\([-a-zA-Z]\\)'e" "\\1") - ("\\([-a-zA-Z]\\)'E" "\\1") - ("\\([-a-zA-Z]\\)'a" "\\1") + ("~n" "ñ") + ("\([a-zA-Z]\)#" "\\1ñ") + ("~N" "Ñ") + ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") + ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") + ("\\([-a-zA-Z]\\)'o" "\\1ó") + ("\\([-a-zA-Z]\\)'O" "\\Ó") + ("\\([-a-zA-Z]\\)'e" "\\1é") + ("\\([-a-zA-Z]\\)'E" "\\1É") + ("\\([-a-zA-Z]\\)'a" "\\1á") ("\\([-a-zA-Z]\\)'A" "\\1A") - ("\\([-a-zA-Z]\\)'i" "\\1") - ("\\([-a-zA-Z]\\)'I" "\\1") + ("\\([-a-zA-Z]\\)'i" "\\1í") + ("\\([-a-zA-Z]\\)'I" "\\1Í") ) "Spanish translation table.") @@ -89,14 +89,14 @@ (defvar iso-aggressive-german-trans-tab '( - ("\"a" "") - ("\"A" "") - ("\"o" "") - ("\"O" "") - ("\"u" "") - ("\"U" "") - ("\"s" "") - ("\\\\3" "") + ("\"a" "ä") + ("\"A" "Ä") + ("\"o" "ö") + ("\"O" "Ö") + ("\"u" "ü") + ("\"U" "Ü") + ("\"s" "ß") + ("\\\\3" "ß") ) "German translation table. This table uses an aggressive translation approach @@ -104,14 +104,14 @@ (defvar iso-conservative-german-trans-tab '( - ("\\([-a-zA-Z\"`]\\)\"a" "\\1") - ("\\([-a-zA-Z\"`]\\)\"A" "\\1") - ("\\([-a-zA-Z\"`]\\)\"o" "\\1") - ("\\([-a-zA-Z\"`]\\)\"O" "\\1") - ("\\([-a-zA-Z\"`]\\)\"u" "\\1") - ("\\([-a-zA-Z\"`]\\)\"U" "\\1") - ("\\([-a-zA-Z\"`]\\)\"s" "\\1") - ("\\([-a-zA-Z\"`]\\)\\\\3" "\\1") + ("\\([-a-zA-Z\"`]\\)\"a" "\\1ä") + ("\\([-a-zA-Z\"`]\\)\"A" "\\1Ä") + ("\\([-a-zA-Z\"`]\\)\"o" "\\1ö") + ("\\([-a-zA-Z\"`]\\)\"O" "\\1Ö") + ("\\([-a-zA-Z\"`]\\)\"u" "\\1ü") + ("\\([-a-zA-Z\"`]\\)\"U" "\\1Ü") + ("\\([-a-zA-Z\"`]\\)\"s" "\\1ß") + ("\\([-a-zA-Z\"`]\\)\\\\3" "\\1ß") ) "German translation table. This table uses a conservative translation approach @@ -131,65 +131,65 @@ (defvar iso-iso2tex-trans-tab '( - ("" "{\\\\\"a}") - ("" "{\\\\`a}") - ("" "{\\\\'a}") - ("" "{\\\\~a}") - ("" "{\\\\^a}") - ("" "{\\\\\"e}") - ("" "{\\\\`e}") - ("" "{\\\\'e}") - ("" "{\\\\^e}") - ("" "{\\\\\"\\\\i}") - ("" "{\\\\`\\\\i}") - ("" "{\\\\'\\\\i}") - ("" "{\\\\^\\\\i}") - ("" "{\\\\\"o}") - ("" "{\\\\`o}") - ("" "{\\\\'o}") - ("" "{\\\\~o}") - ("" "{\\\\^o}") - ("" "{\\\\\"u}") - ("" "{\\\\`u}") - ("" "{\\\\'u}") - ("" "{\\\\^u}") - ("" "{\\\\\"A}") - ("" "{\\\\`A}") - ("" "{\\\\'A}") - ("" "{\\\\~A}") - ("" "{\\\\^A}") - ("" "{\\\\\"E}") - ("" "{\\\\`E}") - ("" "{\\\\'E}") - ("" "{\\\\^E}") - ("" "{\\\\\"I}") - ("" "{\\\\`I}") - ("" "{\\\\'I}") - ("" "{\\\\^I}") - ("" "{\\\\\"O}") - ("" "{\\\\`O}") - ("" "{\\\\'O}") - ("" "{\\\\~O}") - ("" "{\\\\^O}") - ("" "{\\\\\"U}") - ("" "{\\\\`U}") - ("" "{\\\\'U}") - ("" "{\\\\^U}") - ("" "{\\\\~n}") - ("" "{\\\\~N}") - ("" "{\\\\c c}") - ("" "{\\\\c C}") - ("" "{\\\\ss}") + ("ä" "{\\\\\"a}") + ("à" "{\\\\`a}") + ("á" "{\\\\'a}") + ("ã" "{\\\\~a}") + ("â" "{\\\\^a}") + ("ë" "{\\\\\"e}") + ("è" "{\\\\`e}") + ("é" "{\\\\'e}") + ("ê" "{\\\\^e}") + ("ï" "{\\\\\"\\\\i}") + ("ì" "{\\\\`\\\\i}") + ("í" "{\\\\'\\\\i}") + ("î" "{\\\\^\\\\i}") + ("ö" "{\\\\\"o}") + ("ò" "{\\\\`o}") + ("ó" "{\\\\'o}") + ("õ" "{\\\\~o}") + ("ô" "{\\\\^o}") + ("ü" "{\\\\\"u}") + ("ù" "{\\\\`u}") + ("ú" "{\\\\'u}") + ("û" "{\\\\^u}") + ("Ä" "{\\\\\"A}") + ("À" "{\\\\`A}") + ("Á" "{\\\\'A}") + ("Ã" "{\\\\~A}") + ("Â" "{\\\\^A}") + ("Ë" "{\\\\\"E}") + ("È" "{\\\\`E}") + ("É" "{\\\\'E}") + ("Ê" "{\\\\^E}") + ("Ï" "{\\\\\"I}") + ("Ì" "{\\\\`I}") + ("Í" "{\\\\'I}") + ("Î" "{\\\\^I}") + ("Ö" "{\\\\\"O}") + ("Ò" "{\\\\`O}") + ("Ó" "{\\\\'O}") + ("Õ" "{\\\\~O}") + ("Ô" "{\\\\^O}") + ("Ü" "{\\\\\"U}") + ("Ù" "{\\\\`U}") + ("Ú" "{\\\\'U}") + ("Û" "{\\\\^U}") + ("ñ" "{\\\\~n}") + ("Ñ" "{\\\\~N}") + ("ç" "{\\\\c c}") + ("Ç" "{\\\\c C}") + ("ß" "{\\\\ss}") ("\306" "{\\\\AE}") ("\346" "{\\\\ae}") ("\305" "{\\\\AA}") ("\345" "{\\\\aa}") ("\251" "{\\\\copyright}") - ("" "{\\\\pounds}") - ("" "{\\\\P}") - ("" "{\\\\S}") - ("" "{?`}") - ("" "{!`}") + ("£" "{\\\\pounds}") + ("¶" "{\\\\P}") + ("§" "{\\\\S}") + ("¿" "{?`}") + ("¡" "{!`}") ) "Translation table for translating ISO 8859-1 characters to TeX sequences.") @@ -204,183 +204,183 @@ (defvar iso-tex2iso-trans-tab '( - ("{\\\\\"a}" "") - ("{\\\\`a}" "") - ("{\\\\'a}" "") - ("{\\\\~a}" "") - ("{\\\\^a}" "") - ("{\\\\\"e}" "") - ("{\\\\`e}" "") - ("{\\\\'e}" "") - ("{\\\\^e}" "") - ("{\\\\\"\\\\i}" "") - ("{\\\\`\\\\i}" "") - ("{\\\\'\\\\i}" "") - ("{\\\\^\\\\i}" "") - ("{\\\\\"i}" "") - ("{\\\\`i}" "") - ("{\\\\'i}" "") - ("{\\\\^i}" "") - ("{\\\\\"o}" "") - ("{\\\\`o}" "") - ("{\\\\'o}" "") - ("{\\\\~o}" "") - ("{\\\\^o}" "") - ("{\\\\\"u}" "") - ("{\\\\`u}" "") - ("{\\\\'u}" "") - ("{\\\\^u}" "") - ("{\\\\\"A}" "") - ("{\\\\`A}" "") - ("{\\\\'A}" "") - ("{\\\\~A}" "") - ("{\\\\^A}" "") - ("{\\\\\"E}" "") - ("{\\\\`E}" "") - ("{\\\\'E}" "") - ("{\\\\^E}" "") - ("{\\\\\"I}" "") - ("{\\\\`I}" "") - ("{\\\\'I}" "") - ("{\\\\^I}" "") - ("{\\\\\"O}" "") - ("{\\\\`O}" "") - ("{\\\\'O}" "") - ("{\\\\~O}" "") - ("{\\\\^O}" "") - ("{\\\\\"U}" "") - ("{\\\\`U}" "") - ("{\\\\'U}" "") - ("{\\\\^U}" "") - ("{\\\\~n}" "") - ("{\\\\~N}" "") - ("{\\\\c c}" "") - ("{\\\\c C}" "") - ("\\\\\"a" "") - ("\\\\`a" "") - ("\\\\'a" "") - ("\\\\~a" "") - ("\\\\^a" "") - ("\\\\\"e" "") - ("\\\\`e" "") - ("\\\\'e" "") - ("\\\\^e" "") + ("{\\\\\"a}" "ä") + ("{\\\\`a}" "à") + ("{\\\\'a}" "á") + ("{\\\\~a}" "ã") + ("{\\\\^a}" "â") + ("{\\\\\"e}" "ë") + ("{\\\\`e}" "è") + ("{\\\\'e}" "é") + ("{\\\\^e}" "ê") + ("{\\\\\"\\\\i}" "ï") + ("{\\\\`\\\\i}" "ì") + ("{\\\\'\\\\i}" "í") + ("{\\\\^\\\\i}" "î") + ("{\\\\\"i}" "ï") + ("{\\\\`i}" "ì") + ("{\\\\'i}" "í") + ("{\\\\^i}" "î") + ("{\\\\\"o}" "ö") + ("{\\\\`o}" "ò") + ("{\\\\'o}" "ó") + ("{\\\\~o}" "õ") + ("{\\\\^o}" "ô") + ("{\\\\\"u}" "ü") + ("{\\\\`u}" "ù") + ("{\\\\'u}" "ú") + ("{\\\\^u}" "û") + ("{\\\\\"A}" "Ä") + ("{\\\\`A}" "À") + ("{\\\\'A}" "Á") + ("{\\\\~A}" "Ã") + ("{\\\\^A}" "Â") + ("{\\\\\"E}" "Ë") + ("{\\\\`E}" "È") + ("{\\\\'E}" "É") + ("{\\\\^E}" "Ê") + ("{\\\\\"I}" "Ï") + ("{\\\\`I}" "Ì") + ("{\\\\'I}" "Í") + ("{\\\\^I}" "Î") + ("{\\\\\"O}" "Ö") + ("{\\\\`O}" "Ò") + ("{\\\\'O}" "Ó") + ("{\\\\~O}" "Õ") + ("{\\\\^O}" "Ô") + ("{\\\\\"U}" "Ü") + ("{\\\\`U}" "Ù") + ("{\\\\'U}" "Ú") + ("{\\\\^U}" "Û") + ("{\\\\~n}" "ñ") + ("{\\\\~N}" "Ñ") + ("{\\\\c c}" "ç") + ("{\\\\c C}" "Ç") + ("\\\\\"a" "ä") + ("\\\\`a" "à") + ("\\\\'a" "á") + ("\\\\~a" "ã") + ("\\\\^a" "â") + ("\\\\\"e" "ë") + ("\\\\`e" "è") + ("\\\\'e" "é") + ("\\\\^e" "ê") ;; Discard spaces and/or one EOF after macro \i. ;; Converting it back will use braces. - ("\\\\\"\\\\i *\n\n" "\n\n") - ("\\\\\"\\\\i *\n?" "") - ("\\\\`\\\\i *\n\n" "\n\n") - ("\\\\`\\\\i *\n?" "") - ("\\\\'\\\\i *\n\n" "\n\n") - ("\\\\'\\\\i *\n?" "") - ("\\\\^\\\\i *\n\n" "\n\n") - ("\\\\^\\\\i *\n?" "") - ("\\\\\"i" "") - ("\\\\`i" "") - ("\\\\'i" "") - ("\\\\^i" "") - ("\\\\\"o" "") - ("\\\\`o" "") - ("\\\\'o" "") - ("\\\\~o" "") - ("\\\\^o" "") - ("\\\\\"u" "") - ("\\\\`u" "") - ("\\\\'u" "") - ("\\\\^u" "") - ("\\\\\"A" "") - ("\\\\`A" "") - ("\\\\'A" "") - ("\\\\~A" "") - ("\\\\^A" "") - ("\\\\\"E" "") - ("\\\\`E" "") - ("\\\\'E" "") - ("\\\\^E" "") - ("\\\\\"I" "") - ("\\\\`I" "") - ("\\\\'I" "") - ("\\\\^I" "") - ("\\\\\"O" "") - ("\\\\`O" "") - ("\\\\'O" "") - ("\\\\~O" "") - ("\\\\^O" "") - ("\\\\\"U" "") - ("\\\\`U" "") - ("\\\\'U" "") - ("\\\\^U" "") - ("\\\\~n" "") - ("\\\\~N" "") - ("\\\\\"{a}" "") - ("\\\\`{a}" "") - ("\\\\'{a}" "") - ("\\\\~{a}" "") - ("\\\\^{a}" "") - ("\\\\\"{e}" "") - ("\\\\`{e}" "") - ("\\\\'{e}" "") - ("\\\\^{e}" "") - ("\\\\\"{\\\\i}" "") - ("\\\\`{\\\\i}" "") - ("\\\\'{\\\\i}" "") - ("\\\\^{\\\\i}" "") - ("\\\\\"{i}" "") - ("\\\\`{i}" "") - ("\\\\'{i}" "") - ("\\\\^{i}" "") - ("\\\\\"{o}" "") - ("\\\\`{o}" "") - ("\\\\'{o}" "") - ("\\\\~{o}" "") - ("\\\\^{o}" "") - ("\\\\\"{u}" "") - ("\\\\`{u}" "") - ("\\\\'{u}" "") - ("\\\\^{u}" "") - ("\\\\\"{A}" "") - ("\\\\`{A}" "") - ("\\\\'{A}" "") - ("\\\\~{A}" "") - ("\\\\^{A}" "") - ("\\\\\"{E}" "") - ("\\\\`{E}" "") - ("\\\\'{E}" "") - ("\\\\^{E}" "") - ("\\\\\"{I}" "") - ("\\\\`{I}" "") - ("\\\\'{I}" "") - ("\\\\^{I}" "") - ("\\\\\"{O}" "") - ("\\\\`{O}" "") - ("\\\\'{O}" "") - ("\\\\~{O}" "") - ("\\\\^{O}" "") - ("\\\\\"{U}" "") - ("\\\\`{U}" "") - ("\\\\'{U}" "") - ("\\\\^{U}" "") - ("\\\\~{n}" "") - ("\\\\~{N}" "") - ("\\\\c{c}" "") - ("\\\\c{C}" "") - ("{\\\\ss}" "") + ("\\\\\"\\\\i *\n\n" "ï\n\n") + ("\\\\\"\\\\i *\n?" "ï") + ("\\\\`\\\\i *\n\n" "ì\n\n") + ("\\\\`\\\\i *\n?" "ì") + ("\\\\'\\\\i *\n\n" "í\n\n") + ("\\\\'\\\\i *\n?" "í") + ("\\\\^\\\\i *\n\n" "î\n\n") + ("\\\\^\\\\i *\n?" "î") + ("\\\\\"i" "ï") + ("\\\\`i" "ì") + ("\\\\'i" "í") + ("\\\\^i" "î") + ("\\\\\"o" "ö") + ("\\\\`o" "ò") + ("\\\\'o" "ó") + ("\\\\~o" "õ") + ("\\\\^o" "ô") + ("\\\\\"u" "ü") + ("\\\\`u" "ù") + ("\\\\'u" "ú") + ("\\\\^u" "û") + ("\\\\\"A" "Ä") + ("\\\\`A" "À") + ("\\\\'A" "Á") + ("\\\\~A" "Ã") + ("\\\\^A" "Â") + ("\\\\\"E" "Ë") + ("\\\\`E" "È") + ("\\\\'E" "É") + ("\\\\^E" "Ê") + ("\\\\\"I" "Ï") + ("\\\\`I" "Ì") + ("\\\\'I" "Í") + ("\\\\^I" "Î") + ("\\\\\"O" "Ö") + ("\\\\`O" "Ò") + ("\\\\'O" "Ó") + ("\\\\~O" "Õ") + ("\\\\^O" "Ô") + ("\\\\\"U" "Ü") + ("\\\\`U" "Ù") + ("\\\\'U" "Ú") + ("\\\\^U" "Û") + ("\\\\~n" "ñ") + ("\\\\~N" "Ñ") + ("\\\\\"{a}" "ä") + ("\\\\`{a}" "à") + ("\\\\'{a}" "á") + ("\\\\~{a}" "ã") + ("\\\\^{a}" "â") + ("\\\\\"{e}" "ë") + ("\\\\`{e}" "è") + ("\\\\'{e}" "é") + ("\\\\^{e}" "ê") + ("\\\\\"{\\\\i}" "ï") + ("\\\\`{\\\\i}" "ì") + ("\\\\'{\\\\i}" "í") + ("\\\\^{\\\\i}" "î") + ("\\\\\"{i}" "ï") + ("\\\\`{i}" "ì") + ("\\\\'{i}" "í") + ("\\\\^{i}" "î") + ("\\\\\"{o}" "ö") + ("\\\\`{o}" "ò") + ("\\\\'{o}" "ó") + ("\\\\~{o}" "õ") + ("\\\\^{o}" "ô") + ("\\\\\"{u}" "ü") + ("\\\\`{u}" "ù") + ("\\\\'{u}" "ú") + ("\\\\^{u}" "û") + ("\\\\\"{A}" "Ä") + ("\\\\`{A}" "À") + ("\\\\'{A}" "Á") + ("\\\\~{A}" "Ã") + ("\\\\^{A}" "Â") + ("\\\\\"{E}" "Ë") + ("\\\\`{E}" "È") + ("\\\\'{E}" "É") + ("\\\\^{E}" "Ê") + ("\\\\\"{I}" "Ï") + ("\\\\`{I}" "Ì") + ("\\\\'{I}" "Í") + ("\\\\^{I}" "Î") + ("\\\\\"{O}" "Ö") + ("\\\\`{O}" "Ò") + ("\\\\'{O}" "Ó") + ("\\\\~{O}" "Õ") + ("\\\\^{O}" "Ô") + ("\\\\\"{U}" "Ü") + ("\\\\`{U}" "Ù") + ("\\\\'{U}" "Ú") + ("\\\\^{U}" "Û") + ("\\\\~{n}" "ñ") + ("\\\\~{N}" "Ñ") + ("\\\\c{c}" "ç") + ("\\\\c{C}" "Ç") + ("{\\\\ss}" "ß") ("{\\\\AE}" "\306") ("{\\\\ae}" "\346") ("{\\\\AA}" "\305") ("{\\\\aa}" "\345") ("{\\\\copyright}" "\251") ("\\\\copyright{}" "\251") - ("{\\\\pounds}" "" ) - ("{\\\\P}" "" ) - ("{\\\\S}" "" ) - ("\\\\pounds{}" "" ) - ("\\\\P{}" "" ) - ("\\\\S{}" "" ) - ("{\\?`}" "") - ("{!`}" "") - ("\\?`" "") - ("!`" "") + ("{\\\\pounds}" "£" ) + ("{\\\\P}" "¶" ) + ("{\\\\S}" "§" ) + ("\\\\pounds{}" "£" ) + ("\\\\P{}" "¶" ) + ("\\\\S{}" "§" ) + ("{\\?`}" "¿") + ("{!`}" "¡") + ("\\?`" "¿") + ("!`" "¡") ) "Translation table for translating TeX sequences to ISO 8859-1 characters. This table is not exhaustive (and due to TeX's power can never be). @@ -397,185 +397,185 @@ (defvar iso-gtex2iso-trans-tab '( - ("{\\\\\"a}" "") - ("{\\\\`a}" "") - ("{\\\\'a}" "") - ("{\\\\~a}" "") - ("{\\\\^a}" "") - ("{\\\\\"e}" "") - ("{\\\\`e}" "") - ("{\\\\'e}" "") - ("{\\\\^e}" "") - ("{\\\\\"\\\\i}" "") - ("{\\\\`\\\\i}" "") - ("{\\\\'\\\\i}" "") - ("{\\\\^\\\\i}" "") - ("{\\\\\"i}" "") - ("{\\\\`i}" "") - ("{\\\\'i}" "") - ("{\\\\^i}" "") - ("{\\\\\"o}" "") - ("{\\\\`o}" "") - ("{\\\\'o}" "") - ("{\\\\~o}" "") - ("{\\\\^o}" "") - ("{\\\\\"u}" "") - ("{\\\\`u}" "") - ("{\\\\'u}" "") - ("{\\\\^u}" "") - ("{\\\\\"A}" "") - ("{\\\\`A}" "") - ("{\\\\'A}" "") - ("{\\\\~A}" "") - ("{\\\\^A}" "") - ("{\\\\\"E}" "") - ("{\\\\`E}" "") - ("{\\\\'E}" "") - ("{\\\\^E}" "") - ("{\\\\\"I}" "") - ("{\\\\`I}" "") - ("{\\\\'I}" "") - ("{\\\\^I}" "") - ("{\\\\\"O}" "") - ("{\\\\`O}" "") - ("{\\\\'O}" "") - ("{\\\\~O}" "") - ("{\\\\^O}" "") - ("{\\\\\"U}" "") - ("{\\\\`U}" "") - ("{\\\\'U}" "") - ("{\\\\^U}" "") - ("{\\\\~n}" "") - ("{\\\\~N}" "") - ("{\\\\c c}" "") - ("{\\\\c C}" "") - ("\\\\\"a" "") - ("\\\\`a" "") - ("\\\\'a" "") - ("\\\\~a" "") - ("\\\\^a" "") - ("\\\\\"e" "") - ("\\\\`e" "") - ("\\\\'e" "") - ("\\\\^e" "") - ("\\\\\"\\\\i" "") - ("\\\\`\\\\i" "") - ("\\\\'\\\\i" "") - ("\\\\^\\\\i" "") - ("\\\\\"i" "") - ("\\\\`i" "") - ("\\\\'i" "") - ("\\\\^i" "") - ("\\\\\"o" "") - ("\\\\`o" "") - ("\\\\'o" "") - ("\\\\~o" "") - ("\\\\^o" "") - ("\\\\\"u" "") - ("\\\\`u" "") - ("\\\\'u" "") - ("\\\\^u" "") - ("\\\\\"A" "") - ("\\\\`A" "") - ("\\\\'A" "") - ("\\\\~A" "") - ("\\\\^A" "") - ("\\\\\"E" "") - ("\\\\`E" "") - ("\\\\'E" "") - ("\\\\^E" "") - ("\\\\\"I" "") - ("\\\\`I" "") - ("\\\\'I" "") - ("\\\\^I" "") - ("\\\\\"O" "") - ("\\\\`O" "") - ("\\\\'O" "") - ("\\\\~O" "") - ("\\\\^O" "") - ("\\\\\"U" "") - ("\\\\`U" "") - ("\\\\'U" "") - ("\\\\^U" "") - ("\\\\~n" "") - ("\\\\~N" "") - ("\\\\\"{a}" "") - ("\\\\`{a}" "") - ("\\\\'{a}" "") - ("\\\\~{a}" "") - ("\\\\^{a}" "") - ("\\\\\"{e}" "") - ("\\\\`{e}" "") - ("\\\\'{e}" "") - ("\\\\^{e}" "") - ("\\\\\"{\\\\i}" "") - ("\\\\`{\\\\i}" "") - ("\\\\'{\\\\i}" "") - ("\\\\^{\\\\i}" "") - ("\\\\\"{i}" "") - ("\\\\`{i}" "") - ("\\\\'{i}" "") - ("\\\\^{i}" "") - ("\\\\\"{o}" "") - ("\\\\`{o}" "") - ("\\\\'{o}" "") - ("\\\\~{o}" "") - ("\\\\^{o}" "") - ("\\\\\"{u}" "") - ("\\\\`{u}" "") - ("\\\\'{u}" "") - ("\\\\^{u}" "") - ("\\\\\"{A}" "") - ("\\\\`{A}" "") - ("\\\\'{A}" "") - ("\\\\~{A}" "") - ("\\\\^{A}" "") - ("\\\\\"{E}" "") - ("\\\\`{E}" "") - ("\\\\'{E}" "") - ("\\\\^{E}" "") - ("\\\\\"{I}" "") - ("\\\\`{I}" "") - ("\\\\'{I}" "") - ("\\\\^{I}" "") - ("\\\\\"{O}" "") - ("\\\\`{O}" "") - ("\\\\'{O}" "") - ("\\\\~{O}" "") - ("\\\\^{O}" "") - ("\\\\\"{U}" "") - ("\\\\`{U}" "") - ("\\\\'{U}" "") - ("\\\\^{U}" "") - ("\\\\~{n}" "") - ("\\\\~{N}" "") - ("\\\\c{c}" "") - ("\\\\c{C}" "") - ("{\\\\ss}" "") + ("{\\\\\"a}" "ä") + ("{\\\\`a}" "à") + ("{\\\\'a}" "á") + ("{\\\\~a}" "ã") + ("{\\\\^a}" "â") + ("{\\\\\"e}" "ë") + ("{\\\\`e}" "è") + ("{\\\\'e}" "é") + ("{\\\\^e}" "ê") + ("{\\\\\"\\\\i}" "ï") + ("{\\\\`\\\\i}" "ì") + ("{\\\\'\\\\i}" "í") + ("{\\\\^\\\\i}" "î") + ("{\\\\\"i}" "ï") + ("{\\\\`i}" "ì") + ("{\\\\'i}" "í") + ("{\\\\^i}" "î") + ("{\\\\\"o}" "ö") + ("{\\\\`o}" "ò") + ("{\\\\'o}" "ó") + ("{\\\\~o}" "õ") + ("{\\\\^o}" "ô") + ("{\\\\\"u}" "ü") + ("{\\\\`u}" "ù") + ("{\\\\'u}" "ú") + ("{\\\\^u}" "û") + ("{\\\\\"A}" "Ä") + ("{\\\\`A}" "À") + ("{\\\\'A}" "Á") + ("{\\\\~A}" "Ã") + ("{\\\\^A}" "Â") + ("{\\\\\"E}" "Ë") + ("{\\\\`E}" "È") + ("{\\\\'E}" "É") + ("{\\\\^E}" "Ê") + ("{\\\\\"I}" "Ï") + ("{\\\\`I}" "Ì") + ("{\\\\'I}" "Í") + ("{\\\\^I}" "Î") + ("{\\\\\"O}" "Ö") + ("{\\\\`O}" "Ò") + ("{\\\\'O}" "Ó") + ("{\\\\~O}" "Õ") + ("{\\\\^O}" "Ô") + ("{\\\\\"U}" "Ü") + ("{\\\\`U}" "Ù") + ("{\\\\'U}" "Ú") + ("{\\\\^U}" "Û") + ("{\\\\~n}" "ñ") + ("{\\\\~N}" "Ñ") + ("{\\\\c c}" "ç") + ("{\\\\c C}" "Ç") + ("\\\\\"a" "ä") + ("\\\\`a" "à") + ("\\\\'a" "á") + ("\\\\~a" "ã") + ("\\\\^a" "â") + ("\\\\\"e" "ë") + ("\\\\`e" "è") + ("\\\\'e" "é") + ("\\\\^e" "ê") + ("\\\\\"\\\\i" "ï") + ("\\\\`\\\\i" "ì") + ("\\\\'\\\\i" "í") + ("\\\\^\\\\i" "î") + ("\\\\\"i" "ï") + ("\\\\`i" "ì") + ("\\\\'i" "í") + ("\\\\^i" "î") + ("\\\\\"o" "ö") + ("\\\\`o" "ò") + ("\\\\'o" "ó") + ("\\\\~o" "õ") + ("\\\\^o" "ô") + ("\\\\\"u" "ü") + ("\\\\`u" "ù") + ("\\\\'u" "ú") + ("\\\\^u" "û") + ("\\\\\"A" "Ä") + ("\\\\`A" "À") + ("\\\\'A" "Á") + ("\\\\~A" "Ã") + ("\\\\^A" "Â") + ("\\\\\"E" "Ë") + ("\\\\`E" "È") + ("\\\\'E" "É") + ("\\\\^E" "Ê") + ("\\\\\"I" "Ï") + ("\\\\`I" "Ì") + ("\\\\'I" "Í") + ("\\\\^I" "Î") + ("\\\\\"O" "Ö") + ("\\\\`O" "Ò") + ("\\\\'O" "Ó") + ("\\\\~O" "Õ") + ("\\\\^O" "Ô") + ("\\\\\"U" "Ü") + ("\\\\`U" "Ù") + ("\\\\'U" "Ú") + ("\\\\^U" "Û") + ("\\\\~n" "ñ") + ("\\\\~N" "Ñ") + ("\\\\\"{a}" "ä") + ("\\\\`{a}" "à") + ("\\\\'{a}" "á") + ("\\\\~{a}" "ã") + ("\\\\^{a}" "â") + ("\\\\\"{e}" "ë") + ("\\\\`{e}" "è") + ("\\\\'{e}" "é") + ("\\\\^{e}" "ê") + ("\\\\\"{\\\\i}" "ï") + ("\\\\`{\\\\i}" "ì") + ("\\\\'{\\\\i}" "í") + ("\\\\^{\\\\i}" "î") + ("\\\\\"{i}" "ï") + ("\\\\`{i}" "ì") + ("\\\\'{i}" "í") + ("\\\\^{i}" "î") + ("\\\\\"{o}" "ö") + ("\\\\`{o}" "ò") + ("\\\\'{o}" "ó") + ("\\\\~{o}" "õ") + ("\\\\^{o}" "ô") + ("\\\\\"{u}" "ü") + ("\\\\`{u}" "ù") + ("\\\\'{u}" "ú") + ("\\\\^{u}" "û") + ("\\\\\"{A}" "Ä") + ("\\\\`{A}" "À") + ("\\\\'{A}" "Á") + ("\\\\~{A}" "Ã") + ("\\\\^{A}" "Â") + ("\\\\\"{E}" "Ë") + ("\\\\`{E}" "È") + ("\\\\'{E}" "É") + ("\\\\^{E}" "Ê") + ("\\\\\"{I}" "Ï") + ("\\\\`{I}" "Ì") + ("\\\\'{I}" "Í") + ("\\\\^{I}" "Î") + ("\\\\\"{O}" "Ö") + ("\\\\`{O}" "Ò") + ("\\\\'{O}" "Ó") + ("\\\\~{O}" "Õ") + ("\\\\^{O}" "Ô") + ("\\\\\"{U}" "Ü") + ("\\\\`{U}" "Ù") + ("\\\\'{U}" "Ú") + ("\\\\^{U}" "Û") + ("\\\\~{n}" "ñ") + ("\\\\~{N}" "Ñ") + ("\\\\c{c}" "ç") + ("\\\\c{C}" "Ç") + ("{\\\\ss}" "ß") ("{\\\\AE}" "\306") ("{\\\\ae}" "\346") ("{\\\\AA}" "\305") ("{\\\\aa}" "\345") ("{\\\\copyright}" "\251") ("\\\\copyright{}" "\251") - ("{\\\\pounds}" "" ) - ("{\\\\P}" "" ) - ("{\\\\S}" "" ) - ("\\\\pounds{}" "" ) - ("\\\\P{}" "" ) - ("\\\\S{}" "" ) - ("?`" "") - ("!`" "") - ("{?`}" "") - ("{!`}" "") - ("\"a" "") - ("\"A" "") - ("\"o" "") - ("\"O" "") - ("\"u" "") - ("\"U" "") - ("\"s" "") - ("\\\\3" "") + ("{\\\\pounds}" "£" ) + ("{\\\\P}" "¶" ) + ("{\\\\S}" "§" ) + ("\\\\pounds{}" "£" ) + ("\\\\P{}" "¶" ) + ("\\\\S{}" "§" ) + ("?`" "¿") + ("!`" "¡") + ("{?`}" "¿") + ("{!`}" "¡") + ("\"a" "ä") + ("\"A" "Ä") + ("\"o" "ö") + ("\"O" "Ö") + ("\"u" "ü") + ("\"U" "Ü") + ("\"s" "ß") + ("\\\\3" "ß") ) "Translation table for translating German TeX sequences to ISO 8859-1. This table is not exhaustive (and due to TeX's power can never be). @@ -583,65 +583,65 @@ (defvar iso-iso2gtex-trans-tab '( - ("" "\"a") - ("" "{\\\\`a}") - ("" "{\\\\'a}") - ("" "{\\\\~a}") - ("" "{\\\\^a}") - ("" "{\\\\\"e}") - ("" "{\\\\`e}") - ("" "{\\\\'e}") - ("" "{\\\\^e}") - ("" "{\\\\\"\\\\i}") - ("" "{\\\\`\\\\i}") - ("" "{\\\\'\\\\i}") - ("" "{\\\\^\\\\i}") - ("" "\"o") - ("" "{\\\\`o}") - ("" "{\\\\'o}") - ("" "{\\\\~o}") - ("" "{\\\\^o}") - ("" "\"u") - ("" "{\\\\`u}") - ("" "{\\\\'u}") - ("" "{\\\\^u}") - ("" "\"A") - ("" "{\\\\`A}") - ("" "{\\\\'A}") - ("" "{\\\\~A}") - ("" "{\\\\^A}") - ("" "{\\\\\"E}") - ("" "{\\\\`E}") - ("" "{\\\\'E}") - ("" "{\\\\^E}") - ("" "{\\\\\"I}") - ("" "{\\\\`I}") - ("" "{\\\\'I}") - ("" "{\\\\^I}") - ("" "\"O") - ("" "{\\\\`O}") - ("" "{\\\\'O}") - ("" "{\\\\~O}") - ("" "{\\\\^O}") - ("" "\"U") - ("" "{\\\\`U}") - ("" "{\\\\'U}") - ("" "{\\\\^U}") - ("" "{\\\\~n}") - ("" "{\\\\~N}") - ("" "{\\\\c c}") - ("" "{\\\\c C}") - ("" "\"s") + ("ä" "\"a") + ("à" "{\\\\`a}") + ("á" "{\\\\'a}") + ("ã" "{\\\\~a}") + ("â" "{\\\\^a}") + ("ë" "{\\\\\"e}") + ("è" "{\\\\`e}") + ("é" "{\\\\'e}") + ("ê" "{\\\\^e}") + ("ï" "{\\\\\"\\\\i}") + ("ì" "{\\\\`\\\\i}") + ("í" "{\\\\'\\\\i}") + ("î" "{\\\\^\\\\i}") + ("ö" "\"o") + ("ò" "{\\\\`o}") + ("ó" "{\\\\'o}") + ("õ" "{\\\\~o}") + ("ô" "{\\\\^o}") + ("ü" "\"u") + ("ù" "{\\\\`u}") + ("ú" "{\\\\'u}") + ("û" "{\\\\^u}") + ("Ä" "\"A") + ("À" "{\\\\`A}") + ("Á" "{\\\\'A}") + ("Ã" "{\\\\~A}") + ("Â" "{\\\\^A}") + ("Ë" "{\\\\\"E}") + ("È" "{\\\\`E}") + ("É" "{\\\\'E}") + ("Ê" "{\\\\^E}") + ("Ï" "{\\\\\"I}") + ("Ì" "{\\\\`I}") + ("Í" "{\\\\'I}") + ("Î" "{\\\\^I}") + ("Ö" "\"O") + ("Ò" "{\\\\`O}") + ("Ó" "{\\\\'O}") + ("Õ" "{\\\\~O}") + ("Ô" "{\\\\^O}") + ("Ü" "\"U") + ("Ù" "{\\\\`U}") + ("Ú" "{\\\\'U}") + ("Û" "{\\\\^U}") + ("ñ" "{\\\\~n}") + ("Ñ" "{\\\\~N}") + ("ç" "{\\\\c c}") + ("Ç" "{\\\\c C}") + ("ß" "\"s") ("\306" "{\\\\AE}") ("\346" "{\\\\ae}") ("\305" "{\\\\AA}") ("\345" "{\\\\aa}") ("\251" "{\\\\copyright}") - ("" "{\\\\pounds}") - ("" "{\\\\P}") - ("" "{\\\\S}") - ("" "{?`}") - ("" "{!`}") + ("£" "{\\\\pounds}") + ("¶" "{\\\\P}") + ("§" "{\\\\S}") + ("¿" "{?`}") + ("¡" "{!`}") ) "Translation table for translating ISO 8859-1 characters to German TeX.") @@ -664,13 +664,13 @@ (iso-translate-conventions from to iso-iso2gtex-trans-tab)) (defvar iso-iso2duden-trans-tab - '(("" "ae") - ("" "Ae") - ("" "oe") - ("" "Oe") - ("" "ue") - ("" "Ue") - ("" "ss")) + '(("ä" "ae") + ("Ä" "Ae") + ("ö" "oe") + ("Ö" "Oe") + ("ü" "ue") + ("Ü" "Ue") + ("ß" "ss")) "Translation table for translating ISO 8859-1 characters to Duden sequences.") ;;;###autoload @@ -683,133 +683,133 @@ (iso-translate-conventions from to iso-iso2duden-trans-tab)) (defvar iso-iso2sgml-trans-tab - '(("" "À") - ("" "Á") - ("" "Â") - ("" "Ã") - ("" "Ä") - ("" "Å") - ("" "Æ") - ("" "Ç") - ("" "È") - ("" "É") - ("" "Ê") - ("" "Ë") - ("" "Ì") - ("" "Í") - ("" "Î") - ("" "Ï") - ("" "Ð") - ("" "Ñ") - ("" "Ò") - ("" "Ó") - ("" "Ô") - ("" "Õ") - ("" "Ö") - ("" "Ø") - ("" "Ù") - ("" "Ú") - ("" "Û") - ("" "Ü") - ("" "Ý") - ("" "Þ") - ("" "ß") - ("" "à") - ("" "á") - ("" "â") - ("" "ã") - ("" "ä") - ("" "å") - ("" "æ") - ("" "ç") - ("" "è") - ("" "é") - ("" "ê") - ("" "ë") - ("" "ì") - ("" "í") - ("" "î") - ("" "ï") - ("" "ð") - ("" "ñ") - ("" "ò") - ("" "ó") - ("" "ô") - ("" "õ") - ("" "ö") - ("" "ø") - ("" "ù") - ("" "ú") - ("" "û") - ("" "ü") - ("" "ý") - ("" "þ") - ("" "ÿ"))) + '(("À" "À") + ("Á" "Á") + ("Â" "Â") + ("Ã" "Ã") + ("Ä" "Ä") + ("Å" "Å") + ("Æ" "Æ") + ("Ç" "Ç") + ("È" "È") + ("É" "É") + ("Ê" "Ê") + ("Ë" "Ë") + ("Ì" "Ì") + ("Í" "Í") + ("Î" "Î") + ("Ï" "Ï") + ("Ð" "Ð") + ("Ñ" "Ñ") + ("Ò" "Ò") + ("Ó" "Ó") + ("Ô" "Ô") + ("Õ" "Õ") + ("Ö" "Ö") + ("Ø" "Ø") + ("Ù" "Ù") + ("Ú" "Ú") + ("Û" "Û") + ("Ü" "Ü") + ("Ý" "Ý") + ("Þ" "Þ") + ("ß" "ß") + ("à" "à") + ("á" "á") + ("â" "â") + ("ã" "ã") + ("ä" "ä") + ("å" "å") + ("æ" "æ") + ("ç" "ç") + ("è" "è") + ("é" "é") + ("ê" "ê") + ("ë" "ë") + ("ì" "ì") + ("í" "í") + ("î" "î") + ("ï" "ï") + ("ð" "ð") + ("ñ" "ñ") + ("ò" "ò") + ("ó" "ó") + ("ô" "ô") + ("õ" "õ") + ("ö" "ö") + ("ø" "ø") + ("ù" "ù") + ("ú" "ú") + ("û" "û") + ("ü" "ü") + ("ý" "ý") + ("þ" "þ") + ("ÿ" "ÿ"))) (defvar iso-sgml2iso-trans-tab - '(("À" "") - ("Á" "") - ("Â" "") - ("Ã" "") - ("Ä" "") - ("Å" "") - ("Æ" "") - ("Ç" "") - ("È" "") - ("É" "") - ("Ê" "") - ("Ë" "") - ("Ì" "") - ("Í" "") - ("Î" "") - ("Ï" "") - ("Ð" "") - ("Ñ" "") - ("Ò" "") - ("Ó" "") - ("Ô" "") - ("Õ" "") - ("Ö" "") - ("Ø" "") - ("Ù" "") - ("Ú" "") - ("Û" "") - ("Ü" "") - ("Ý" "") - ("Þ" "") - ("ß" "") - ("à" "") - ("á" "") - ("â" "") - ("ã" "") - ("ä" "") - ("å" "") - ("æ" "") - ("ç" "") - ("è" "") - ("é" "") - ("ê" "") - ("ë" "") - ("ì" "") - ("í" "") - ("î" "") - ("ï" "") - ("ð" "") - ("ñ" "") - (" " "") - ("ò" "") - ("ó" "") - ("ô" "") - ("õ" "") - ("ö" "") - ("ø" "") - ("ù" "") - ("ú" "") - ("û" "") - ("ü" "") - ("ý" "") - ("þ" "") - ("ÿ" ""))) + '(("À" "À") + ("Á" "Á") + ("Â" "Â") + ("Ã" "Ã") + ("Ä" "Ä") + ("Å" "Å") + ("Æ" "Æ") + ("Ç" "Ç") + ("È" "È") + ("É" "É") + ("Ê" "Ê") + ("Ë" "Ë") + ("Ì" "Ì") + ("Í" "Í") + ("Î" "Î") + ("Ï" "Ï") + ("Ð" "Ð") + ("Ñ" "Ñ") + ("Ò" "Ò") + ("Ó" "Ó") + ("Ô" "Ô") + ("Õ" "Õ") + ("Ö" "Ö") + ("Ø" "Ø") + ("Ù" "Ù") + ("Ú" "Ú") + ("Û" "Û") + ("Ü" "Ü") + ("Ý" "Ý") + ("Þ" "Þ") + ("ß" "ß") + ("à" "à") + ("á" "á") + ("â" "â") + ("ã" "ã") + ("ä" "ä") + ("å" "å") + ("æ" "æ") + ("ç" "ç") + ("è" "è") + ("é" "é") + ("ê" "ê") + ("ë" "ë") + ("ì" "ì") + ("í" "í") + ("î" "î") + ("ï" "ï") + ("ð" "ð") + ("ñ" "ñ") + (" " " ") + ("ò" "ò") + ("ó" "ó") + ("ô" "ô") + ("õ" "õ") + ("ö" "ö") + ("ø" "ø") + ("ù" "ù") + ("ú" "ú") + ("û" "û") + ("ü" "ü") + ("ý" "ý") + ("þ" "þ") + ("ÿ" "ÿ"))) ;;;###autoload (defun iso-iso2sgml (from to &optional buffer) === modified file 'lisp/international/iso-transl.el' --- lisp/international/iso-transl.el 2013-01-01 09:11:05 +0000 +++ lisp/international/iso-transl.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: iso-8859-1 -*- +;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: utf-8 -*- ;; Copyright (C) 1987, 1993-1999, 2001-2013 Free Software Foundation, ;; Inc. @@ -73,125 +73,125 @@ ;; language-specific table might override the short form for its own use. (defvar iso-transl-char-map - '(("* " . [?]) - (" " . [?]) - ("*!" . [?]) - ("!" . [?]) - ("\"\"" . [?]) - ("\"A" . [?]) - ("\"E" . [?]) - ("\"I" . [?]) - ("\"O" . [?]) - ("\"U" . [?]) - ("\"a" . [?]) - ("\"e" . [?]) - ("\"i" . [?]) - ("\"o" . [?]) - ("\"s" . [?]) - ("\"u" . [?]) - ("\"y" . [?]) - ("''" . [?]) - ("'A" . [?]) - ("'E" . [?]) - ("'I" . [?]) - ("'O" . [?]) - ("'U" . [?]) - ("'Y" . [?]) - ("'a" . [?]) - ("'e" . [?]) - ("'i" . [?]) - ("'o" . [?]) - ("'u" . [?]) - ("'y" . [?]) - ("*$" . [?]) - ("$" . [?]) - ("*+" . [?]) - ("+" . [?]) - (",," . [?]) - (",C" . [?]) - (",c" . [?]) - ("*-" . [?]) - ("-" . [?]) - ("*." . [?]) - ("." . [?]) - ("//" . [?]) - ("/A" . [?]) - ("/E" . [?]) - ("/O" . [?]) - ("/a" . [?]) - ("/e" . [?]) - ("/o" . [?]) - ("1/2" . [?]) - ("1/4" . [?]) - ("3/4" . [?]) - ("*<" . [?]) - ("<" . [?]) - ("*=" . [?]) - ("=" . [?]) - ("*>" . [?]) - (">" . [?]) - ("*?" . [?]) - ("?" . [?]) - ("*C" . [?]) - ("C" . [?]) - ("*L" . [?]) - ("L" . [?]) - ("*P" . [?]) - ("P" . [?]) - ("*R" . [?]) - ("R" . [?]) - ("*S" . [?]) - ("S" . [?]) - ("*Y" . [?]) - ("Y" . [?]) - ("^1" . [?]) - ("^2" . [?]) - ("^3" . [?]) - ("^A" . [?]) - ("^E" . [?]) - ("^I" . [?]) - ("^O" . [?]) - ("^U" . [?]) - ("^a" . [?]) - ("^e" . [?]) - ("^i" . [?]) - ("^o" . [?]) - ("^u" . [?]) - ("_a" . [?]) - ("_o" . [?]) - ("`A" . [?]) - ("`E" . [?]) - ("`I" . [?]) - ("`O" . [?]) - ("`U" . [?]) - ("`a" . [?]) - ("`e" . [?]) - ("`i" . [?]) - ("`o" . [?]) - ("`u" . [?]) - ("*c" . [?]) - ("c" . [?]) - ("*o" . [?]) - ("o" . [?]) - ("*u" . [?]) - ("u" . [?]) - ("*m" . [?]) - ("m" . [?]) - ("*x" . [?]) - ("x" . [?]) - ("*|" . [?]) - ("|" . [?]) - ("~A" . [?]) - ("~D" . [?]) - ("~N" . [?]) - ("~O" . [?]) - ("~T" . [?]) - ("~a" . [?]) - ("~d" . [?]) - ("~n" . [?]) - ("~o" . [?]) - ("~t" . [?]) - ("~~" . [?]) + '(("* " . [? ]) + (" " . [? ]) + ("*!" . [?¡]) + ("!" . [?¡]) + ("\"\"" . [?¨]) + ("\"A" . [?Ä]) + ("\"E" . [?Ë]) + ("\"I" . [?Ï]) + ("\"O" . [?Ö]) + ("\"U" . [?Ü]) + ("\"a" . [?ä]) + ("\"e" . [?ë]) + ("\"i" . [?ï]) + ("\"o" . [?ö]) + ("\"s" . [?ß]) + ("\"u" . [?ü]) + ("\"y" . [?ÿ]) + ("''" . [?´]) + ("'A" . [?Á]) + ("'E" . [?É]) + ("'I" . [?Í]) + ("'O" . [?Ó]) + ("'U" . [?Ú]) + ("'Y" . [?Ý]) + ("'a" . [?á]) + ("'e" . [?é]) + ("'i" . [?í]) + ("'o" . [?ó]) + ("'u" . [?ú]) + ("'y" . [?ý]) + ("*$" . [?¤]) + ("$" . [?¤]) + ("*+" . [?±]) + ("+" . [?±]) + (",," . [?¸]) + (",C" . [?Ç]) + (",c" . [?ç]) + ("*-" . [?­]) + ("-" . [?­]) + ("*." . [?·]) + ("." . [?·]) + ("//" . [?÷]) + ("/A" . [?Å]) + ("/E" . [?Æ]) + ("/O" . [?Ø]) + ("/a" . [?å]) + ("/e" . [?æ]) + ("/o" . [?ø]) + ("1/2" . [?½]) + ("1/4" . [?¼]) + ("3/4" . [?¾]) + ("*<" . [?«]) + ("<" . [?«]) + ("*=" . [?¯]) + ("=" . [?¯]) + ("*>" . [?»]) + (">" . [?»]) + ("*?" . [?¿]) + ("?" . [?¿]) + ("*C" . [?©]) + ("C" . [?©]) + ("*L" . [?£]) + ("L" . [?£]) + ("*P" . [?¶]) + ("P" . [?¶]) + ("*R" . [?®]) + ("R" . [?®]) + ("*S" . [?§]) + ("S" . [?§]) + ("*Y" . [?¥]) + ("Y" . [?¥]) + ("^1" . [?¹]) + ("^2" . [?²]) + ("^3" . [?³]) + ("^A" . [?Â]) + ("^E" . [?Ê]) + ("^I" . [?Î]) + ("^O" . [?Ô]) + ("^U" . [?Û]) + ("^a" . [?â]) + ("^e" . [?ê]) + ("^i" . [?î]) + ("^o" . [?ô]) + ("^u" . [?û]) + ("_a" . [?ª]) + ("_o" . [?º]) + ("`A" . [?À]) + ("`E" . [?È]) + ("`I" . [?Ì]) + ("`O" . [?Ò]) + ("`U" . [?Ù]) + ("`a" . [?à]) + ("`e" . [?è]) + ("`i" . [?ì]) + ("`o" . [?ò]) + ("`u" . [?ù]) + ("*c" . [?¢]) + ("c" . [?¢]) + ("*o" . [?°]) + ("o" . [?°]) + ("*u" . [?µ]) + ("u" . [?µ]) + ("*m" . [?µ]) + ("m" . [?µ]) + ("*x" . [?×]) + ("x" . [?×]) + ("*|" . [?¦]) + ("|" . [?¦]) + ("~A" . [?Ã]) + ("~D" . [?Ð]) + ("~N" . [?Ñ]) + ("~O" . [?Õ]) + ("~T" . [?Þ]) + ("~a" . [?ã]) + ("~d" . [?ð]) + ("~n" . [?ñ]) + ("~o" . [?õ]) + ("~t" . [?þ]) + ("~~" . [?¬]) ("' " . "'") ("` " . "`") ("\" " . "\"") @@ -205,37 +205,37 @@ ;; Language-specific translation lists. (defvar iso-transl-language-alist '(("Esperanto" - ("C" . [?]) - ("G" . [?]) - ("H" . [?]) - ("J" . [?]) - ("S" . [?]) - ("U" . [?]) - ("c" . [?]) - ("g" . [?]) - ("h" . [?]) - ("j" . [?]) - ("s" . [?]) - ("u" . [?])) + ("C" . [?Æ]) + ("G" . [?Ø]) + ("H" . [?¦]) + ("J" . [?¬]) + ("S" . [?Þ]) + ("U" . [?Ý]) + ("c" . [?æ]) + ("g" . [?ø]) + ("h" . [?¶]) + ("j" . [?¼]) + ("s" . [?þ]) + ("u" . [?ý])) ("French" - ("C" . [?]) - ("c" . [?])) + ("C" . [?Ç]) + ("c" . [?ç])) ("German" - ("A" . [?]) - ("O" . [?]) - ("U" . [?]) - ("a" . [?]) - ("o" . [?]) - ("s" . [?]) - ("u" . [?])) + ("A" . [?Ä]) + ("O" . [?Ö]) + ("U" . [?Ü]) + ("a" . [?ä]) + ("o" . [?ö]) + ("s" . [?ß]) + ("u" . [?ü])) ("Portuguese" - ("C" . [?]) - ("c" . [?])) + ("C" . [?Ç]) + ("c" . [?ç])) ("Spanish" - ("!" . [?]) - ("?" . [?]) - ("N" . [?]) - ("n" . [?])))) + ("!" . [?¡]) + ("?" . [?¿]) + ("N" . [?Ñ]) + ("n" . [?ñ])))) (defvar iso-transl-ctl-x-8-map nil "Keymap for C-x 8 prefix.") === modified file 'lisp/language/romanian.el' --- lisp/language/romanian.el 2013-01-01 09:11:05 +0000 +++ lisp/language/romanian.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; romanian.el --- support for Romanian -*- coding: iso-latin-2 -*- +;;; romanian.el --- support for Romanian -*- coding: utf-8 -*- ;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc. @@ -34,7 +34,7 @@ (input-method . "latin-2-postfix") (unibyte-display . iso-8859-2) (tutorial . "TUTORIAL.ro") - (sample-text . "Bun ziua, bine ai venit!") + (sample-text . "Bună ziua, bine aţi venit!") (documentation . "Romanian environment using Latin-2 encoding. An environment for generic Latin-10 encoding is also available.")) '("European")) === modified file 'lisp/mh-e/ChangeLog.1' --- lisp/mh-e/ChangeLog.1 2013-01-01 09:11:05 +0000 +++ lisp/mh-e/ChangeLog.1 2013-03-05 17:13:01 +0000 @@ -5114,7 +5114,7 @@ (mail-abbrevs): Declare it in XEmacs. (mh-alias-add-alias-to-file): Remove unused code. -2003-02-14 Ville Skytt <scop@xemacs.org> +2003-02-14 Ville Skyttä <scop@xemacs.org> * mh-comp.el: Add autoloaded auto-mode-alist association. @@ -11416,3 +11416,7 @@ You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Local Variables: +;; coding: utf-8 +;; End: === modified file 'lisp/net/eudc-bob.el' --- lisp/net/eudc-bob.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudc-bob.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudc-bob.el --- Binary Objects Support for EUDC +;;; eudc-bob.el --- Binary Objects Support for EUDC -*- coding: utf-8 -*- ;; Copyright (C) 1999-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudc-export.el' --- lisp/net/eudc-export.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudc-export.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudc-export.el --- functions to export EUDC query results +;;; eudc-export.el --- functions to export EUDC query results -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudc-hotlist.el' --- lisp/net/eudc-hotlist.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudc-hotlist.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudc-hotlist.el --- hotlist management for EUDC +;;; eudc-hotlist.el --- hotlist management for EUDC -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudc-vars.el' --- lisp/net/eudc-vars.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudc-vars.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudc-vars.el --- Emacs Unified Directory Client +;;; eudc-vars.el --- Emacs Unified Directory Client -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudc.el' --- lisp/net/eudc.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudc.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudc.el --- Emacs Unified Directory Client +;;; eudc.el --- Emacs Unified Directory Client -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; This file is part of GNU Emacs. === modified file 'lisp/net/eudcb-bbdb.el' --- lisp/net/eudcb-bbdb.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudcb-bbdb.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend +;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudcb-ldap.el' --- lisp/net/eudcb-ldap.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudcb-ldap.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend +;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/net/eudcb-ph.el' --- lisp/net/eudcb-ph.el 2013-01-01 09:11:05 +0000 +++ lisp/net/eudcb-ph.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend +;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend -*- coding: utf-8 -*- ;; Copyright (C) 1998-2013 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo <oscar@cpe.fr> -;; Maintainer: Pavel Jank <Pavel@Janik.cz> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> ;; Keywords: comm ;; Package: eudc === modified file 'lisp/obsolete/iso-insert.el' --- lisp/obsolete/iso-insert.el 2013-01-01 09:11:05 +0000 +++ lisp/obsolete/iso-insert.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; iso-insert.el --- insert functions for ISO 8859/1 -*- coding: iso-8859-1;-*- +;;; iso-insert.el --- insert functions for ISO 8859/1 -*- coding: utf-8;-*- ;; Copyright (C) 1987, 1994, 2001-2013 Free Software Foundation, Inc. @@ -31,482 +31,482 @@ (defun insert-no-break-space () (interactive "*") - (insert ?\) + (insert ?\ ) ) (defun insert-inverted-exclamation-mark () (interactive "*") - (insert ?\) + (insert ?\¡) ) (defun insert-cent-sign () (interactive "*") - (insert ?\) + (insert ?\¢) ) (defun insert-pound-sign () (interactive "*") - (insert ?\) + (insert ?\£) ) (defun insert-general-currency-sign () (interactive "*") - (insert ?\) + (insert ?\¤) ) (defun insert-yen-sign () (interactive "*") - (insert ?\) + (insert ?\¥) ) (defun insert-broken-vertical-line () (interactive "*") - (insert ?\) + (insert ?\¦) ) (defun insert-section-sign () (interactive "*") - (insert ?\) + (insert ?\§) ) (defun insert-diaeresis () (interactive "*") - (insert ?\) + (insert ?\¨) ) (defun insert-copyright-sign () (interactive "*") - (insert ?\) + (insert ?\©) ) (defun insert-ordinal-indicator-feminine () (interactive "*") - (insert ?\) + (insert ?\ª) ) (defun insert-angle-quotation-mark-left () (interactive "*") - (insert ?\) + (insert ?\«) ) (defun insert-not-sign () (interactive "*") - (insert ?\) + (insert ?\¬) ) (defun insert-soft-hyphen () (interactive "*") - (insert ?\) + (insert ?\­) ) (defun insert-registered-sign () (interactive "*") - (insert ?\) + (insert ?\®) ) (defun insert-macron () (interactive "*") - (insert ?\) + (insert ?\¯) ) (defun insert-degree-sign () (interactive "*") - (insert ?\) + (insert ?\°) ) (defun insert-plus-or-minus-sign () (interactive "*") - (insert ?\) + (insert ?\±) ) (defun insert-superscript-two () (interactive "*") - (insert ?\) + (insert ?\²) ) (defun insert-superscript-three () (interactive "*") - (insert ?\) + (insert ?\³) ) (defun insert-acute-accent () (interactive "*") - (insert ?\) + (insert ?\´) ) (defun insert-micro-sign () (interactive "*") - (insert ?\) + (insert ?\µ) ) (defun insert-pilcrow () (interactive "*") - (insert ?\) + (insert ?\¶) ) (defun insert-middle-dot () (interactive "*") - (insert ?\) + (insert ?\·) ) (defun insert-cedilla () (interactive "*") - (insert ?\) + (insert ?\¸) ) (defun insert-superscript-one () (interactive "*") - (insert ?\) + (insert ?\¹) ) (defun insert-ordinal-indicator-masculine () (interactive "*") - (insert ?\) + (insert ?\º) ) (defun insert-angle-quotation-mark-right () (interactive "*") - (insert ?\) + (insert ?\») ) (defun insert-fraction-one-quarter () (interactive "*") - (insert ?\) + (insert ?\¼) ) (defun insert-fraction-one-half () (interactive "*") - (insert ?\) + (insert ?\½) ) (defun insert-fraction-three-quarters () (interactive "*") - (insert ?\) + (insert ?\¾) ) (defun insert-inverted-question-mark () (interactive "*") - (insert ?\) + (insert ?\¿) ) (defun insert-A-grave () (interactive "*") - (insert ?\) + (insert ?\À) ) (defun insert-A-acute () (interactive "*") - (insert ?\) + (insert ?\Á) ) (defun insert-A-circumflex () (interactive "*") - (insert ?\) + (insert ?\Â) ) (defun insert-A-tilde () (interactive "*") - (insert ?\) + (insert ?\Ã) ) (defun insert-A-umlaut () (interactive "*") - (insert ?\) + (insert ?\Ä) ) (defun insert-A-ring () (interactive "*") - (insert ?\) + (insert ?\Å) ) (defun insert-AE () (interactive "*") - (insert ?\) + (insert ?\Æ) ) (defun insert-C-cedilla () (interactive "*") - (insert ?\) + (insert ?\Ç) ) (defun insert-E-grave () (interactive "*") - (insert ?\) + (insert ?\È) ) (defun insert-E-acute () (interactive "*") - (insert ?\) + (insert ?\É) ) (defun insert-E-circumflex () (interactive "*") - (insert ?\) + (insert ?\Ê) ) (defun insert-E-umlaut () (interactive "*") - (insert ?\) + (insert ?\Ë) ) (defun insert-I-grave () (interactive "*") - (insert ?\) + (insert ?\Ì) ) (defun insert-I-acute () (interactive "*") - (insert ?\) + (insert ?\Í) ) (defun insert-I-circumflex () (interactive "*") - (insert ?\) + (insert ?\Î) ) (defun insert-I-umlaut () (interactive "*") - (insert ?\) + (insert ?\Ï) ) (defun insert-D-stroke () (interactive "*") - (insert ?\) + (insert ?\Ð) ) (defun insert-N-tilde () (interactive "*") - (insert ?\) + (insert ?\Ñ) ) (defun insert-O-grave () (interactive "*") - (insert ?\) + (insert ?\Ò) ) (defun insert-O-acute () (interactive "*") - (insert ?\) + (insert ?\Ó) ) (defun insert-O-circumflex () (interactive "*") - (insert ?\) + (insert ?\Ô) ) (defun insert-O-tilde () (interactive "*") - (insert ?\) + (insert ?\Õ) ) (defun insert-O-umlaut () (interactive "*") - (insert ?\) + (insert ?\Ö) ) (defun insert-multiplication-sign () (interactive "*") - (insert ?\) + (insert ?\×) ) (defun insert-O-slash () (interactive "*") - (insert ?\) + (insert ?\Ø) ) (defun insert-U-grave () (interactive "*") - (insert ?\) + (insert ?\Ù) ) (defun insert-U-acute () (interactive "*") - (insert ?\) + (insert ?\Ú) ) (defun insert-U-circumflex () (interactive "*") - (insert ?\) + (insert ?\Û) ) (defun insert-U-umlaut () (interactive "*") - (insert ?\) + (insert ?\Ü) ) (defun insert-Y-acute () (interactive "*") - (insert ?\) + (insert ?\Ý) ) (defun insert-THORN () (interactive "*") - (insert ?\) + (insert ?\Þ) ) (defun insert-ss () (interactive "*") - (insert ?\) + (insert ?\ß) ) (defun insert-a-grave () (interactive "*") - (insert ?\) + (insert ?\à) ) (defun insert-a-acute () (interactive "*") - (insert ?\) + (insert ?\á) ) (defun insert-a-circumflex () (interactive "*") - (insert ?\) + (insert ?\â) ) (defun insert-a-tilde () (interactive "*") - (insert ?\) + (insert ?\ã) ) (defun insert-a-umlaut () (interactive "*") - (insert ?\) + (insert ?\ä) ) (defun insert-a-ring () (interactive "*") - (insert ?\) + (insert ?\å) ) (defun insert-ae () (interactive "*") - (insert ?\) + (insert ?\æ) ) (defun insert-c-cedilla () (interactive "*") - (insert ?\) + (insert ?\ç) ) (defun insert-e-grave () (interactive "*") - (insert ?\) + (insert ?\è) ) (defun insert-e-acute () (interactive "*") - (insert ?\) + (insert ?\é) ) (defun insert-e-circumflex () (interactive "*") - (insert ?\) + (insert ?\ê) ) (defun insert-e-umlaut () (interactive "*") - (insert ?\) + (insert ?\ë) ) (defun insert-i-grave () (interactive "*") - (insert ?\) + (insert ?\ì) ) (defun insert-i-acute () (interactive "*") - (insert ?\) + (insert ?\í) ) (defun insert-i-circumflex () (interactive "*") - (insert ?\) + (insert ?\î) ) (defun insert-i-umlaut () (interactive "*") - (insert ?\) + (insert ?\ï) ) (defun insert-d-stroke () (interactive "*") - (insert ?\) + (insert ?\ð) ) (defun insert-n-tilde () (interactive "*") - (insert ?\) + (insert ?\ñ) ) (defun insert-o-grave () (interactive "*") - (insert ?\) + (insert ?\ò) ) (defun insert-o-acute () (interactive "*") - (insert ?\) + (insert ?\ó) ) (defun insert-o-circumflex () (interactive "*") - (insert ?\) + (insert ?\ô) ) (defun insert-o-tilde () (interactive "*") - (insert ?\) + (insert ?\õ) ) (defun insert-o-umlaut () (interactive "*") - (insert ?\) + (insert ?\ö) ) (defun insert-division-sign () (interactive "*") - (insert ?\) + (insert ?\÷) ) (defun insert-o-slash () (interactive "*") - (insert ?\) + (insert ?\ø) ) (defun insert-u-grave () (interactive "*") - (insert ?\) + (insert ?\ù) ) (defun insert-u-acute () (interactive "*") - (insert ?\) + (insert ?\ú) ) (defun insert-u-circumflex () (interactive "*") - (insert ?\) + (insert ?\û) ) (defun insert-u-umlaut () (interactive "*") - (insert ?\) + (insert ?\ü) ) (defun insert-y-acute () (interactive "*") - (insert ?\) + (insert ?\ý) ) (defun insert-thorn () (interactive "*") - (insert ?\) + (insert ?\þ) ) (defun insert-y-umlaut () (interactive "*") - (insert ?\) + (insert ?\ÿ) ) (defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.") === modified file 'lisp/org/org-freemind.el' --- lisp/org/org-freemind.el 2013-01-01 09:11:05 +0000 +++ lisp/org/org-freemind.el 2013-03-05 17:13:01 +0000 @@ -275,7 +275,7 @@ ))) org-str)))) -;; (let* ((str1 "a quote: \", an amp: &, lt: <; over 256: ") +;; (let* ((str1 "a quote: \", an amp: &, lt: <; over 256: öåäÖÅÄ") ;; (str2 (org-freemind-escape-str-from-org str1)) ;; (str3 (org-freemind-unescape-str-to-org str2))) ;; (unless (string= str1 str3) @@ -1221,6 +1221,7 @@ ;; Local variables: ;; generated-autoload-file: "org-loaddefs.el" +;; coding: utf-8 ;; End: ;;; org-freemind.el ends here === modified file 'lisp/play/bubbles.el' --- lisp/play/bubbles.el 2013-01-01 09:11:05 +0000 +++ lisp/play/bubbles.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; bubbles.el --- Puzzle game for Emacs +;;; bubbles.el --- Puzzle game for Emacs -*- coding: utf-8 -*- ;; Copyright (C) 2007-2013 Free Software Foundation, Inc. @@ -198,7 +198,7 @@ :group 'bubbles) (defcustom bubbles-chars - '(?+ ?O ?# ?X ?. ?* ?& ?) + '(?+ ?O ?# ?X ?. ?* ?& ?§) "Characters used for bubbles. Note that the actual number of different bubbles is determined by the number of colors, see `bubbles-colors'." === modified file 'lisp/play/handwrite.el' --- lisp/play/handwrite.el 2013-01-01 09:11:05 +0000 +++ lisp/play/handwrite.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- coding: iso-latin-1; -*- +;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- coding: utf-8; -*- ;; Copyright (C) 1996, 2001-2013 Free Software Foundation, Inc. @@ -170,15 +170,15 @@ (textp) (ps-buf-name) ;name of the PostScript buffer (trans-table - '(("" . "264") ("" . "207") ("" . "210") ("" . "211") - ("" . "212") ("" . "213") ("" . "214") ("" . "216") - ("" . "217") ("" . "220") ("" . "221") ("" . "222") - ("" . "223") ("" . "224") ("" . "225") ("" . "227") - ("" . "230") ("" . "231") ("" . "232") ("" . "233") - ("" . "234") ("" . "235") ("" . "236") ("" . "237") - ("" . "247") ("" . "241") ("" . "250") ("" . "251") - ("ij" . "264") ("" . "215") ("" . "244") ("" . "226") - ("" . "243"))) + '(("ÿ" . "264") ("á" . "207") ("à" . "210") ("â" . "211") + ("ä" . "212") ("ã" . "213") ("å" . "214") ("é" . "216") + ("è" . "217") ("ê" . "220") ("ë" . "221") ("í" . "222") + ("ì" . "223") ("î" . "224") ("ï" . "225") ("ó" . "227") + ("ò" . "230") ("ô" . "231") ("ö" . "232") ("õ" . "233") + ("ú" . "234") ("ù" . "235") ("û" . "236") ("ü" . "237") + ("ß" . "247") ("°" . "241") ("®" . "250") ("©" . "251") + ("ij" . "264") ("ç" . "215") ("§" . "244") ("ñ" . "226") + ("£" . "243"))) (escape-table '("\\\\" "(" ")")) ; \\ comes first to not work ; on inserted backslashes line) === modified file 'lisp/progmodes/cc-engine.el' --- lisp/progmodes/cc-engine.el 2013-02-07 06:23:54 +0000 +++ lisp/progmodes/cc-engine.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; cc-engine.el --- core syntax guessing engine for CC mode +;;; cc-engine.el --- core syntax guessing engine for CC mode -*- coding: utf-8 -*- ;; Copyright (C) 1985, 1987, 1992-2013 Free Software Foundation, Inc. @@ -2280,25 +2280,25 @@ (while (and c (> (car c) c-state-semi-nonlit-pos-cache-limit)) (setq c (cdr c))) (setq c-state-semi-nonlit-pos-cache c) - + (while (and c (> (car c) here)) (setq high-pos (car c)) (setq c (cdr c))) (setq pos (or (car c) (point-min))) - + (unless high-pos (while ;; Add an element to `c-state-semi-nonlit-pos-cache' each iteration. (and (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here) - + ;; Test for being in a literal. If so, go to after it. (progn (setq lit (car (cddr (c-state-pp-to-literal pos npos)))) (or (null lit) (prog1 (<= (cdr lit) here) (setq npos (cdr lit)))))) - + (setq pos npos) (setq c-state-semi-nonlit-pos-cache (cons pos c-state-semi-nonlit-pos-cache)))) @@ -2606,11 +2606,11 @@ ;; OLD: { (.) {...........} ;; ^ ^ ;; FROM HERE - ;; + ;; ;; NEW: { {....} (.) {......... ;; ^ ^ ^ ;; LOWER BRACE PAIR HERE or HERE - ;; + ;; ;; This routine should be fast. Since it can get called a LOT, we maintain ;; `c-state-brace-pair-desert', a small cache of "failures", such that we ;; reduce the time wasted in repeated fruitless searches in brace deserts. @@ -2907,7 +2907,7 @@ start-point)) (goto-char pos) (while (and c-state-cache - (or (numberp (car c-state-cache)) ; Have we a { at all? + (or (numberp (car c-state-cache)) ; Have we a { at all? (cdr c-state-cache)) (< (point) here)) (cond @@ -4610,7 +4610,7 @@ s ; state 'syntax-table))) ; stop-comment (setq pos (point))) - + ;; Now try and find enough non-literal characters recorded on the stack. ;; Go back one recorded literal each time round this loop. (while (and (< count how-far-back) @@ -8516,8 +8516,8 @@ )) (defun c-looking-at-special-brace-list (&optional lim) - ;; If we're looking at the start of a pike-style list, ie `({})', - ;; `([])', `(<>)' etc, a cons of a cons of its starting and ending + ;; If we're looking at the start of a pike-style list, i.e., `({ })', + ;; `([ ])', `(< >)', etc., a cons of a cons of its starting and ending ;; positions and its entry in c-special-brace-lists is returned, nil ;; otherwise. The ending position is nil if the list is still open. ;; LIM is the limit for forward search. The point may either be at @@ -8762,7 +8762,7 @@ (c-simple-skip-symbol-backward) (looking-at c-macro-with-semi-re) (goto-char pos) - (not (c-in-literal)))))) ; The most expensive check last. + (not (c-in-literal)))))) ; The most expensive check last. (defun c-macro-vsemi-status-unknown-p () t) ; See cc-defs.el. === modified file 'lisp/progmodes/cc-langs.el' --- lisp/progmodes/cc-langs.el 2013-02-12 17:36:54 +0000 +++ lisp/progmodes/cc-langs.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; cc-langs.el --- language specific settings for CC Mode +;;; cc-langs.el --- language specific settings for CC Mode -*- coding: utf-8 -*- ;; Copyright (C) 1985, 1987, 1992-2013 Free Software Foundation, Inc. @@ -2907,7 +2907,7 @@ (c-lang-defconst c-special-brace-lists "List of open- and close-chars that makes up a pike-style brace list, -i.e. for a ([]) list there should be a cons (?\\[ . ?\\]) in this +i.e. for a ([ ]) list there should be a cons (?\\[ . ?\\]) in this list." t nil pike '((?{ . ?}) (?\[ . ?\]) (?< . ?>))) === modified file 'lisp/progmodes/hideshow.el' --- lisp/progmodes/hideshow.el 2013-01-01 09:11:05 +0000 +++ lisp/progmodes/hideshow.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks +;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks -*- coding: utf-8 -*- ;; Copyright (C) 1994-2013 Free Software Foundation, Inc. @@ -207,7 +207,7 @@ ;; Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave Love, ;; Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray, Moody Ahmad, ;; Preston F. Crow, Lars Lindberg, Reto Zimmermann, Keith Sheffield, -;; Chew Meng Kuan, Tony Lam, Pete Ware, Franois Pinard, Stefan Monnier, +;; Chew Meng Kuan, Tony Lam, Pete Ware, François Pinard, Stefan Monnier, ;; Joseph Eydelnant, Michael Ernst, Peter Heslin ;; ;; Special thanks go to Dan Nicolaescu, who reimplemented hideshow using === modified file 'lisp/progmodes/prolog.el' --- lisp/progmodes/prolog.el 2013-01-01 09:11:05 +0000 +++ lisp/progmodes/prolog.el 2013-03-05 17:13:01 +0000 @@ -1,9 +1,9 @@ -;;; prolog.el --- major mode for editing and running Prolog (and Mercury) code +;;; prolog.el --- major mode for Prolog (and Mercury) -*- coding: utf-8 -*- ;; Copyright (C) 1986-1987, 1997-1999, 2002-2003, 2011-2013 Free ;; Software Foundation, Inc. -;; Authors: Emil strm <emil_astrom(at)hotmail(dot)com> +;; Authors: Emil Åström <emil_astrom(at)hotmail(dot)com> ;; Milan Zamazal <pdm(at)freesoft(dot)cz> ;; Stefan Bruda <stefan(at)bruda(dot)ca> ;; * See below for more details @@ -31,7 +31,7 @@ ;; Original author: Masanobu UMEDA <umerin(at)mse(dot)kyutech(dot)ac(dot)jp> ;; Parts of this file was taken from a modified version of the original ;; by Johan Andersson, Peter Olin, Mats Carlsson, Johan Bevemyr, Stefan -;; Andersson, and Per Danielsson (all SICS people), and Henrik Bkman +;; Andersson, and Per Danielsson (all SICS people), and Henrik Båkman ;; at Uppsala University, Sweden. ;; ;; Some ideas and also a few lines of code have been borrowed (not stolen ;-) === modified file 'lisp/progmodes/sh-script.el' --- lisp/progmodes/sh-script.el 2013-01-02 16:13:04 +0000 +++ lisp/progmodes/sh-script.el 2013-03-05 17:13:01 +0000 @@ -1842,7 +1842,7 @@ ;; (defconst sh-smie-csh-grammar ;; (smie-prec2->grammar ;; (smie-bnf->prec2 -;; '((exp) ;A constant, or a $var, or a sequence of them… +;; '((exp) ;A constant, or a $var, or a sequence of them... ;; (elseifcmd (cmd) ;; (cmd "else" "else-if" exp "then" elseifcmd)) ;; (cmd ("switch" branches "endsw") === modified file 'lisp/ruler-mode.el' --- lisp/ruler-mode.el 2013-01-01 09:11:05 +0000 +++ lisp/ruler-mode.el 2013-03-05 17:13:01 +0000 @@ -137,8 +137,8 @@ (format "Invalid character value: %S" value)) widget)))) -(defcustom ruler-mode-fill-column-char (if (char-displayable-p ?) - ?\ +(defcustom ruler-mode-fill-column-char (if (char-displayable-p ?¶) + ?\¶ ?\|) "Character used at the `fill-column' location." :group 'ruler-mode @@ -163,8 +163,8 @@ (integer :tag "Integer char value" :validate ruler-mode-character-validate))) -(defcustom ruler-mode-current-column-char (if (char-displayable-p ?) - ?\ +(defcustom ruler-mode-current-column-char (if (char-displayable-p ?¦) + ?\¦ ?\@) "Character used at the `current-column' location." :group 'ruler-mode @@ -774,7 +774,7 @@ (provide 'ruler-mode) ;; Local Variables: -;; coding: iso-latin-1 +;; coding: utf-8 ;; End: ;;; ruler-mode.el ends here === modified file 'lisp/textmodes/conf-mode.el' --- lisp/textmodes/conf-mode.el 2013-01-01 09:11:05 +0000 +++ lisp/textmodes/conf-mode.el 2013-03-05 17:13:01 +0000 @@ -1,4 +1,4 @@ -;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files +;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files -*- coding: utf-8 -*- ;; Copyright (C) 2004-2013 Free Software Foundation, Inc. @@ -23,7 +23,7 @@ ;;; Commentary: ;; ;; This mode is designed to edit many similar varieties of Conf/Ini files and -;; Java properties. It started out from Aurlien Tisn's ini-mode. +;; Java properties. It started out from Aurélien Tisné's ini-mode. ;; `conf-space-keywords' were inspired by Robert Fitzgerald's any-ini-mode. === modified file 'lisp/textmodes/po.el' --- lisp/textmodes/po.el 2013-01-01 09:11:05 +0000 +++ lisp/textmodes/po.el 2013-03-05 17:13:01 +0000 @@ -1,8 +1,8 @@ -;;; po.el --- basic support of PO translation files -*- coding: latin-1; -*- +;;; po.el --- basic support of PO translation files -*- coding: utf-8; -*- ;; Copyright (C) 1995-1998, 2000-2013 Free Software Foundation, Inc. -;; Authors: Franois Pinard <pinard@iro.umontreal.ca>, +;; Authors: François Pinard <pinard@iro.umontreal.ca>, ;; Greg McGary <gkm@magilla.cichlid.com>, ;; Bruno Haible <bruno@clisp.org>. ;; Keywords: i18n, files === modified file 'lisp/textmodes/tildify.el' --- lisp/textmodes/tildify.el 2013-01-01 09:11:05 +0000 +++ lisp/textmodes/tildify.el 2013-03-05 17:13:01 +0000 @@ -40,7 +40,7 @@ ;; The default variable settings are suited for Czech, so do not try to ;; understand them if you are not familiar with Czech grammar and spelling. ;; -;; The algorithm was inspired by Petr Olk's program `vlna'. Abilities of +;; The algorithm was inspired by Petr Olšák's program `vlna'. Abilities of ;; `tildify.el' are a little limited; if you have improvement suggestions, let ;; me know. @@ -349,7 +349,7 @@ ;; Local variables: -;; coding: iso-latin-2 +;; coding: utf-8 ;; End: ;;; tildify.el ends here === modified file 'lisp/wdired.el' --- lisp/wdired.el 2013-01-01 09:11:05 +0000 +++ lisp/wdired.el 2013-03-05 17:13:01 +0000 @@ -3,7 +3,7 @@ ;; Copyright (C) 2004-2013 Free Software Foundation, Inc. ;; Filename: wdired.el -;; Author: Juan Len Lahoz Garca <juanleon1@gmail.com> +;; Author: Juan León Lahoz García <juanleon1@gmail.com> ;; Version: 2.0 ;; Keywords: dired, environment, files, renaming @@ -851,7 +851,7 @@ (provide 'wdired) ;; Local Variables: -;; coding: latin-1 +;; coding: utf-8 ;; byte-compile-dynamic: t ;; End: ------------------------------------------------------------ revno: 111944 committer: Michael Albinus <michael.albinus@gmx.de branch nick: trunk timestamp: Tue 2013-03-05 16:55:53 +0100 message: * net/tramp-compat.el (tramp-compat-delete-directory): Implement TRASH argument. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-03-05 07:38:16 +0000 +++ lisp/ChangeLog 2013-03-05 15:55:53 +0000 @@ -1,3 +1,8 @@ +2013-03-05 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-compat.el (tramp-compat-delete-directory): Implement + TRASH argument. + 2013-03-05 Dmitry Gutov <dgutov@yandex.ru> Keep pre-existing highlighting in completion candidates (Bug#13250). === modified file 'lisp/net/tramp-compat.el' --- lisp/net/tramp-compat.el 2013-02-16 17:44:00 +0000 +++ lisp/net/tramp-compat.el 2013-03-05 15:55:53 +0000 @@ -384,25 +384,30 @@ trash))) (delete-file filename))))) -;; RECURSIVE has been introduced with Emacs 23.2. -(defun tramp-compat-delete-directory (directory &optional recursive) +;; RECURSIVE has been introduced with Emacs 23.2. TRASH has been +;; introduced with Emacs 24.1. +(defun tramp-compat-delete-directory (directory &optional recursive trash) "Like `delete-directory' for Tramp files (compat function)." - (if (null recursive) - (delete-directory directory) - (condition-case nil - (tramp-compat-funcall 'delete-directory directory recursive) - ;; This Emacs version does not support the RECURSIVE flag. We - ;; use the implementation from Emacs 23.2. - (wrong-number-of-arguments - (setq directory (directory-file-name (expand-file-name directory))) - (if (not (file-symlink-p directory)) - (mapc (lambda (file) - (if (eq t (car (file-attributes file))) - (tramp-compat-delete-directory file recursive) - (delete-file file))) - (directory-files - directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))) - (delete-directory directory))))) + (condition-case nil + (cond + (trash + (tramp-compat-funcall 'delete-directory directory recursive trash)) + (recursive + (tramp-compat-funcall 'delete-directory directory recursive)) + (t + (delete-directory directory))) + ;; This Emacs version does not support the RECURSIVE or TRASH flag. We + ;; use the implementation from Emacs 23.2. + (wrong-number-of-arguments + (setq directory (directory-file-name (expand-file-name directory))) + (if (not (file-symlink-p directory)) + (mapc (lambda (file) + (if (eq t (car (file-attributes file))) + (tramp-compat-delete-directory file recursive trash) + (tramp-compat-delete-file file trash))) + (directory-files + directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))) + (delete-directory directory)))) ;; `number-sequence' does not exist in XEmacs. Implementation is ;; taken from Emacs 23. ------------------------------------------------------------ revno: 111943 committer: Paul Eggert <eggert@cs.ucla.edu> branch nick: trunk timestamp: Tue 2013-03-05 00:06:54 -0800 message: * indent/octave.m: Fix encoding error in comment. Add coding tag. diff: === modified file 'test/ChangeLog' --- test/ChangeLog 2013-02-28 06:30:48 +0000 +++ test/ChangeLog 2013-03-05 08:06:54 +0000 @@ -1,3 +1,7 @@ +2013-03-05 Paul Eggert <eggert@cs.ucla.edu> + + * indent/octave.m: Fix encoding error in comment. Add coding tag. + 2013-02-28 Fabián Ezequiel Gallina <fgallina@cuca> * automated/python-tests.el (python-tests-with-temp-buffer): Doc fix. === modified file 'test/indent/octave.m' --- test/indent/octave.m 2011-11-23 07:03:56 +0000 +++ test/indent/octave.m 2013-03-05 08:06:54 +0000 @@ -1,4 +1,4 @@ -## -*- octave -*- +## -*- mode: octave; coding: utf-8 -*- function res = tcomp (fn) %% res = tcomp (fn) @@ -35,7 +35,7 @@ endfunction -## Copyright (C) 2005, 2006, 2007, 2008, 2009 S�ren Hauberg +## Copyright (C) 2005, 2006, 2007, 2008, 2009 Søren Hauberg ## ## This file is part of Octave. ## ------------------------------------------------------------ revno: 111942 fixes bug: http://debbugs.gnu.org/13250 committer: Dmitry Gutov <dgutov@yandex.ru> branch nick: trunk timestamp: Tue 2013-03-05 11:38:16 +0400 message: Keep pre-existing highlighting in completion candidates. * lisp/minibuffer.el (completions-first-difference): State that the face is "added" in the docstring. (completions-common-part): Same. And don't inherit from default. (completion-hilit-commonality): Prepend 'completions-common-part and 'completion-first-difference faces to the 'face property, instead of replacing the value(s). (completion--insert-strings): Same with 'completions-annotations face. (completion-hilit-commonality): Use 'face instead of 'font-lock-face, because it gets priority if the completion strings already have 'face set. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2013-03-04 19:33:23 +0000 +++ lisp/ChangeLog 2013-03-05 07:38:16 +0000 @@ -1,3 +1,17 @@ +2013-03-05 Dmitry Gutov <dgutov@yandex.ru> + + Keep pre-existing highlighting in completion candidates (Bug#13250). + * minibuffer.el (completions-first-difference): State that the + face is "added" in the docstring. + (completions-common-part): Same. And don't inherit from default. + (completion-hilit-commonality): Prepend 'completions-common-part + and 'completion-first-difference faces to the 'face property, + instead of replacing the value(s). + (completion--insert-strings): Same with 'completions-annotations face. + (completion-hilit-commonality): Use 'face instead of + 'font-lock-face, because it gets priority if the completion + strings already have 'face set. + 2013-03-04 Alan Mackenzie <acm@muc.de> Replace `last-command-event' by `last-command-char' in XEmacs. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2013-02-09 05:52:20 +0000 +++ lisp/minibuffer.el 2013-03-05 07:38:16 +0000 @@ -1458,9 +1458,11 @@ 'mouse-face 'highlight) (put-text-property (point) (progn (insert (car str)) (point)) 'mouse-face 'highlight) - (add-text-properties (point) (progn (insert (cadr str)) (point)) - '(mouse-face nil - face completions-annotations))) + (let ((beg (point)) + (end (progn (insert (cadr str)) (point)))) + (put-text-property beg end 'mouse-face nil) + (font-lock-prepend-text-property beg end 'face + 'completions-annotations))) (cond ((eq completions-format 'vertical) ;; Vertical format @@ -1487,12 +1489,11 @@ (defface completions-first-difference '((t (:inherit bold))) - "Face put on the first uncommon character in completions in *Completions* buffer." + "Face added on the first uncommon character in completions in *Completions* buffer." :group 'completion) -(defface completions-common-part - '((t (:inherit default))) - "Face put on the common prefix substring in completions in *Completions* buffer. +(defface completions-common-part '((t nil)) + "Face added on the common prefix substring in completions in *Completions* buffer. The idea of `completions-common-part' is that you can use it to make the common parts less visible than normal, so that the rest of the differing parts is, by contrast, slightly highlighted." @@ -1513,17 +1514,18 @@ (car (setq elem (cons (copy-sequence (car elem)) (cdr elem)))) (setq elem (copy-sequence elem))))) - (put-text-property 0 - ;; If completion-boundaries returns incorrect - ;; values, all-completions may return strings - ;; that don't contain the prefix. - (min com-str-len (length str)) - 'font-lock-face 'completions-common-part - str) + (font-lock-prepend-text-property + 0 + ;; If completion-boundaries returns incorrect + ;; values, all-completions may return strings + ;; that don't contain the prefix. + (min com-str-len (length str)) + 'face 'completions-common-part str) (if (> (length str) com-str-len) - (put-text-property com-str-len (1+ com-str-len) - 'font-lock-face 'completions-first-difference - str))) + (font-lock-prepend-text-property com-str-len (1+ com-str-len) + 'face + 'completions-first-difference + str))) elem) completions) base-size))))