diff options
| author | John Wiegley | 2016-01-11 22:50:30 -0800 |
|---|---|---|
| committer | John Wiegley | 2016-01-11 22:50:30 -0800 |
| commit | fee9e3ff5e3181e5e477849b5db94e7e39a4e0c4 (patch) | |
| tree | b5a8934d6b587f3517d2b8214a6738374b07820d | |
| parent | 2d7f4d99f715a3b32bb2873be6e9b4e7e1dad1da (diff) | |
| parent | ce4a052415b70030ee591af3cb5bed0fb79ef3aa (diff) | |
| download | emacs-fee9e3ff5e3181e5e477849b5db94e7e39a4e0c4.tar.gz emacs-fee9e3ff5e3181e5e477849b5db94e7e39a4e0c4.zip | |
Merge from origin/emacs-25
ce4a052 Add defvar-local to lisp-imenu-generic-expression
a0121bc Revert commit b1e3d14845517bfa9fa5d6d3840f3ab3160306fd
76fe2d5 * lisp/emacs-lisp/autoload.el (autoload-find-destination): Doc fix.
1ae088f * lisp/emacs-lisp/autoload.el (autoload-find-destination):
b6b47af Properly encode/decode base64Binary data in SOAP
c632466 Obey coding-system-for-write when writing stdout/stderr in batch
2f32cb5 * doc/misc/efaq.texi (Packages that do not come with Emacs):
Update the URI of MELPA and marmalade-repo.
Reported by CHENG Goa <chenggao@royau.me> in
https://lists.gnu.org/archive/html/emacs-devel/2016-01/msg00390.html.
d2937aa * lisp/progmodes/opascal.el (opascal-mode-syntax-table):
5330c25 * lisp/progmodes/xscheme.el (xscheme-prompt-for-expression-exit):
7380990 Remove function wrongly on AWK Mode value of context
fontification hook.
d400753 * src/buffer.c: Stick with ASCII in doc string.
221240c Reword transient-mark-mode doc string
977d3ea Update doc string of 'selective-display'
229c3fa Make C++ buffers writeable when writing their initial text
properties.
f5c762c Additional changes for "make check-expensive"
1729cf3 ; * admin/MAINTAINERS: Remove myself.
33219d3 Apply text properties for <, > in new after-change function
(C++ Java Modes).
| -rw-r--r-- | CONTRIBUTE | 8 | ||||
| -rw-r--r-- | admin/MAINTAINERS | 3 | ||||
| -rw-r--r-- | doc/lispref/os.texi | 24 | ||||
| -rw-r--r-- | doc/misc/efaq.texi | 8 | ||||
| -rw-r--r-- | etc/NEWS | 4 | ||||
| -rw-r--r-- | lisp/emacs-lisp/autoload.el | 5 | ||||
| -rw-r--r-- | lisp/emacs-lisp/easy-mmode.el | 11 | ||||
| -rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 5 | ||||
| -rw-r--r-- | lisp/net/soap-client.el | 4 | ||||
| -rw-r--r-- | lisp/progmodes/cc-cmds.el | 38 | ||||
| -rw-r--r-- | lisp/progmodes/cc-engine.el | 83 | ||||
| -rw-r--r-- | lisp/progmodes/cc-fonts.el | 25 | ||||
| -rw-r--r-- | lisp/progmodes/cc-langs.el | 13 | ||||
| -rw-r--r-- | lisp/progmodes/cc-mode.el | 20 | ||||
| -rw-r--r-- | lisp/progmodes/opascal.el | 1 | ||||
| -rw-r--r-- | lisp/progmodes/xscheme.el | 5 | ||||
| -rw-r--r-- | src/buffer.c | 11 | ||||
| -rw-r--r-- | src/print.c | 12 | ||||
| -rw-r--r-- | src/xdisp.c | 11 | ||||
| -rw-r--r-- | test/Makefile.in | 3 |
20 files changed, 189 insertions, 105 deletions
diff --git a/CONTRIBUTE b/CONTRIBUTE index 19ec68221c4..323f9b9d060 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE | |||
| @@ -262,12 +262,20 @@ Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info | |||
| 262 | "(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/ | 262 | "(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/ |
| 263 | for more information on writing and running tests. | 263 | for more information on writing and running tests. |
| 264 | 264 | ||
| 265 | If your test lasts longer than some few seconds, mark it in its | ||
| 266 | `ert-deftest' definition with ":tags '(:expensive-test)". | ||
| 267 | |||
| 265 | To run tests on the entire Emacs tree, run "make check" from the | 268 | To run tests on the entire Emacs tree, run "make check" from the |
| 266 | top-level directory. Most tests are in the directory | 269 | top-level directory. Most tests are in the directory |
| 267 | "test/". From the "test/" directory, run "make | 270 | "test/". From the "test/" directory, run "make |
| 268 | <filename>" to run the tests for <filename>.el(c). See | 271 | <filename>" to run the tests for <filename>.el(c). See |
| 269 | "test/Makefile" for more information. | 272 | "test/Makefile" for more information. |
| 270 | 273 | ||
| 274 | Tests which are tagged ":expensive-test" are enabled additionally, if | ||
| 275 | you run "make check-expensive" from the top-level directory. "make | ||
| 276 | <filename>" as mentioned above incorporates expensive tests for | ||
| 277 | <filename>.el(c). | ||
| 278 | |||
| 271 | ** Understanding Emacs Internals. | 279 | ** Understanding Emacs Internals. |
| 272 | 280 | ||
| 273 | The best way to understand Emacs Internals is to read the code, | 281 | The best way to understand Emacs Internals is to read the code, |
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index dc6c0d26ae9..859046a6324 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS | |||
| @@ -218,9 +218,6 @@ Nicolas Petton | |||
| 218 | lisp/emacs-lisp/subr-x.el | 218 | lisp/emacs-lisp/subr-x.el |
| 219 | lisp/arc-mode.el | 219 | lisp/arc-mode.el |
| 220 | 220 | ||
| 221 | Xue Fuqiao | ||
| 222 | doc/lispref/* | ||
| 223 | |||
| 224 | Tassilo Horn | 221 | Tassilo Horn |
| 225 | lisp/doc-view.el | 222 | lisp/doc-view.el |
| 226 | 223 | ||
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 9db5e9e1e97..8e3720eb947 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi | |||
| @@ -2085,6 +2085,8 @@ than optimal. To fix the problem, set @code{baud-rate}. | |||
| 2085 | @defun send-string-to-terminal string &optional terminal | 2085 | @defun send-string-to-terminal string &optional terminal |
| 2086 | This function sends @var{string} to @var{terminal} without alteration. | 2086 | This function sends @var{string} to @var{terminal} without alteration. |
| 2087 | Control characters in @var{string} have terminal-dependent effects. | 2087 | Control characters in @var{string} have terminal-dependent effects. |
| 2088 | (If you need to display non-ASCII text on the terminal, encode it | ||
| 2089 | using one of the functions described in @ref{Explicit Encoding}.) | ||
| 2088 | This function operates only on text terminals. @var{terminal} may be | 2090 | This function operates only on text terminals. @var{terminal} may be |
| 2089 | a terminal object, a frame, or @code{nil} for the selected frame's | 2091 | a terminal object, a frame, or @code{nil} for the selected frame's |
| 2090 | terminal. In batch mode, @var{string} is sent to @code{stdout} when | 2092 | terminal. In batch mode, @var{string} is sent to @code{stdout} when |
| @@ -2252,13 +2254,21 @@ loads the library named @var{file}, or @samp{-f @var{function}}, which | |||
| 2252 | calls @var{function} with no arguments, or @samp{--eval @var{form}}. | 2254 | calls @var{function} with no arguments, or @samp{--eval @var{form}}. |
| 2253 | 2255 | ||
| 2254 | Any Lisp program output that would normally go to the echo area, | 2256 | Any Lisp program output that would normally go to the echo area, |
| 2255 | either using @code{message}, or using @code{prin1}, etc., with @code{t} | 2257 | either using @code{message}, or using @code{prin1}, etc., with |
| 2256 | as the stream, goes instead to Emacs's standard error descriptor when | 2258 | @code{t} as the stream, goes instead to Emacs's standard descriptors |
| 2257 | in batch mode. Similarly, input that would normally come from the | 2259 | when in batch mode: @code{message} writes to the standard error |
| 2258 | minibuffer is read from the standard input descriptor. | 2260 | descriptor, while @code{prin1} and other print functions write to the |
| 2259 | Thus, Emacs behaves much like a noninteractive | 2261 | standard output. Similarly, input that would normally come from the |
| 2260 | application program. (The echo area output that Emacs itself normally | 2262 | minibuffer is read from the standard input descriptor. Thus, Emacs |
| 2261 | generates, such as command echoing, is suppressed entirely.) | 2263 | behaves much like a noninteractive application program. (The echo |
| 2264 | area output that Emacs itself normally generates, such as command | ||
| 2265 | echoing, is suppressed entirely.) | ||
| 2266 | |||
| 2267 | Non-ASCII text written to the standard output or error descriptors is | ||
| 2268 | by default encoded using @code{locale-coding-system} (@pxref{Locales}) | ||
| 2269 | if it is non-@code{nil}; this can be overridden by binding | ||
| 2270 | @code{coding-system-for-write} to a coding system of you choice | ||
| 2271 | (@pxref{Explicit Encoding}). | ||
| 2262 | 2272 | ||
| 2263 | @defvar noninteractive | 2273 | @defvar noninteractive |
| 2264 | This variable is non-@code{nil} when Emacs is running in batch mode. | 2274 | This variable is non-@code{nil} when Emacs is running in batch mode. |
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index bbd9354c786..5008db31f25 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi | |||
| @@ -3308,10 +3308,10 @@ available, and then Emacs can automatically download and install the | |||
| 3308 | packages that you select. @xref{Packages,,, emacs, The GNU Emacs Manual}. | 3308 | packages that you select. @xref{Packages,,, emacs, The GNU Emacs Manual}. |
| 3309 | 3309 | ||
| 3310 | There are other, non-GNU, Emacs Lisp package servers, including: | 3310 | There are other, non-GNU, Emacs Lisp package servers, including: |
| 3311 | @uref{http://melpa.milkbox.net, MELPA}; and | 3311 | @uref{http://melpa.org/, MELPA}; and |
| 3312 | @uref{http://marmalade-repo.org, Marmalade}. To use additional | 3312 | @uref{https://marmalade-repo.org/, Marmalade}. To use additional |
| 3313 | package servers, customize the @code{package-archives} variable. | 3313 | package servers, customize the @code{package-archives} variable. Be |
| 3314 | Be aware that installing a package can run arbitrary code, so only add | 3314 | aware that installing a package can run arbitrary code, so only add |
| 3315 | sources that you trust. | 3315 | sources that you trust. |
| 3316 | 3316 | ||
| 3317 | The @uref{https://lists.gnu.org/mailman/listinfo/gnu-emacs-sources, | 3317 | The @uref{https://lists.gnu.org/mailman/listinfo/gnu-emacs-sources, |
| @@ -148,6 +148,10 @@ so if you want to use it, you can always take a copy from an older Emacs. | |||
| 148 | Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. | 148 | Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png. |
| 149 | The old Emacs logo icons are available as `emacs23.png' in the same location. | 149 | The old Emacs logo icons are available as `emacs23.png' in the same location. |
| 150 | 150 | ||
| 151 | ** New make target `check-expensive' to run additional tests. | ||
| 152 | This includes all tests which run via "make check", plus additional | ||
| 153 | tests which take more time to perform. | ||
| 154 | |||
| 151 | 155 | ||
| 152 | * Startup Changes in Emacs 25.1 | 156 | * Startup Changes in Emacs 25.1 |
| 153 | 157 | ||
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 401b419a993..3405b09e6f5 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el | |||
| @@ -701,8 +701,9 @@ Return FILE if there was no autoload cookie in it, else nil." | |||
| 701 | (defun autoload-find-destination (file load-name) | 701 | (defun autoload-find-destination (file load-name) |
| 702 | "Find the destination point of the current buffer's autoloads. | 702 | "Find the destination point of the current buffer's autoloads. |
| 703 | FILE is the file name of the current buffer. | 703 | FILE is the file name of the current buffer. |
| 704 | LOAD-NAME is the name as it appears in the output. | ||
| 704 | Returns a buffer whose point is placed at the requested location. | 705 | Returns a buffer whose point is placed at the requested location. |
| 705 | Returns nil if the file's autoloads are uptodate, otherwise | 706 | Returns nil if the file's autoloads are up-to-date, otherwise |
| 706 | removes any prior now out-of-date autoload entries." | 707 | removes any prior now out-of-date autoload entries." |
| 707 | (catch 'up-to-date | 708 | (catch 'up-to-date |
| 708 | (let* ((buf (current-buffer)) | 709 | (let* ((buf (current-buffer)) |
| @@ -738,7 +739,7 @@ removes any prior now out-of-date autoload entries." | |||
| 738 | ;; last-time is the time-stamp (specifying | 739 | ;; last-time is the time-stamp (specifying |
| 739 | ;; the last time we looked at the file) and | 740 | ;; the last time we looked at the file) and |
| 740 | ;; the file hasn't been changed since. | 741 | ;; the file hasn't been changed since. |
| 741 | ((listp last-time) | 742 | ((listp last-time) (= (length last-time) 2) |
| 742 | (not (time-less-p last-time file-time))) | 743 | (not (time-less-p last-time file-time))) |
| 743 | ;; FIXME? Arguably we should throw a | 744 | ;; FIXME? Arguably we should throw a |
| 744 | ;; user error, or some kind of warning, | 745 | ;; user error, or some kind of warning, |
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 5543e920c67..f29f64f0562 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el | |||
| @@ -152,12 +152,11 @@ For example, you could write | |||
| 152 | ...BODY CODE...)" | 152 | ...BODY CODE...)" |
| 153 | (declare (doc-string 2) | 153 | (declare (doc-string 2) |
| 154 | (debug (&define name string-or-null-p | 154 | (debug (&define name string-or-null-p |
| 155 | [&optional [¬ keywordp] sexp | 155 | [&optional [¬ keywordp] sexp |
| 156 | &optional [¬ keywordp] sexp | 156 | &optional [¬ keywordp] sexp |
| 157 | &optional [¬ keywordp] sexp] | 157 | &optional [¬ keywordp] sexp] |
| 158 | [&rest [keywordp sexp]] | 158 | [&rest [keywordp sexp]] |
| 159 | def-body)) | 159 | def-body))) |
| 160 | (indent 1)) | ||
| 161 | 160 | ||
| 162 | ;; Allow skipping the first three args. | 161 | ;; Allow skipping the first three args. |
| 163 | (cond | 162 | (cond |
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 574ecef0cde..cb8abde52ed 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el | |||
| @@ -131,9 +131,10 @@ | |||
| 131 | t)) | 131 | t)) |
| 132 | "\\s-+\\(" lisp-mode-symbol-regexp "\\)")) | 132 | "\\s-+\\(" lisp-mode-symbol-regexp "\\)")) |
| 133 | 2) | 133 | 2) |
| 134 | ;; For `defvar', we ignore (defvar FOO) constructs. | 134 | ;; For `defvar'/`defvar-local', we ignore (defvar FOO) constructs. |
| 135 | (list (purecopy "Variables") | 135 | (list (purecopy "Variables") |
| 136 | (purecopy (concat "^\\s-*(defvar\\s-+\\(" lisp-mode-symbol-regexp "\\)" | 136 | (purecopy (concat "^\\s-*(defvar\\(?:-local\\)?\\s-+\\(" |
| 137 | lisp-mode-symbol-regexp "\\)" | ||
| 137 | "[[:space:]\n]+[^)]")) | 138 | "[[:space:]\n]+[^)]")) |
| 138 | 1) | 139 | 1) |
| 139 | (list (purecopy "Types") | 140 | (list (purecopy "Types") |
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index f8cdaa9bc56..74024644966 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el | |||
| @@ -538,7 +538,7 @@ This is a specialization of `soap-encode-value' for | |||
| 538 | (base64Binary | 538 | (base64Binary |
| 539 | (unless (stringp value) | 539 | (unless (stringp value) |
| 540 | (error "Not a string value for base64Binary")) | 540 | (error "Not a string value for base64Binary")) |
| 541 | (base64-encode-string value)) | 541 | (base64-encode-string (encode-coding-string value 'utf-8))) |
| 542 | 542 | ||
| 543 | (otherwise | 543 | (otherwise |
| 544 | (error "Don't know how to encode %s for type %s" | 544 | (error "Don't know how to encode %s for type %s" |
| @@ -682,7 +682,7 @@ This is a specialization of `soap-decode-type' for | |||
| 682 | decimal byte float double duration) | 682 | decimal byte float double duration) |
| 683 | (string-to-number (car contents))) | 683 | (string-to-number (car contents))) |
| 684 | (boolean (string= (downcase (car contents)) "true")) | 684 | (boolean (string= (downcase (car contents)) "true")) |
| 685 | (base64Binary (base64-decode-string (car contents))) | 685 | (base64Binary (decode-coding-string (base64-decode-string (car contents)) 'utf-8)) |
| 686 | (anyType (soap-decode-any-type node)) | 686 | (anyType (soap-decode-any-type node)) |
| 687 | (Array (soap-decode-array node)))))) | 687 | (Array (soap-decode-array node)))))) |
| 688 | 688 | ||
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index a46f0488e76..6761de11700 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el | |||
| @@ -1121,35 +1121,15 @@ numeric argument is supplied, or the point is inside a literal." | |||
| 1121 | (looking-at "<<")) | 1121 | (looking-at "<<")) |
| 1122 | (>= (match-end 0) final-pos))) | 1122 | (>= (match-end 0) final-pos))) |
| 1123 | 1123 | ||
| 1124 | ;; It's a >. Either a C++ >> operator. ...... | 1124 | ;; It's a >. Either a template/generic terminator ... |
| 1125 | (or (and (c-major-mode-is 'c++-mode) | 1125 | (or (c-get-char-property (1- final-pos) 'syntax-table) |
| 1126 | ;; or a C++ >> operator. | ||
| 1127 | (and (c-major-mode-is 'c++-mode) | ||
| 1126 | (progn | 1128 | (progn |
| 1127 | (goto-char (1- final-pos)) | 1129 | (goto-char (1- final-pos)) |
| 1128 | (c-beginning-of-current-token) | 1130 | (c-beginning-of-current-token) |
| 1129 | (looking-at ">>")) | 1131 | (looking-at ">>")) |
| 1130 | (>= (match-end 0) final-pos)) | 1132 | (>= (match-end 0) final-pos)))))) |
| 1131 | ;; ...., or search back for a < which isn't already marked as an | ||
| 1132 | ;; opening template delimiter. | ||
| 1133 | (save-restriction | ||
| 1134 | (widen) | ||
| 1135 | ;; Narrow to avoid `c-forward-<>-arglist' below searching past | ||
| 1136 | ;; our position. | ||
| 1137 | (narrow-to-region (point-min) final-pos) | ||
| 1138 | (goto-char final-pos) | ||
| 1139 | (while | ||
| 1140 | (and | ||
| 1141 | (progn | ||
| 1142 | (c-syntactic-skip-backward "^<;}" nil t) | ||
| 1143 | (eq (char-before) ?<)) | ||
| 1144 | (progn | ||
| 1145 | (backward-char) | ||
| 1146 | (looking-at "\\s(")))) | ||
| 1147 | (and (eq (char-after) ?<) | ||
| 1148 | (not (looking-at "\\s(")) | ||
| 1149 | (progn (c-backward-syntactic-ws) | ||
| 1150 | (c-simple-skip-symbol-backward)) | ||
| 1151 | (or (looking-at c-opt-<>-sexp-key) | ||
| 1152 | (not (looking-at c-keywords-regexp))))))))) | ||
| 1153 | 1133 | ||
| 1154 | (goto-char final-pos) | 1134 | (goto-char final-pos) |
| 1155 | (when found-delim | 1135 | (when found-delim |
| @@ -1157,11 +1137,9 @@ numeric argument is supplied, or the point is inside a literal." | |||
| 1157 | (when (and (eq (char-before) ?>) | 1137 | (when (and (eq (char-before) ?>) |
| 1158 | (not executing-kbd-macro) | 1138 | (not executing-kbd-macro) |
| 1159 | blink-paren-function) | 1139 | blink-paren-function) |
| 1160 | ;; Currently (2014-10-19), the syntax-table text properties on < and > | 1140 | ;; From now (2016-01-01), the syntax-table text properties on < and > |
| 1161 | ;; are only applied in code called during Emacs redisplay. We thus | 1141 | ;; are applied in an after-change function, not during redisplay. Hence |
| 1162 | ;; explicitly cause a redisplay so that these properties have been | 1142 | ;; we no longer need to call (sit-for 0) for blink paren to work. |
| 1163 | ;; applied when `blink-paren-function' gets called. | ||
| 1164 | (sit-for 0) | ||
| 1165 | (funcall blink-paren-function))))) | 1143 | (funcall blink-paren-function))))) |
| 1166 | 1144 | ||
| 1167 | (defun c-electric-paren (arg) | 1145 | (defun c-electric-paren (arg) |
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 617c94aae08..3301d415923 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -5577,8 +5577,9 @@ comment at the start of cc-engine.el for more info." | |||
| 5577 | 5577 | ||
| 5578 | (defun c-before-change-check-<>-operators (beg end) | 5578 | (defun c-before-change-check-<>-operators (beg end) |
| 5579 | ;; Unmark certain pairs of "< .... >" which are currently marked as | 5579 | ;; Unmark certain pairs of "< .... >" which are currently marked as |
| 5580 | ;; template/generic delimiters. (This marking is via syntax-table | 5580 | ;; template/generic delimiters. (This marking is via syntax-table text |
| 5581 | ;; text properties). | 5581 | ;; properties), and expand the (c-new-BEG c-new-END) region to include all |
| 5582 | ;; unmarked < and > operators within the certain bounds (see below). | ||
| 5582 | ;; | 5583 | ;; |
| 5583 | ;; These pairs are those which are in the current "statement" (i.e., | 5584 | ;; These pairs are those which are in the current "statement" (i.e., |
| 5584 | ;; the region between the {, }, or ; before BEG and the one after | 5585 | ;; the region between the {, }, or ; before BEG and the one after |
| @@ -5595,40 +5596,43 @@ comment at the start of cc-engine.el for more info." | |||
| 5595 | ;; FIXME!!! This routine ignores the possibility of macros entirely. | 5596 | ;; FIXME!!! This routine ignores the possibility of macros entirely. |
| 5596 | ;; 2010-01-29. | 5597 | ;; 2010-01-29. |
| 5597 | (save-excursion | 5598 | (save-excursion |
| 5598 | (let ((beg-lit-limits (progn (goto-char beg) (c-literal-limits))) | 5599 | (c-save-buffer-state |
| 5599 | (end-lit-limits (progn (goto-char end) (c-literal-limits))) | 5600 | ((beg-lit-limits (progn (goto-char beg) (c-literal-limits))) |
| 5600 | new-beg new-end need-new-beg need-new-end) | 5601 | (end-lit-limits (progn (goto-char end) (c-literal-limits))) |
| 5601 | ;; Locate the barrier before the changed region | 5602 | new-beg new-end beg-limit end-limit) |
| 5603 | ;; Locate the earliest < after the barrier before the changed region, | ||
| 5604 | ;; which isn't already marked as a paren. | ||
| 5602 | (goto-char (if beg-lit-limits (car beg-lit-limits) beg)) | 5605 | (goto-char (if beg-lit-limits (car beg-lit-limits) beg)) |
| 5603 | (c-syntactic-skip-backward "^;{}" (c-determine-limit 512)) | 5606 | (setq beg-limit (c-determine-limit 512)) |
| 5604 | (setq new-beg (point)) | ||
| 5605 | 5607 | ||
| 5606 | ;; Remove the syntax-table/category properties from each pertinent <...> | 5608 | ;; Remove the syntax-table/category properties from each pertinent <...> |
| 5607 | ;; pair. Firsly, the ones with the < before beg and > after beg. | 5609 | ;; pair. Firstly, the ones with the < before beg and > after beg.... |
| 5608 | (while | 5610 | (while (progn (c-syntactic-skip-backward "^;{}<" beg-limit) |
| 5609 | (c-search-forward-char-property 'syntax-table c-<-as-paren-syntax beg) | 5611 | (eq (char-before) ?<)) |
| 5610 | (if (c-clear-<-pair-props-if-match-after beg (1- (point))) | 5612 | (c-backward-token-2) |
| 5611 | (setq need-new-beg t))) | 5613 | (when (eq (char-after) ?<) |
| 5614 | (c-clear-<-pair-props-if-match-after beg))) | ||
| 5615 | (c-forward-syntactic-ws) | ||
| 5616 | (setq new-beg (point)) | ||
| 5612 | 5617 | ||
| 5613 | ;; Locate the barrier after END. | 5618 | ;; ...Then the ones with < before end and > after end. |
| 5614 | (goto-char (if end-lit-limits (cdr end-lit-limits) end)) | 5619 | (goto-char (if end-lit-limits (cdr end-lit-limits) end)) |
| 5615 | (c-syntactic-re-search-forward "[;{}]" (c-determine-+ve-limit 512) 'end) | 5620 | (setq end-limit (c-determine-+ve-limit 512)) |
| 5621 | (while (and (c-syntactic-re-search-forward "[;{}>]" end-limit 'end) | ||
| 5622 | (eq (char-before) ?>)) | ||
| 5623 | (c-end-of-current-token) | ||
| 5624 | (when (eq (char-before) ?>) | ||
| 5625 | (c-clear->-pair-props-if-match-before end (1- (point))))) | ||
| 5626 | (c-backward-syntactic-ws) | ||
| 5616 | (setq new-end (point)) | 5627 | (setq new-end (point)) |
| 5617 | 5628 | ||
| 5618 | ;; Remove syntax-table properties from the remaining pertinent <...> | ||
| 5619 | ;; pairs, those with a > after end and < before end. | ||
| 5620 | (while (c-search-backward-char-property 'syntax-table c->-as-paren-syntax end) | ||
| 5621 | (if (c-clear->-pair-props-if-match-before end) | ||
| 5622 | (setq need-new-end t))) | ||
| 5623 | |||
| 5624 | ;; Extend the fontification region, if needed. | 5629 | ;; Extend the fontification region, if needed. |
| 5625 | (when need-new-beg | 5630 | (and new-beg |
| 5626 | (goto-char new-beg) | 5631 | (< new-beg c-new-BEG) |
| 5627 | (c-forward-syntactic-ws) | 5632 | (setq c-new-BEG new-beg)) |
| 5628 | (and (< (point) c-new-BEG) (setq c-new-BEG (point)))) | 5633 | (and new-end |
| 5629 | 5634 | (> new-end c-new-END) | |
| 5630 | (when need-new-end | 5635 | (setq c-new-END new-end))))) |
| 5631 | (and (> new-end c-new-END) (setq c-new-END new-end)))))) | ||
| 5632 | 5636 | ||
| 5633 | (defun c-after-change-check-<>-operators (beg end) | 5637 | (defun c-after-change-check-<>-operators (beg end) |
| 5634 | ;; This is called from `after-change-functions' when | 5638 | ;; This is called from `after-change-functions' when |
| @@ -5668,7 +5672,28 @@ comment at the start of cc-engine.el for more info." | |||
| 5668 | (c-clear-<>-pair-props) | 5672 | (c-clear-<>-pair-props) |
| 5669 | (forward-char))))))) | 5673 | (forward-char))))))) |
| 5670 | 5674 | ||
| 5671 | 5675 | (defun c-restore-<>-properties (_beg _end _old-len) | |
| 5676 | ;; This function is called as an after-change function. It restores the | ||
| 5677 | ;; category/syntax-table properties on template/generic <..> pairs between | ||
| 5678 | ;; c-new-BEG and c-new-END. It may do hidden buffer changes. | ||
| 5679 | (c-save-buffer-state ((c-parse-and-markup-<>-arglists t) | ||
| 5680 | c-restricted-<>-arglists lit-limits) | ||
| 5681 | (goto-char c-new-BEG) | ||
| 5682 | (if (setq lit-limits (c-literal-limits)) | ||
| 5683 | (goto-char (cdr lit-limits))) | ||
| 5684 | (while (and (< (point) c-new-END) | ||
| 5685 | (c-syntactic-re-search-forward "<" c-new-END 'bound)) | ||
| 5686 | (backward-char) | ||
| 5687 | (save-excursion | ||
| 5688 | (c-backward-token-2) | ||
| 5689 | (setq c-restricted-<>-arglists | ||
| 5690 | (and (not (looking-at c-opt-<>-sexp-key)) | ||
| 5691 | (progn (c-backward-syntactic-ws) ; to < or , | ||
| 5692 | (and (memq (char-before) '(?< ?,)) | ||
| 5693 | (not (eq (c-get-char-property (point) 'c-type) | ||
| 5694 | 'c-decl-arg-start))))))) | ||
| 5695 | (or (c-forward-<>-arglist nil) | ||
| 5696 | (forward-char))))) | ||
| 5672 | 5697 | ||
| 5673 | ;; Handling of small scale constructs like types and names. | 5698 | ;; Handling of small scale constructs like types and names. |
| 5674 | 5699 | ||
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index c2b2d72649f..f74e5cbf678 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el | |||
| @@ -1205,6 +1205,9 @@ casts and declarations are fontified. Used on level 2 and higher." | |||
| 1205 | ;; Same as `max-type-decl-*', but used when we're before | 1205 | ;; Same as `max-type-decl-*', but used when we're before |
| 1206 | ;; `token-pos'. | 1206 | ;; `token-pos'. |
| 1207 | (max-type-decl-end-before-token 0) | 1207 | (max-type-decl-end-before-token 0) |
| 1208 | ;; End of <..> construct which has had c-<>-arg-sep c-type | ||
| 1209 | ;; properties set within it. | ||
| 1210 | (max-<>-end 0) | ||
| 1208 | ;; Set according to the context to direct the heuristics for | 1211 | ;; Set according to the context to direct the heuristics for |
| 1209 | ;; recognizing C++ templates. | 1212 | ;; recognizing C++ templates. |
| 1210 | c-restricted-<>-arglists | 1213 | c-restricted-<>-arglists |
| @@ -1347,6 +1350,28 @@ casts and declarations are fontified. Used on level 2 and higher." | |||
| 1347 | (setq decl-or-cast (c-forward-decl-or-cast-1 | 1350 | (setq decl-or-cast (c-forward-decl-or-cast-1 |
| 1348 | match-pos context last-cast-end)) | 1351 | match-pos context last-cast-end)) |
| 1349 | 1352 | ||
| 1353 | ;; Ensure that c-<>-arg-sep c-type properties are in place on the | ||
| 1354 | ;; commas separating the arguments inside template/generic <..>s. | ||
| 1355 | (when (and (eq (char-before match-pos) ?<) | ||
| 1356 | (> match-pos max-<>-end)) | ||
| 1357 | (save-excursion | ||
| 1358 | (goto-char match-pos) | ||
| 1359 | (c-backward-token-2) | ||
| 1360 | (if (and | ||
| 1361 | (eq (char-after) ?<) | ||
| 1362 | (let ((c-restricted-<>-arglists | ||
| 1363 | (save-excursion | ||
| 1364 | (c-backward-token-2) | ||
| 1365 | (and | ||
| 1366 | (not (looking-at c-opt-<>-sexp-key)) | ||
| 1367 | (progn (c-backward-syntactic-ws) | ||
| 1368 | (memq (char-before) '(?\( ?,))) | ||
| 1369 | (not (eq (c-get-char-property (1- (point)) | ||
| 1370 | 'c-type) | ||
| 1371 | 'c-decl-arg-start)))))) | ||
| 1372 | (c-forward-<>-arglist nil))) | ||
| 1373 | (setq max-<>-end (point))))) | ||
| 1374 | |||
| 1350 | (cond | 1375 | (cond |
| 1351 | ((eq decl-or-cast 'cast) | 1376 | ((eq decl-or-cast 'cast) |
| 1352 | ;; Save the position after the previous cast so we can feed | 1377 | ;; Save the position after the previous cast so we can feed |
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 8ae75277925..08d84fbb625 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el | |||
| @@ -499,8 +499,13 @@ parameters \(point-min) and \(point-max).") | |||
| 499 | ;; For documentation see the following c-lang-defvar of the same name. | 499 | ;; For documentation see the following c-lang-defvar of the same name. |
| 500 | ;; The value here may be a list of functions or a single function. | 500 | ;; The value here may be a list of functions or a single function. |
| 501 | t 'c-change-expand-fl-region | 501 | t 'c-change-expand-fl-region |
| 502 | (c c++ objc) '(c-neutralize-syntax-in-and-mark-CPP | 502 | (c objc) '(c-neutralize-syntax-in-and-mark-CPP |
| 503 | c-change-expand-fl-region) | 503 | c-change-expand-fl-region) |
| 504 | c++ '(c-neutralize-syntax-in-and-mark-CPP | ||
| 505 | c-restore-<>-properties | ||
| 506 | c-change-expand-fl-region) | ||
| 507 | java '(c-restore-<>-properties | ||
| 508 | c-change-expand-fl-region) | ||
| 504 | awk 'c-awk-extend-and-syntax-tablify-region) | 509 | awk 'c-awk-extend-and-syntax-tablify-region) |
| 505 | (c-lang-defvar c-before-font-lock-functions | 510 | (c-lang-defvar c-before-font-lock-functions |
| 506 | (let ((fs (c-lang-const c-before-font-lock-functions))) | 511 | (let ((fs (c-lang-const c-before-font-lock-functions))) |
| @@ -526,8 +531,8 @@ When the mode is initialized, these functions are called with | |||
| 526 | parameters \(point-min), \(point-max) and <buffer size>.") | 531 | parameters \(point-min), \(point-max) and <buffer size>.") |
| 527 | 532 | ||
| 528 | (c-lang-defconst c-before-context-fontification-functions | 533 | (c-lang-defconst c-before-context-fontification-functions |
| 529 | awk nil | 534 | t 'c-context-expand-fl-region |
| 530 | t 'c-context-expand-fl-region) | 535 | awk nil) |
| 531 | ;; For documentation see the following c-lang-defvar of the same name. | 536 | ;; For documentation see the following c-lang-defvar of the same name. |
| 532 | ;; The value here may be a list of functions or a single function. | 537 | ;; The value here may be a list of functions or a single function. |
| 533 | (c-lang-defvar c-before-context-fontification-functions | 538 | (c-lang-defvar c-before-context-fontification-functions |
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 7f71700c650..644065911dd 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el | |||
| @@ -631,8 +631,11 @@ that requires a literal mode spec at compile time." | |||
| 631 | (font-lock-mode 1))) | 631 | (font-lock-mode 1))) |
| 632 | 632 | ||
| 633 | ;; Buffer local variables defining the region to be fontified by a font lock | 633 | ;; Buffer local variables defining the region to be fontified by a font lock |
| 634 | ;; after-change function. They are set in c-after-change to | 634 | ;; after-change function. They are initialized in c-before-change to |
| 635 | ;; after-change-functions' BEG and END, and may be modified by functions in | 635 | ;; before-change-functions' BEG and END. `c-new-END' is amended in |
| 636 | ;; c-after-change with after-change-functions' BEG, END, and OLD-LEN. These | ||
| 637 | ;; variables may be modified by any before/after-change function, in | ||
| 638 | ;; particular by functions in `c-get-state-before-change-functions' and | ||
| 636 | ;; `c-before-font-lock-functions'. | 639 | ;; `c-before-font-lock-functions'. |
| 637 | (defvar c-new-BEG 0) | 640 | (defvar c-new-BEG 0) |
| 638 | (make-variable-buffer-local 'c-new-BEG) | 641 | (make-variable-buffer-local 'c-new-BEG) |
| @@ -671,8 +674,9 @@ compatible with old code; callers should always specify it." | |||
| 671 | (funcall fn (point-min) (point-max))) | 674 | (funcall fn (point-min) (point-max))) |
| 672 | c-get-state-before-change-functions) | 675 | c-get-state-before-change-functions) |
| 673 | (mapc (lambda (fn) | 676 | (mapc (lambda (fn) |
| 674 | (funcall fn (point-min) (point-max) | 677 | (if (not (eq fn 'c-restore-<>-properties)) |
| 675 | (- (point-max) (point-min)))) | 678 | (funcall fn (point-min) (point-max) |
| 679 | (- (point-max) (point-min))))) | ||
| 676 | c-before-font-lock-functions)))) | 680 | c-before-font-lock-functions)))) |
| 677 | 681 | ||
| 678 | (set (make-local-variable 'outline-regexp) "[^#\n\^M]") | 682 | (set (make-local-variable 'outline-regexp) "[^#\n\^M]") |
| @@ -1032,6 +1036,8 @@ Note that the style variables are always made local to the buffer." | |||
| 1032 | c-just-done-before-change) ; guard against a spurious second | 1036 | c-just-done-before-change) ; guard against a spurious second |
| 1033 | ; invocation of before-change-functions. | 1037 | ; invocation of before-change-functions. |
| 1034 | (setq c-just-done-before-change t) | 1038 | (setq c-just-done-before-change t) |
| 1039 | ;; (c-new-BEG c-new-END) will be the region to fontify. | ||
| 1040 | (setq c-new-BEG beg c-new-END end) | ||
| 1035 | (setq c-maybe-stale-found-type nil) | 1041 | (setq c-maybe-stale-found-type nil) |
| 1036 | (save-restriction | 1042 | (save-restriction |
| 1037 | (save-match-data | 1043 | (save-match-data |
| @@ -1126,7 +1132,8 @@ Note that the style variables are always made local to the buffer." | |||
| 1126 | 1132 | ||
| 1127 | ;; (c-new-BEG c-new-END) will be the region to fontify. It may become | 1133 | ;; (c-new-BEG c-new-END) will be the region to fontify. It may become |
| 1128 | ;; larger than (beg end). | 1134 | ;; larger than (beg end). |
| 1129 | (setq c-new-BEG beg c-new-END end) | 1135 | ;; (setq c-new-BEG beg c-new-END end) |
| 1136 | (setq c-new-END (- (+ c-new-END (- end beg)) old-len)) | ||
| 1130 | 1137 | ||
| 1131 | (unless (c-called-from-text-property-change-p) | 1138 | (unless (c-called-from-text-property-change-p) |
| 1132 | (setq c-just-done-before-change nil) | 1139 | (setq c-just-done-before-change nil) |
| @@ -1245,7 +1252,8 @@ Note that the style variables are always made local to the buffer." | |||
| 1245 | (save-restriction | 1252 | (save-restriction |
| 1246 | (widen) | 1253 | (widen) |
| 1247 | (save-excursion | 1254 | (save-excursion |
| 1248 | (let ((new-beg beg) (new-end end) new-region) | 1255 | (let ((new-beg beg) (new-end end) |
| 1256 | (new-region (cons beg end))) | ||
| 1249 | (mapc (lambda (fn) | 1257 | (mapc (lambda (fn) |
| 1250 | (setq new-region (funcall fn new-beg new-end)) | 1258 | (setq new-region (funcall fn new-beg new-end)) |
| 1251 | (setq new-beg (car new-region) new-end (cdr new-region))) | 1259 | (setq new-beg (car new-region) new-end (cdr new-region))) |
diff --git a/lisp/progmodes/opascal.el b/lisp/progmodes/opascal.el index 72c09fe15c2..6a02280c1e8 100644 --- a/lisp/progmodes/opascal.el +++ b/lisp/progmodes/opascal.el | |||
| @@ -257,6 +257,7 @@ routine.") | |||
| 257 | 257 | ||
| 258 | (defvar opascal-mode-syntax-table | 258 | (defvar opascal-mode-syntax-table |
| 259 | (let ((st (make-syntax-table))) | 259 | (let ((st (make-syntax-table))) |
| 260 | (modify-syntax-entry ?\\ "." st) ; bug#22224 | ||
| 260 | ;; Strings. | 261 | ;; Strings. |
| 261 | (modify-syntax-entry ?\" "\"" st) | 262 | (modify-syntax-entry ?\" "\"" st) |
| 262 | (modify-syntax-entry ?\' "\"" st) | 263 | (modify-syntax-entry ?\' "\"" st) |
diff --git a/lisp/progmodes/xscheme.el b/lisp/progmodes/xscheme.el index 6efc0b1dccf..214f381971a 100644 --- a/lisp/progmodes/xscheme.el +++ b/lisp/progmodes/xscheme.el | |||
| @@ -1174,9 +1174,10 @@ the remaining input.") | |||
| 1174 | 1174 | ||
| 1175 | (defun xscheme-prompt-for-expression-exit () | 1175 | (defun xscheme-prompt-for-expression-exit () |
| 1176 | (interactive) | 1176 | (interactive) |
| 1177 | (if (eq (xscheme-region-expression-p (point-min) (point-max)) 'one) | 1177 | (if (eq (xscheme-region-expression-p (minibuffer-prompt-end) (point-max)) |
| 1178 | 'one) | ||
| 1178 | (exit-minibuffer) | 1179 | (exit-minibuffer) |
| 1179 | (error "input must be a single, complete expression"))) | 1180 | (error "Input must be a single, complete expression"))) |
| 1180 | 1181 | ||
| 1181 | (defun xscheme-region-expression-p (start end) | 1182 | (defun xscheme-region-expression-p (start end) |
| 1182 | (save-excursion | 1183 | (save-excursion |
diff --git a/src/buffer.c b/src/buffer.c index 51c36de0c6b..3f9371652e7 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -5803,11 +5803,14 @@ you probably should set this to -2 in that buffer. */); | |||
| 5803 | DEFVAR_PER_BUFFER ("selective-display", &BVAR (current_buffer, selective_display), | 5803 | DEFVAR_PER_BUFFER ("selective-display", &BVAR (current_buffer, selective_display), |
| 5804 | Qnil, | 5804 | Qnil, |
| 5805 | doc: /* Non-nil enables selective display. | 5805 | doc: /* Non-nil enables selective display. |
| 5806 | |||
| 5806 | An integer N as value means display only lines | 5807 | An integer N as value means display only lines |
| 5807 | that start with less than N columns of space. | 5808 | that start with less than N columns of space. |
| 5809 | |||
| 5808 | A value of t means that the character ^M makes itself and | 5810 | A value of t means that the character ^M makes itself and |
| 5809 | all the rest of the line invisible; also, when saving the buffer | 5811 | all the rest of the line invisible; also, when saving the buffer |
| 5810 | in a file, save the ^M as a newline. */); | 5812 | in a file, save the ^M as a newline. This usage is obsolete; use |
| 5813 | overlays or text properties instead. */); | ||
| 5811 | 5814 | ||
| 5812 | DEFVAR_PER_BUFFER ("selective-display-ellipses", | 5815 | DEFVAR_PER_BUFFER ("selective-display-ellipses", |
| 5813 | &BVAR (current_buffer, selective_display_ellipses), | 5816 | &BVAR (current_buffer, selective_display_ellipses), |
| @@ -6201,11 +6204,11 @@ all windows or just the selected window. | |||
| 6201 | 6204 | ||
| 6202 | Lisp programs may give this variable certain special values: | 6205 | Lisp programs may give this variable certain special values: |
| 6203 | 6206 | ||
| 6204 | - A value of \\='lambda (literally) enables Transient Mark mode temporarily. | 6207 | - The symbol `lambda' enables Transient Mark mode temporarily. |
| 6205 | It is disabled again after any subsequent action that would | 6208 | The mode is disabled again after any subsequent action that would |
| 6206 | normally deactivate the mark (e.g. buffer modification). | 6209 | normally deactivate the mark (e.g. buffer modification). |
| 6207 | 6210 | ||
| 6208 | - A value of (only . OLDVAL) enables Transient Mark mode | 6211 | - The pair (only . OLDVAL) enables Transient Mark mode |
| 6209 | temporarily. After any subsequent point motion command that is | 6212 | temporarily. After any subsequent point motion command that is |
| 6210 | not shift-translated, or any other action that would normally | 6213 | not shift-translated, or any other action that would normally |
| 6211 | deactivate the mark (e.g. buffer modification), the value of | 6214 | deactivate the mark (e.g. buffer modification), the value of |
diff --git a/src/print.c b/src/print.c index 975675014d9..269d8f250e2 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -200,6 +200,13 @@ printchar_to_stream (unsigned int ch, FILE *stream) | |||
| 200 | { | 200 | { |
| 201 | Lisp_Object dv IF_LINT (= Qnil); | 201 | Lisp_Object dv IF_LINT (= Qnil); |
| 202 | ptrdiff_t i = 0, n = 1; | 202 | ptrdiff_t i = 0, n = 1; |
| 203 | Lisp_Object coding_system = Vlocale_coding_system; | ||
| 204 | bool encode_p = false; | ||
| 205 | |||
| 206 | if (!NILP (Vcoding_system_for_write)) | ||
| 207 | coding_system = Vcoding_system_for_write; | ||
| 208 | if (!NILP (coding_system)) | ||
| 209 | encode_p = true; | ||
| 203 | 210 | ||
| 204 | if (CHAR_VALID_P (ch) && DISP_TABLE_P (Vstandard_display_table)) | 211 | if (CHAR_VALID_P (ch) && DISP_TABLE_P (Vstandard_display_table)) |
| 205 | { | 212 | { |
| @@ -228,8 +235,11 @@ printchar_to_stream (unsigned int ch, FILE *stream) | |||
| 228 | unsigned char mbstr[MAX_MULTIBYTE_LENGTH]; | 235 | unsigned char mbstr[MAX_MULTIBYTE_LENGTH]; |
| 229 | int len = CHAR_STRING (ch, mbstr); | 236 | int len = CHAR_STRING (ch, mbstr); |
| 230 | Lisp_Object encoded_ch = | 237 | Lisp_Object encoded_ch = |
| 231 | ENCODE_SYSTEM (make_multibyte_string ((char *) mbstr, 1, len)); | 238 | make_multibyte_string ((char *) mbstr, 1, len); |
| 232 | 239 | ||
| 240 | if (encode_p) | ||
| 241 | encoded_ch = code_convert_string_norecord (encoded_ch, | ||
| 242 | coding_system, true); | ||
| 233 | fwrite (SSDATA (encoded_ch), 1, SBYTES (encoded_ch), stream); | 243 | fwrite (SSDATA (encoded_ch), 1, SBYTES (encoded_ch), stream); |
| 234 | #ifdef WINDOWSNT | 244 | #ifdef WINDOWSNT |
| 235 | if (print_output_debug_flag && stream == stderr) | 245 | if (print_output_debug_flag && stream == stderr) |
diff --git a/src/xdisp.c b/src/xdisp.c index b18bfd0d49d..ee748bd8680 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -10206,7 +10206,16 @@ message_to_stderr (Lisp_Object m) | |||
| 10206 | } | 10206 | } |
| 10207 | if (STRINGP (m)) | 10207 | if (STRINGP (m)) |
| 10208 | { | 10208 | { |
| 10209 | Lisp_Object s = ENCODE_SYSTEM (m); | 10209 | Lisp_Object coding_system = Vlocale_coding_system; |
| 10210 | Lisp_Object s; | ||
| 10211 | |||
| 10212 | if (!NILP (Vcoding_system_for_write)) | ||
| 10213 | coding_system = Vcoding_system_for_write; | ||
| 10214 | if (!NILP (coding_system)) | ||
| 10215 | s = code_convert_string_norecord (m, coding_system, true); | ||
| 10216 | else | ||
| 10217 | s = m; | ||
| 10218 | |||
| 10210 | fwrite (SDATA (s), SBYTES (s), 1, stderr); | 10219 | fwrite (SDATA (s), SBYTES (s), 1, stderr); |
| 10211 | } | 10220 | } |
| 10212 | if (!cursor_in_echo_area) | 10221 | if (!cursor_in_echo_area) |
diff --git a/test/Makefile.in b/test/Makefile.in index db386cebe29..62443a195ef 100644 --- a/test/Makefile.in +++ b/test/Makefile.in | |||
| @@ -133,8 +133,7 @@ $(foreach test,${TESTS},$(eval $(call test_template,${test}))) | |||
| 133 | ## have to run Emacs for every make invocation, and it might not be | 133 | ## have to run Emacs for every make invocation, and it might not be |
| 134 | ## available during clean. | 134 | ## available during clean. |
| 135 | -include make-test-deps.mk | 135 | -include make-test-deps.mk |
| 136 | 136 | ## Rerun default tests. | |
| 137 | ## Re-run all the tests every time. | ||
| 138 | check: | 137 | check: |
| 139 | -@for f in $(LOGFILES); do test ! -f $$f || mv $$f $$f~; done | 138 | -@for f in $(LOGFILES); do test ! -f $$f || mv $$f $$f~; done |
| 140 | @${MAKE} check-maybe | 139 | @${MAKE} check-maybe |