From a762e96652b2e8766522f3c0894ec3b825032067 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sun, 17 Jul 2011 04:21:43 +0200 Subject: [PATCH 01/16] (tags-search): Doc typo fix. --- lisp/ChangeLog | 2 ++ lisp/progmodes/etags.el | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ae54b3733f6..814edf45491 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-07-17 Lars Magne Ingebrigtsen + * progmodes/etags.el (tags-search): Doc typo fix. + * mail/smtpmail.el (smtpmail-via-smtp): Query the user for password if we get errors 550 to 554. diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 385adf1af0a..da073ceb258 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1860,7 +1860,7 @@ nil, we exit; otherwise we scan the next file." Stops when a match is found. To continue searching for next match, use command \\[tags-loop-continue]. -If `file-list-form' is non-nil, it should be a form that, when +If FILE-LIST-FORM is non-nil, it should be a form that, when evaluated, will return a list of file names. The search will be restricted to these files. From 52968808d6b81ff29d6a0abb116807881b59078b Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 17 Jul 2011 10:00:53 +0200 Subject: [PATCH 02/16] * src/lread.c (read1): Read `#:' as empty uninterned symbol if no symbol character follows. --- src/ChangeLog | 5 +++++ src/lread.c | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index d12558e5d6d..10f4186c31c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-07-17 Andreas Schwab + + * lread.c (read1): Read `#:' as empty uninterned symbol if no + symbol character follows. + 2011-07-17 Paul Eggert * fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002) diff --git a/src/lread.c b/src/lread.c index 7dd566dc173..bb0edd898da 100644 --- a/src/lread.c +++ b/src/lread.c @@ -2660,7 +2660,18 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) { uninterned_symbol = 1; c = READCHAR; - goto default_label; + if (!(c > 040 + && c != 0x8a0 + && (c >= 0200 + || !(strchr ("\"';()[]#`,", c))))) + { + /* No symbol character follows, this is the empty + symbol. */ + if (c >= 0) + UNREAD (c); + return Fmake_symbol (build_string ("")); + } + goto read_symbol; } /* Reader forms that can reuse previously read objects. */ if (c >= '0' && c <= '9') @@ -3002,6 +3013,8 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) if (c <= 040) goto retry; if (c == 0x8a0) /* NBSP */ goto retry; + + read_symbol: { char *p = read_buffer; int quoted = 0; From 60d847b46dd3b82b42bd49ca1ce4e5c1990bd35c Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 17 Jul 2011 06:26:13 -0400 Subject: [PATCH 03/16] Auto-commit of loaddefs files. --- lisp/emacs-lisp/cl-loaddefs.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index f0c72a0b269..270211f6a78 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el @@ -282,7 +282,7 @@ Not documented ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist ;;;;;; do* do loop return-from return block etypecase typecase ecase ;;;;;; case load-time-value eval-when destructuring-bind function* -;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "2261724608e3223036b863d214f7dc0c") +;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9452c0e16fd960fce5c19e5c067a7160") ;;; Generated autoloads from cl-macs.el (autoload 'gensym "cl-macs" "\ From 0a6a104b857cb873072e0ec38ecd27ba635a477d Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 17 Jul 2011 12:29:24 +0200 Subject: [PATCH 04/16] Make read-symbol-positions-list more accurate * src/lread.c (read_integer): Unread even EOF character. (read1): Likewise. Properly record start position of symbol. --- src/ChangeLog | 3 +++ src/lread.c | 40 ++++++++++++++-------------------------- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 10f4186c31c..c06c98c5418 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2011-07-17 Andreas Schwab + * lread.c (read_integer): Unread even EOF character. + (read1): Likewise. Properly record start position of symbol. + * lread.c (read1): Read `#:' as empty uninterned symbol if no symbol character follows. diff --git a/src/lread.c b/src/lread.c index bb0edd898da..ef1b1a812d2 100644 --- a/src/lread.c +++ b/src/lread.c @@ -2327,8 +2327,7 @@ read_integer (Lisp_Object readcharfun, EMACS_INT radix) c = READCHAR; } - if (c >= 0) - UNREAD (c); + UNREAD (c); *p = '\0'; } @@ -2583,8 +2582,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) nskip *= 10; nskip += c - '0'; } - if (c >= 0) - UNREAD (c); + UNREAD (c); if (load_force_doc_strings && (EQ (readcharfun, Qget_file_char) @@ -2663,12 +2661,11 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) if (!(c > 040 && c != 0x8a0 && (c >= 0200 - || !(strchr ("\"';()[]#`,", c))))) + || strchr ("\"';()[]#`,", c) == NULL))) { /* No symbol character follows, this is the empty symbol. */ - if (c >= 0) - UNREAD (c); + UNREAD (c); return Fmake_symbol (build_string ("")); } goto read_symbol; @@ -2852,7 +2849,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) next_char = READCHAR; ok = (next_char <= 040 || (next_char < 0200 - && (strchr ("\"';()[]#?`,.", next_char)))); + && strchr ("\"';()[]#?`,.", next_char) != NULL)); UNREAD (next_char); if (ok) return make_number (c); @@ -2977,11 +2974,6 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) /* Otherwise, READ_BUFFER contains only ASCII. */ } - /* We want readchar_count to be the number of characters, not - bytes. Hence we adjust for multibyte characters in the - string. ... But it doesn't seem to be necessary, because - READCHAR *does* read multibyte characters from buffers. */ - /* readchar_count -= (p - read_buffer) - nchars; */ if (read_pure) return make_pure_string (read_buffer, nchars, p - read_buffer, (force_multibyte @@ -2998,7 +2990,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) if (next_char <= 040 || (next_char < 0200 - && (strchr ("\"';([#?`,", next_char)))) + && strchr ("\"';([#?`,", next_char) != NULL)) { *pch = c; return Qnil; @@ -3018,6 +3010,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) { char *p = read_buffer; int quoted = 0; + int start_position = readchar_count - 1; { char *end = read_buffer + read_buffer_size; @@ -3048,10 +3041,11 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) else *p++ = c; c = READCHAR; - } while (c > 040 - && c != 0x8a0 /* NBSP */ - && (c >= 0200 - || !(strchr ("\"';()[]#`,", c)))); + } + while (c > 040 + && c != 0x8a0 /* NBSP */ + && (c >= 0200 + || strchr ("\"';()[]#`,", c) == NULL)); if (p == end) { @@ -3064,8 +3058,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) end = read_buffer + read_buffer_size; } *p = 0; - if (c >= 0) - UNREAD (c); + UNREAD (c); } if (!quoted && !uninterned_symbol) @@ -3093,12 +3086,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) if (EQ (Vread_with_symbol_positions, Qt) || EQ (Vread_with_symbol_positions, readcharfun)) Vread_symbol_positions_list = - /* Kind of a hack; this will probably fail if characters - in the symbol name were escaped. Not really a big - deal, though. */ - Fcons (Fcons (result, - make_number (readchar_count - - XFASTINT (Flength (Fsymbol_name (result))))), + Fcons (Fcons (result, make_number (start_position)), Vread_symbol_positions_list); return result; } From 46cfea45c4ec986e4cd3e8c4e0a25054841735eb Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 17 Jul 2011 12:35:42 +0200 Subject: [PATCH 05/16] Fix last change --- src/lread.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lread.c b/src/lread.c index ef1b1a812d2..8b46f382694 100644 --- a/src/lread.c +++ b/src/lread.c @@ -3010,7 +3010,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list) { char *p = read_buffer; int quoted = 0; - int start_position = readchar_count - 1; + EMACS_INT start_position = readchar_count - 1; { char *end = read_buffer + read_buffer_size; From 12dc863d6230435ecf30283bd2926696c50f8d4f Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sun, 17 Jul 2011 17:57:47 +0200 Subject: [PATCH 06/16] * image.el (put-image): Doc typo fix. --- lisp/ChangeLog | 2 ++ lisp/image.el | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 814edf45491..f320398975c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-07-17 Lars Magne Ingebrigtsen + * image.el (put-image): Doc typo fix. + * progmodes/etags.el (tags-search): Doc typo fix. * mail/smtpmail.el (smtpmail-via-smtp): Query the user for diff --git a/lisp/image.el b/lisp/image.el index b67367ad436..c6862622639 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -389,7 +389,7 @@ IMAGE must be an image created with `create-image' or `defimage'. IMAGE is displayed by putting an overlay into the current buffer with a `before-string' STRING that has a `display' property whose value is the image. STRING is defaulted if you omit it. -The overlay created will have the `put-overlay' property set to t. +The overlay created will have the `put-image' property set to t. POS may be an integer or marker. AREA is where to display the image. AREA nil or omitted means display it in the text area, a value of `left-margin' means From a4963f79fb5a11306d1d1b91eb663860b733b79f Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Sun, 17 Jul 2011 13:45:52 -0700 Subject: [PATCH 07/16] * mh-compat.el (mh-pop-to-buffer-same-window): Delete. * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder) (mh-make-folder): Revert to switch-to-buffer, as the Emacs folks decided that it was fine to use it in programs. --- lisp/mh-e/ChangeLog | 7 +++++++ lisp/mh-e/mh-compat.el | 12 ------------ lisp/mh-e/mh-folder.el | 8 ++++---- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index 431c15b2346..f367ea55922 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,3 +1,10 @@ +2011-07-17 Bill Wohler + + * mh-compat.el (mh-pop-to-buffer-same-window): Delete. + * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder) + (mh-make-folder): Revert to switch-to-buffer, as the Emacs folks + decided that it was fine to use it in programs. + 2011-07-16 Bill Wohler Release MH-E version 8.2.92. diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el index 16dfe05b094..07c558f60cc 100644 --- a/lisp/mh-e/mh-compat.el +++ b/lisp/mh-e/mh-compat.el @@ -251,18 +251,6 @@ The argument STRING is ignored." (buffer-substring-no-properties (match-beginning num) (match-end num))) -(defun-mh mh-pop-to-buffer-same-window - pop-to-buffer-same-window (&optional buffer-or-name norecord label) - "Pop to buffer specified by BUFFER-OR-NAME in the selected window. -Another window will be used only if the buffer can't be shown in -the selected window, usually because it is dedicated to another -buffer. Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are -as for `pop-to-buffer'. This macro is used by Emacs versions that -lack the `pop-to-buffer-same-window' function, introduced in -Emacs 24. The function `switch-to-buffer' is used instead and -LABEL is ignored." - (switch-to-buffer buffer-or-name norecord)) - (defun-mh mh-replace-regexp-in-string replace-regexp-in-string (regexp rep string &optional fixedcase literal subexp start) "Replace REGEXP with REP everywhere in STRING and return result. diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el index 1d9a79d0deb..40febd641de 100644 --- a/lisp/mh-e/mh-folder.el +++ b/lisp/mh-e/mh-folder.el @@ -795,7 +795,7 @@ instead." (setq threading-needed-flag mh-show-threads-flag) (setq mh-previous-window-config config)) ((not (eq (current-buffer) (get-buffer folder))) - (mh-pop-to-buffer-same-window folder) + (switch-to-buffer folder) (setq mh-previous-window-config config)))) (mh-get-new-mail file) (when (and threading-needed-flag @@ -855,7 +855,7 @@ From a program, edit MESSAGE; nil means edit current message." ;; Just show the edit buffer... (delete-other-windows) - (mh-pop-to-buffer-same-window edit-buffer))) + (switch-to-buffer edit-buffer))) ;;;###mh-autoload (defun mh-next-button (&optional backward-flag) @@ -1705,7 +1705,7 @@ DONT-EXEC-PENDING is non-nil." (unless dont-exec-pending (mh-process-or-undo-commands folder) (mh-reset-threads-and-narrowing)) - (mh-pop-to-buffer-same-window folder))) + (switch-to-buffer folder))) (mh-regenerate-headers range) (if (zerop (buffer-size)) (if (equal range "all") @@ -1786,7 +1786,7 @@ Also removes all content from the folder buffer." (defun mh-make-folder (name) "Create a new mail folder called NAME. Make it the current folder." - (mh-pop-to-buffer-same-window name) + (switch-to-buffer name) (setq buffer-read-only nil) (erase-buffer) (if mh-adaptive-cmd-note-flag From c6657a4fede9cda97eb3f722d37a07174ecdc71d Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Sun, 17 Jul 2011 14:13:38 -0700 Subject: [PATCH 08/16] * mh-e.el (Version, mh-version): Update for release 8.2.93. --- lisp/mh-e/ChangeLog | 4 ++++ lisp/mh-e/mh-e.el | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index f367ea55922..731aaf25f3d 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,5 +1,9 @@ 2011-07-17 Bill Wohler + Release MH-E version 8.2.93. + + * mh-e.el (Version, mh-version): Update for release 8.2.93. + * mh-compat.el (mh-pop-to-buffer-same-window): Delete. * mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder) (mh-make-folder): Revert to switch-to-buffer, as the Emacs folks diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 1e7b07eb6dc..5562a310f29 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -5,7 +5,7 @@ ;; Author: Bill Wohler ;; Maintainer: Bill Wohler -;; Version: 8.2.92 +;; Version: 8.2.93 ;; Keywords: mail ;; This file is part of GNU Emacs. @@ -127,7 +127,7 @@ ;; Try to keep variables local to a single file. Provide accessors if ;; variables are shared. Use this section as a last resort. -(defconst mh-version "8.2.92" "Version number of MH-E.") +(defconst mh-version "8.2.93" "Version number of MH-E.") ;; Variants From 6265325e6bc5ed7da0e049f1b6e148932ea69e34 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Sun, 17 Jul 2011 14:16:34 -0700 Subject: [PATCH 09/16] * NEWS, MH-E-NEWS: Update for MH-E release 8.2.93. --- etc/ChangeLog | 6 ++++++ etc/MH-E-NEWS | 5 +++++ etc/NEWS | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index cf856429f01..d56523167d9 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-17 Bill Wohler + + Release MH-E version 8.2.93. + + * NEWS, MH-E-NEWS: Update for MH-E release 8.2.93. + 2011-07-16 Bill Wohler Release MH-E version 8.2.92. diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index b5b2a8b5867..e61d1d93603 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS @@ -3,6 +3,11 @@ Copyright (C) 2001-2011 Free Software Foundation, Inc. See the end of the file for license conditions. +* Changes in MH-E 8.2.93 + +Version 8.2.93 reverts back to using `switch-to-buffer' which the +Emacs developers decided was fine to call from programs after all. + * Changes in MH-E 8.2.92 Version 8.2.92 actually corrects the error in the modeline glyph when diff --git a/etc/NEWS b/etc/NEWS index 70793c7c1d6..278fbea81c1 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set. ** MH-E -*** Upgraded to MH-E version 8.2.92. See MH-E-NEWS for details. +*** Upgraded to MH-E version 8.2.93. See MH-E-NEWS for details. ** comint and modes derived from it use the generic completion code. From 925a6be733dc81bd5295680b9c10e3a373d5f9b8 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 17 Jul 2011 22:34:14 -0400 Subject: [PATCH 10/16] * src/xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ to compare Lisp_Objects. * src/gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to global_gnutls_log_level, don't mistake it for a Lisp_Object. (init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses. --- src/ChangeLog | 8 ++++++++ src/gnutls.c | 12 +++++------- src/process.h | 2 +- src/xdisp.c | 4 ++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c06c98c5418..a2891fa9c91 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2011-07-18 Stefan Monnier + + * xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ + to compare Lisp_Objects. + * gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to + global_gnutls_log_level, don't mistake it for a Lisp_Object. + (init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses. + 2011-07-17 Andreas Schwab * lread.c (read_integer): Unread even EOF character. diff --git a/src/gnutls.c b/src/gnutls.c index 52e80a69ae5..3175f55041d 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -193,8 +193,7 @@ init_gnutls_functions (Lisp_Object libraries) LOAD_GNUTLS_FN (library, gnutls_x509_crt_import); LOAD_GNUTLS_FN (library, gnutls_x509_crt_init); - if (NUMBERP (Vgnutls_log_level)) - max_log_level = XINT (Vgnutls_log_level); + max_log_level = global_gnutls_log_level; GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:", SDATA (Fget (Qgnutls_dll, QCloaded_from))); @@ -406,8 +405,7 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err) if (err >= 0) return 0; - if (NUMBERP (Vgnutls_log_level)) - max_log_level = XINT (Vgnutls_log_level); + max_log_level = global_gnutls_log_level; /* TODO: use gnutls-error-fatalp and gnutls-error-string. */ @@ -1155,9 +1153,9 @@ syms_of_gnutls (void) defsubr (&Sgnutls_bye); defsubr (&Sgnutls_available_p); - DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level, - doc: /* Logging level used by the GnuTLS functions. */); - Vgnutls_log_level = make_number (0); + DEFVAR_INT ("gnutls-log-level", global_gnutls_log_level, + doc: /* Logging level used by the GnuTLS functions. */); + global_gnutls_log_level = 0; } #endif /* HAVE_GNUTLS */ diff --git a/src/process.h b/src/process.h index 4866a8c1022..aff9e970f63 100644 --- a/src/process.h +++ b/src/process.h @@ -141,7 +141,7 @@ struct Lisp_Process /* Every field in the preceding structure except for the first two must be a Lisp_Object, for GC's sake. */ -#define ChannelMask(n) (1<<(n)) +#define ChannelMask(n) (1 << (n)) /* True if we are about to fork off a synchronous process or if we are waiting for it. */ diff --git a/src/xdisp.c b/src/xdisp.c index 50da62ca0ab..72a246ca0c3 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -6945,7 +6945,7 @@ next_element_from_string (struct it *it) struct text_pos position; xassert (STRINGP (it->string)); - xassert (!it->bidi_p || it->string == it->bidi_it.string.lstring); + xassert (!it->bidi_p || EQ (it->string, it->bidi_it.string.lstring)); xassert (IT_STRING_CHARPOS (*it) >= 0); position = it->current.string_pos; @@ -7259,7 +7259,7 @@ next_element_from_buffer (struct it *it) xassert (IT_CHARPOS (*it) >= BEGV); xassert (NILP (it->string) && !it->s); xassert (!it->bidi_p - || (it->bidi_it.string.lstring == Qnil + || (EQ (it->bidi_it.string.lstring, Qnil) && it->bidi_it.string.s == NULL)); /* With bidi reordering, the character to display might not be the From 8f8eda06a29b37f0a963c6347012eae802cc1849 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 18 Jul 2011 17:05:46 +0200 Subject: [PATCH 11/16] Update GB18030 charset maps to 2005 edition --- etc/ChangeLog | 5 +++++ etc/charsets/GB180302.map | 33 ++++++++++++++++++++------------- etc/charsets/GB180304.map | 10 +++++++--- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index d56523167d9..dfe4630e5bb 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,8 @@ +2011-07-18 Andreas Schwab + + * charsets/GB180302.map: Update to 2005 edition. + * charsets/GB180304.map: Likewise. + 2011-07-17 Bill Wohler Release MH-E version 8.2.93. diff --git a/etc/charsets/GB180302.map b/etc/charsets/GB180302.map index a001f22153f..ee7e0ecd42e 100644 --- a/etc/charsets/GB180302.map +++ b/etc/charsets/GB180302.map @@ -2048,17 +2048,20 @@ 0xA6B9-0xA6C0 0xE785 0xA6C1-0xA6D1 0x03B1 0xA6D2-0xA6D8 0x03C3 -0xA6D9-0xA6DF 0xE78D +0xA6D9 0xFE10 +0xA6DA 0xFE12 +0xA6DB 0xFE11 +0xA6DC-0xA6DF 0xFE13 0xA6E0-0xA6E1 0xFE35 0xA6E2-0xA6E3 0xFE39 0xA6E4-0xA6E5 0xFE3F 0xA6E6-0xA6E7 0xFE3D 0xA6E8-0xA6EB 0xFE41 -0xA6EC-0xA6ED 0xE794 +0xA6EC-0xA6ED 0xFE17 0xA6EE-0xA6EF 0xFE3B 0xA6F0-0xA6F1 0xFE37 0xA6F2 0xFE31 -0xA6F3 0xE796 +0xA6F3 0xFE19 0xA6F4-0xA6F5 0xFE33 0xA6F6-0xA6FE 0xE797 0xA740-0xA77E 0xE706 @@ -2124,7 +2127,7 @@ 0xA8B9 0x00FC 0xA8BA 0x00EA 0xA8BB 0x0251 -0xA8BC 0xE7C7 +0xA8BC 0x1E3F 0xA8BD 0x0144 0xA8BE 0x0148 0xA8BF 0x01F9 @@ -10385,13 +10388,15 @@ 0xFE4B-0xFE4C 0xFA23 0xFE4D-0xFE4F 0xFA27 0xFE50 0x2E81 -0xFE51-0xFE53 0xE816 +0xFE51 0x00020087 +0xFE52 0x00020089 +0xFE53 0x000200CC 0xFE54 0x2E84 0xFE55 0x3473 0xFE56 0x3447 0xFE57 0x2E88 0xFE58 0x2E8B -0xFE59 0xE81E +0xFE59 0x9FB4 0xFE5A 0x359E 0xFE5B 0x361A 0xFE5C 0x360E @@ -10399,17 +10404,18 @@ 0xFE5E 0x2E97 0xFE5F 0x396E 0xFE60 0x3918 -0xFE61 0xE826 +0xFE61 0x9FB5 0xFE62 0x39CF 0xFE63 0x39DF 0xFE64 0x3A73 0xFE65 0x39D0 -0xFE66-0xFE67 0xE82B +0xFE66-0xFE67 0x9FB6 0xFE68 0x3B4E 0xFE69 0x3C6E 0xFE6A 0x3CE0 0xFE6B 0x2EA7 -0xFE6C-0xFE6D 0xE831 +0xFE6C 0x000215D7 +0xFE6D 0x9FB8 0xFE6E 0x2EAA 0xFE6F 0x4056 0xFE70 0x415F @@ -10417,7 +10423,7 @@ 0xFE72 0x4337 0xFE73 0x2EB3 0xFE74-0xFE75 0x2EB6 -0xFE76 0xE83B +0xFE76 0x0002298F 0xFE77 0x43B1 0xFE78 0x43AC 0xFE79 0x2EBB @@ -10425,7 +10431,7 @@ 0xFE7B 0x44D6 0xFE7C 0x4661 0xFE7D 0x464C -0xFE7E 0xE843 +0xFE7E 0x9FB9 0xFE80 0x4723 0xFE81 0x4729 0xFE82 0x477C @@ -10440,12 +10446,13 @@ 0xFE8D 0x499B 0xFE8E 0x49B7 0xFE8F 0x49B6 -0xFE90-0xFE91 0xE854 +0xFE90 0x9FBA +0xFE91 0x000241FE 0xFE92 0x4CA3 0xFE93-0xFE95 0x4C9F 0xFE96 0x4C77 0xFE97 0x4CA2 0xFE98-0xFE9E 0x4D13 0xFE9F 0x4DAE -0xFEA0 0xE864 +0xFEA0 0x9FBB 0xFEA1-0xFEFE 0xE468 diff --git a/etc/charsets/GB180304.map b/etc/charsets/GB180304.map index e81eacff601..31352e266c8 100644 --- a/etc/charsets/GB180304.map +++ b/etc/charsets/GB180304.map @@ -40,7 +40,8 @@ 0x8130CC30-0x8130D134 0x03CA 0x8130D135-0x8130D238 0x0402 0x8130D239 0x0450 -0x8130D330-0x8136A531 0x0452 +0x8130D330-0x8135F436 0x0452 +0x8135F438-0x8136A531 0x1E40 0x8136A532-0x8136A533 0x2011 0x8136A534 0x2017 0x8136A535-0x8136A536 0x201A @@ -171,8 +172,10 @@ 0x8234EB33-0x8234F633 0x4CA4 0x8234F634-0x82358731 0x4D1A 0x82358732-0x82358F32 0x4DAF -0x82358F33-0x8336C738 0x9FA6 +0x82358F33-0x82359036 0x9FA6 +0x82359135-0x8336C738 0x9FBC 0x8336C739 0xE76C +0x8135F437 0xE7C7 0x8336C830 0xE7C8 0x8336C831-0x8336C933 0xE7E7 0x8336C934 0xE815 @@ -196,7 +199,8 @@ 0x84309B39-0x84309C34 0xFA19 0x84309C35 0xFA22 0x84309C36-0x84309C37 0xFA25 -0x84309C38-0x84318537 0xFA2A +0x84309C38-0x84318235 0xFA2A +0x84318336-0x84318537 0xFE1A 0x84318538 0xFE32 0x84318539-0x84318632 0xFE45 0x84318633 0xFE53 From bf2c1571f4085d3b52f37370f0bcdf7a23c53a50 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Mon, 18 Jul 2011 17:15:24 +0000 Subject: [PATCH 12/16] CC Mode: Fontify declarators properly when, e.g., a jit-lock chunk begins inside a declaration. Changed cc-engine.el, cc-langs.el, cc-fonts.el. --- lisp/ChangeLog | 16 +++++++++++++ lisp/progmodes/cc-engine.el | 8 ++++--- lisp/progmodes/cc-fonts.el | 47 +++++++++++++++++++++++++++++++++++++ lisp/progmodes/cc-langs.el | 2 +- 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f320398975c..0ea3d94a01f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,19 @@ +2011-07-18 Alan Mackenzie + + Fontify declarators properly when, e.g., a jit-lock chunk begins + inside a declaration. + + * progmodes/cc-langs.el (c-symbol-chars): Correct a typo. + + * progmodes/cc-fonts.el (c-font-lock-enclosing-decls): New + function. + (c-complex-decl-matchers): Insert reference to + c-font-lock-enclosing-decls. + + * progmodes/cc-engine.el (c-backward-single-comment): + (c-backward-comments): Bind open-paren-in-column-0-is-defun-start + to nil around calls to (forward-comment -1). + 2011-07-17 Lars Magne Ingebrigtsen * image.el (put-image): Doc typo fix. diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 38f66b4504e..a6fd28be21d 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -1301,12 +1301,13 @@ This function does not do any hidden buffer changes." ;; same line. (re-search-forward "\\=\\s *[\n\r]" start t) - (if (if (forward-comment -1) + (if (if (let (open-paren-in-column-0-is-defun-start) (forward-comment -1)) (if (eolp) ;; If forward-comment above succeeded and we're at eol ;; then the newline we moved over above didn't end a ;; line comment, so we give it another go. - (forward-comment -1) + (let (open-paren-in-column-0-is-defun-start) + (forward-comment -1)) t)) ;; Emacs <= 20 and XEmacs move back over the closer of a @@ -1333,7 +1334,8 @@ comment at the start of cc-engine.el for more info." ;; return t when moving backwards at bob. (not (bobp)) - (if (forward-comment -1) + (if (let (open-paren-in-column-0-is-defun-start) + (forward-comment -1)) (if (looking-at "\\*/") ;; Emacs <= 20 and XEmacs move back over the ;; closer of a block comment that lacks an opener. diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 600bbc76e9a..0500d48ddbc 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1346,6 +1346,50 @@ casts and declarations are fontified. Used on level 2 and higher." (c-font-lock-declarators limit t nil))) nil) +(defun c-font-lock-enclosing-decls (limit) + ;; Fontify the declarators of (nested) declarations we're in the middle of. + ;; This is mainly for when a jit-lock etc. chunk starts inside the brace + ;; block of a struct/union/class, etc. + ;; + ;; This function will be called from font-lock for a region bounded by POINT + ;; and LIMIT, as though it were to identify a keyword for + ;; font-lock-keyword-face. It always returns NIL to inhibit this and + ;; prevent a repeat invocation. See elisp/lispref page "Search-based + ;; Fontification". + (let* ((paren-state (c-parse-state)) + (start (point)) + decl-context bo-decl in-typedef type-type ps-elt) + + ;; First, are we actually in a "local" declaration? + (setq decl-context (c-beginning-of-decl-1) + bo-decl (point) + in-typedef (looking-at c-typedef-key)) + (if in-typedef (c-forward-token-2)) + (when (and (eq (car decl-context) 'same) + (< bo-decl start)) + ;; Are we genuinely at a type? + (setq type-type (c-forward-type t)) + (if (and type-type + (or (not (eq type-type 'maybe)) + (looking-at c-symbol-key))) + (c-font-lock-declarators limit t in-typedef))) + + ;; Secondly, are we in any nested struct/union/class/etc. braces? + (while paren-state + (setq ps-elt (car paren-state) + paren-state (cdr paren-state)) + (when (and (atom ps-elt) + (eq (char-after ps-elt) ?\{)) + (goto-char ps-elt) + (setq decl-context (c-beginning-of-decl-1) + in-typedef (looking-at c-typedef-key)) + (if in-typedef (c-forward-token-2)) + (when (looking-at c-opt-block-decls-with-vars-key) + (goto-char ps-elt) + (when (c-safe (c-forward-sexp)) + (c-forward-syntactic-ws) + (c-font-lock-declarators limit t in-typedef))))))) + (c-lang-defconst c-simple-decl-matchers "Simple font lock matchers for types and declarations. These are used on level 2 only and so aren't combined with `c-complex-decl-matchers'." @@ -1452,6 +1496,9 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'." ;; Fontify all declarations, casts and normal labels. c-font-lock-declarations + ;; Fontify declarators when POINT is within their declaration. + c-font-lock-enclosing-decls + ;; Fontify angle bracket arglists like templates in C++. ,@(when (c-lang-const c-recognize-<>-arglists) `(c-font-lock-<>-arglists)) diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index a6459e1724f..9ce23a080d6 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -523,7 +523,7 @@ operator at the top level." (c-lang-defconst c-symbol-chars "Set of characters that can be part of a symbol. -This is on the form that fits inside [ ] in a regexp." +This is of the form that fits inside [ ] in a regexp." ;; Pike note: With the backquote identifiers this would include most ;; operator chars too, but they are handled with other means instead. t (concat c-alnum "_$") From b59b67c56e338162437c045a8a0e2156bcde9a0b Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 18 Jul 2011 10:21:18 -0700 Subject: [PATCH 13/16] * fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002) If fchown fails to set both uid and gid, try to set just gid, as that is sometimes allowed. Adjust the file's mode to eliminate setuid or setgid bits that are inappropriate if fchown fails. --- src/ChangeLog | 7 +++++++ src/fileio.c | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index a2891fa9c91..5de5fefd6aa 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2011-07-18 Paul Eggert + + * fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002) + If fchown fails to set both uid and gid, try to set just gid, + as that is sometimes allowed. Adjust the file's mode to eliminate + setuid or setgid bits that are inappropriate if fchown fails. + 2011-07-18 Stefan Monnier * xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ diff --git a/src/fileio.c b/src/fileio.c index a52e834c2b2..fb2c081ae5c 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -38,8 +38,6 @@ along with GNU Emacs. If not, see . */ #include #endif -#include - #include "lisp.h" #include "intervals.h" #include "buffer.h" @@ -1961,9 +1959,21 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */) owner and group. */ if (input_file_statable_p) { + int mode_mask = 07777; if (!NILP (preserve_uid_gid)) - ignore_value (fchown (ofd, st.st_uid, st.st_gid)); - if (fchmod (ofd, st.st_mode & 07777) != 0) + { + /* Attempt to change owner and group. If that doesn't work + attempt to change just the group, as that is sometimes allowed. + Adjust the mode mask to eliminate setuid or setgid bits + that are inappropriate if the owner and group are wrong. */ + if (fchown (ofd, st.st_uid, st.st_gid) != 0) + { + mode_mask &= ~06000; + if (fchown (ofd, -1, st.st_gid) == 0) + mode_mask |= 02000; + } + } + if (fchmod (ofd, st.st_mode & mode_mask) != 0) report_file_error ("Doing chmod", Fcons (newname, Qnil)); } #endif /* not MSDOS */ From 3948a513790ec17f0a94c48cbabf74b4a7b73566 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Mon, 18 Jul 2011 10:33:02 -0700 Subject: [PATCH 14/16] Add an example on how to use prog-mode. --- etc/NEWS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 278fbea81c1..ffce9da51e4 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1077,6 +1077,11 @@ syntactic rules. ** Syntax tables support a new "comment style c" additionally to style b. ** frame-local variables cannot be let-bound any more. ** prog-mode is a new major-mode meant to be the parent of programming mode. +The prog-mode-hook it defines can be used to enable features for +programming modes. For example: +(add-hook 'prog-mode-hook 'flyspell-prog-mode) +enables on the fly spell checking for comments and strings for +programming modes. ** define-minor-mode accepts a new keyword :variable. ** `delete-file' and `delete-directory' now accept optional arg TRASH. From 41bed37d157e1a7bdc519bfc3668d59be5b05402 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 18 Jul 2011 13:24:40 -0700 Subject: [PATCH 15/16] * alloc.c (valid_pointer_p): Use pipe, not open. This fixes some permissions issues when debugging. --- src/ChangeLog | 3 +++ src/alloc.c | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5de5fefd6aa..ca42b696f9c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2011-07-18 Paul Eggert + * alloc.c (valid_pointer_p): Use pipe, not open. + This fixes some permissions issues when debugging. + * fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002) If fchown fails to set both uid and gid, try to set just gid, as that is sometimes allowed. Adjust the file's mode to eliminate diff --git a/src/alloc.c b/src/alloc.c index 44f935c243d..d48d1f34dbd 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -4415,18 +4415,18 @@ valid_pointer_p (void *p) #ifdef WINDOWSNT return w32_valid_pointer_p (p, 16); #else - int fd; + int fd[2]; /* Obviously, we cannot just access it (we would SEGV trying), so we trick the o/s to tell us whether p is a valid pointer. Unfortunately, we cannot use NULL_DEVICE here, as emacs_write may not validate p in that case. */ - if ((fd = emacs_open ("__Valid__Lisp__Object__", O_CREAT | O_WRONLY | O_TRUNC, 0666)) >= 0) + if (pipe (fd) == 0) { - int valid = (emacs_write (fd, (char *)p, 16) == 16); - emacs_close (fd); - unlink ("__Valid__Lisp__Object__"); + int valid = (emacs_write (fd[1], (char *) p, 16) == 16); + emacs_close (fd[1]); + emacs_close (fd[0]); return valid; } From 15e3a074a6ebdcefd828a1ba14a5a12ff9921034 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 18 Jul 2011 14:01:36 -0700 Subject: [PATCH 16/16] * fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask. This fixes some race conditions on the permissions of any newly created file. --- src/ChangeLog | 4 ++++ src/fileio.c | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index ca42b696f9c..484a4420363 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2011-07-18 Paul Eggert + * fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask. + This fixes some race conditions on the permissions of any newly + created file. + * alloc.c (valid_pointer_p): Use pipe, not open. This fixes some permissions issues when debugging. diff --git a/src/fileio.c b/src/fileio.c index fb2c081ae5c..3e1aa54462f 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1937,10 +1937,19 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */) | (NILP (ok_if_already_exists) ? O_EXCL : 0), S_IREAD | S_IWRITE); #else /* not MSDOS */ - ofd = emacs_open (SSDATA (encoded_newname), - O_WRONLY | O_TRUNC | O_CREAT - | (NILP (ok_if_already_exists) ? O_EXCL : 0), - 0666); + { + int new_mask = 0666; + if (input_file_statable_p) + { + if (!NILP (preserve_uid_gid)) + new_mask = 0600; + new_mask &= st.st_mode; + } + ofd = emacs_open (SSDATA (encoded_newname), + (O_WRONLY | O_TRUNC | O_CREAT + | (NILP (ok_if_already_exists) ? O_EXCL : 0)), + new_mask); + } #endif /* not MSDOS */ if (ofd < 0) report_file_error ("Opening output file", Fcons (newname, Qnil));