diff options
| author | Paul Eggert | 2016-10-23 02:43:17 -0700 |
|---|---|---|
| committer | Paul Eggert | 2016-10-23 02:43:17 -0700 |
| commit | 6129cd03e20a0aaee46ceb742a9ed1ae2904eab3 (patch) | |
| tree | f432bbffba80979cec74cfc125a9f73abfd06a91 | |
| parent | 16d126d7559c2f58c8af6cf86c9f54b6e21cceb4 (diff) | |
| parent | b73f4668ab685dfb690eced15b20ed47f90efccb (diff) | |
| download | emacs-6129cd03e20a0aaee46ceb742a9ed1ae2904eab3.tar.gz emacs-6129cd03e20a0aaee46ceb742a9ed1ae2904eab3.zip | |
Merge from origin/emacs-25
b73f466 * lisp/cus-start.el (exec-path): Handle nil elements. (Bug#2...
55ebb70 Catch the imenu-unavailable error in sh-mode completion table
993acb5 ; Minor fix for last change in characters.el
30c4bb5 More char-width fixes
4eb4463 Fix char-width-table values for some Emoji
528997d Keep point when switching from and to *terminal* buffer
2130005 * INSTALL: Use correct Emacs release number 25.
10835b1 Avoid crashes due to objects read with the #n=object form
4de671d Improve doc string of 'completion-at-point-functions'
ceb46f0 Fix crash in evaluating functions
d8374c4 * src/filelock.c (current_lock_owner): Update comment.
| -rw-r--r-- | INSTALL | 2 | ||||
| -rw-r--r-- | admin/notes/unicode | 4 | ||||
| -rw-r--r-- | lisp/cus-start.el | 4 | ||||
| -rw-r--r-- | lisp/international/characters.el | 29 | ||||
| -rw-r--r-- | lisp/minibuffer.el | 18 | ||||
| -rw-r--r-- | lisp/progmodes/sh-script.el | 5 | ||||
| -rw-r--r-- | lisp/term.el | 16 | ||||
| -rw-r--r-- | src/filelock.c | 8 | ||||
| -rw-r--r-- | src/lread.c | 13 |
9 files changed, 54 insertions, 45 deletions
| @@ -34,7 +34,7 @@ some of the steps manually. The more detailed description in the other | |||
| 34 | sections of this guide will help you do that, so please refer to those | 34 | sections of this guide will help you do that, so please refer to those |
| 35 | sections if you need to. | 35 | sections if you need to. |
| 36 | 36 | ||
| 37 | 1. Unpacking the Emacs 24 release requires about 200 MB of free | 37 | 1. Unpacking the Emacs 25 release requires about 200 MB of free |
| 38 | disk space. Building Emacs uses about another 200 MB of space. | 38 | disk space. Building Emacs uses about another 200 MB of space. |
| 39 | The final installed Emacs uses about 150 MB of disk space. | 39 | The final installed Emacs uses about 150 MB of disk space. |
| 40 | This includes the space-saving that comes from automatically | 40 | This includes the space-saving that comes from automatically |
diff --git a/admin/notes/unicode b/admin/notes/unicode index c8a956d620a..7f0ce10f048 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode | |||
| @@ -37,6 +37,10 @@ and char-width-table. The additional scripts should cause automatic | |||
| 37 | updates in charscript.el, but it is a good idea to look at the results | 37 | updates in charscript.el, but it is a good idea to look at the results |
| 38 | and see if any changes in admin/unidata/blocks.awk are required. | 38 | and see if any changes in admin/unidata/blocks.awk are required. |
| 39 | 39 | ||
| 40 | The setting of char-width-table around line 1200 of characters.el | ||
| 41 | should be checked against the latest version of the Unicode file | ||
| 42 | EastAsianWidth.txt, and any discrepancies fixed. | ||
| 43 | |||
| 40 | Any new scripts added by UnicodeData.txt will also need updates to | 44 | Any new scripts added by UnicodeData.txt will also need updates to |
| 41 | script-representative-chars defined in fontset.el, and also the list | 45 | script-representative-chars defined in fontset.el, and also the list |
| 42 | of OTF script tags in otf-script-alist, whose source is on this page: | 46 | of OTF script tags in otf-script-alist, whose source is on this page: |
diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 127a574c7e3..b7cc6261a1b 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el | |||
| @@ -173,7 +173,9 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of | |||
| 173 | (directory :format "%v"))) | 173 | (directory :format "%v"))) |
| 174 | nil | 174 | nil |
| 175 | :standard | 175 | :standard |
| 176 | (mapcar 'directory-file-name | 176 | (mapcar (lambda (f) |
| 177 | (if f (directory-file-name f) | ||
| 178 | ".")) | ||
| 177 | (append (parse-colon-path (getenv "PATH")) | 179 | (append (parse-colon-path (getenv "PATH")) |
| 178 | (list exec-directory)))) | 180 | (list exec-directory)))) |
| 179 | (exec-suffixes execute (repeat string)) | 181 | (exec-suffixes execute (repeat string)) |
diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 1757d2ba12c..2a7bc32f821 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el | |||
| @@ -1239,38 +1239,23 @@ with L, LRE, or LRO Unicode bidi character type.") | |||
| 1239 | (#x2B50 . #x2B50) | 1239 | (#x2B50 . #x2B50) |
| 1240 | (#x2B55 . #x2B55) | 1240 | (#x2B55 . #x2B55) |
| 1241 | (#x2E80 . #x303E) | 1241 | (#x2E80 . #x303E) |
| 1242 | (#x3040 . #xA4CF) | 1242 | (#x3040 . #x4DBF) |
| 1243 | (#x4E00 . #xA4CF) | ||
| 1244 | (#xA960 . #xA97F) | ||
| 1243 | (#xAC00 . #xD7A3) | 1245 | (#xAC00 . #xD7A3) |
| 1244 | (#xF900 . #xFAFF) | 1246 | (#xF900 . #xFAFF) |
| 1247 | (#xFE10 . #xFE19) | ||
| 1245 | (#xFE30 . #xFE6F) | 1248 | (#xFE30 . #xFE6F) |
| 1246 | (#xFF01 . #xFF60) | 1249 | (#xFF01 . #xFF60) |
| 1247 | (#xFFE0 . #xFFE6) | 1250 | (#xFFE0 . #xFFE6) |
| 1248 | (#x16FE0 . #x16FE0) | 1251 | (#x16FE0 . #x16FE0) |
| 1249 | (#x17000 . #x187EC) | 1252 | (#x17000 . #x187EC) |
| 1250 | (#x18800 . #x18AF2) | 1253 | (#x18800 . #x18AF2) |
| 1254 | (#x1B000 . #x1B001) | ||
| 1251 | (#x1F18E . #x1F18E) | 1255 | (#x1F18E . #x1F18E) |
| 1252 | (#x1F191 . #x1F19A) | 1256 | (#x1F191 . #x1F19A) |
| 1253 | (#x1F200 . #x1F202) | 1257 | (#x1F200 . #x1F2FF) |
| 1254 | (#x1F210 . #x1F23B) | 1258 | (#x1F300 . #x1F5FF) |
| 1255 | (#x1F300 . #x1F320) | ||
| 1256 | (#x1F32D . #x1F335) | ||
| 1257 | (#x1F337 . #x1F37C) | ||
| 1258 | (#x1F37E . #x1F393) | ||
| 1259 | (#x1F3A0 . #x1F3CA) | ||
| 1260 | (#x1F3CF . #x1F3D3) | ||
| 1261 | (#x1F3E0 . #x1F3F0) | ||
| 1262 | (#x1F3F4 . #x1F3F4) | ||
| 1263 | (#x1F3F8 . #x1F3FA) | ||
| 1264 | (#x1F3FB . #x1F3FF) | ||
| 1265 | (#x1F440 . #x1F440) | ||
| 1266 | (#x1F442 . #x1F4FC) | ||
| 1267 | (#x1F4FF . #x1F53D) | ||
| 1268 | (#x1F54B . #x1F54E) | ||
| 1269 | (#x1F550 . #x1F567) | ||
| 1270 | (#x1F57A . #x1F57A) | ||
| 1271 | (#x1F595 . #x1F596) | ||
| 1272 | (#x1F5A4 . #x1F5A4) | ||
| 1273 | (#x1F5FB . #x1F5FF) | ||
| 1274 | (#x1F600 . #x1F64F) | 1259 | (#x1F600 . #x1F64F) |
| 1275 | (#x1F680 . #x1F6C5) | 1260 | (#x1F680 . #x1F6C5) |
| 1276 | (#x1F6CC . #x1F6CC) | 1261 | (#x1F6CC . #x1F6CC) |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 3d63ca8bd5f..175189c1b48 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -2052,22 +2052,22 @@ Also respects the obsolete wrapper hook `completion-in-region-functions'. | |||
| 2052 | minor-mode-map-alist)) | 2052 | minor-mode-map-alist)) |
| 2053 | 2053 | ||
| 2054 | (defvar completion-at-point-functions '(tags-completion-at-point-function) | 2054 | (defvar completion-at-point-functions '(tags-completion-at-point-function) |
| 2055 | "Special hook to find the completion table for the thing at point. | 2055 | "Special hook to find the completion table for the entity at point. |
| 2056 | Each function on this hook is called in turn without any argument and should | 2056 | Each function on this hook is called in turn without any argument and |
| 2057 | return either nil to mean that it is not applicable at point, | 2057 | should return either nil, meaning it is not applicable at point, |
| 2058 | or a function of no argument to perform completion (discouraged), | 2058 | or a function of no arguments to perform completion (discouraged), |
| 2059 | or a list of the form (START END COLLECTION . PROPS) where | 2059 | or a list of the form (START END COLLECTION . PROPS), where: |
| 2060 | START and END delimit the entity to complete and should include point, | 2060 | START and END delimit the entity to complete and should include point, |
| 2061 | COLLECTION is the completion table to use to complete it, and | 2061 | COLLECTION is the completion table to use to complete the entity, and |
| 2062 | PROPS is a property list for additional information. | 2062 | PROPS is a property list for additional information. |
| 2063 | Currently supported properties are all the properties that can appear in | 2063 | Currently supported properties are all the properties that can appear in |
| 2064 | `completion-extra-properties' plus: | 2064 | `completion-extra-properties' plus: |
| 2065 | `:predicate' a predicate that completion candidates need to satisfy. | 2065 | `:predicate' a predicate that completion candidates need to satisfy. |
| 2066 | `:exclusive' If `no', means that if the completion table fails to | 2066 | `:exclusive' value of `no' means that if the completion table fails to |
| 2067 | match the text at point, then instead of reporting a completion | 2067 | match the text at point, then instead of reporting a completion |
| 2068 | failure, the completion should try the next completion function. | 2068 | failure, the completion should try the next completion function. |
| 2069 | As is the case with most hooks, the functions are responsible to preserve | 2069 | As is the case with most hooks, the functions are responsible for |
| 2070 | things like point and current buffer.") | 2070 | preserving things like point and current buffer.") |
| 2071 | 2071 | ||
| 2072 | (defvar completion--capf-misbehave-funs nil | 2072 | (defvar completion--capf-misbehave-funs nil |
| 2073 | "List of functions found on `completion-at-point-functions' that misbehave. | 2073 | "List of functions found on `completion-at-point-functions' that misbehave. |
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 7a9e6c7422d..5d362e42c30 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el | |||
| @@ -1744,7 +1744,10 @@ This adds rules for comments and assignments." | |||
| 1744 | (defun sh--cmd-completion-table (string pred action) | 1744 | (defun sh--cmd-completion-table (string pred action) |
| 1745 | (let ((cmds | 1745 | (let ((cmds |
| 1746 | (append (when (fboundp 'imenu--make-index-alist) | 1746 | (append (when (fboundp 'imenu--make-index-alist) |
| 1747 | (mapcar #'car (imenu--make-index-alist))) | 1747 | (mapcar #'car |
| 1748 | (condition-case nil | ||
| 1749 | (imenu--make-index-alist) | ||
| 1750 | (imenu-unavailable nil)))) | ||
| 1748 | (mapcar (lambda (v) (concat v "=")) | 1751 | (mapcar (lambda (v) (concat v "=")) |
| 1749 | (sh--vars-before-point)) | 1752 | (sh--vars-before-point)) |
| 1750 | (locate-file-completion-table | 1753 | (locate-file-completion-table |
diff --git a/lisp/term.el b/lisp/term.el index 1adeae24098..5177ab4b921 100644 --- a/lisp/term.el +++ b/lisp/term.el | |||
| @@ -1109,12 +1109,16 @@ Entry to this mode runs the hooks on `term-mode-hook'." | |||
| 1109 | (term-update-mode-line)) | 1109 | (term-update-mode-line)) |
| 1110 | 1110 | ||
| 1111 | (defun term-reset-size (height width) | 1111 | (defun term-reset-size (height width) |
| 1112 | (setq term-height height) | 1112 | (when (or (/= height term-height) |
| 1113 | (setq term-width width) | 1113 | (/= width term-width)) |
| 1114 | (setq term-start-line-column nil) | 1114 | (let ((point (point))) |
| 1115 | (setq term-current-row nil) | 1115 | (setq term-height height) |
| 1116 | (setq term-current-column nil) | 1116 | (setq term-width width) |
| 1117 | (term-set-scroll-region 0 height)) | 1117 | (setq term-start-line-column nil) |
| 1118 | (setq term-current-row nil) | ||
| 1119 | (setq term-current-column nil) | ||
| 1120 | (term-set-scroll-region 0 height) | ||
| 1121 | (goto-char point)))) | ||
| 1118 | 1122 | ||
| 1119 | ;; Recursive routine used to check if any string in term-kill-echo-list | 1123 | ;; Recursive routine used to check if any string in term-kill-echo-list |
| 1120 | ;; matches part of the buffer before point. | 1124 | ;; matches part of the buffer before point. |
diff --git a/src/filelock.c b/src/filelock.c index d4dfc1dd007..a4b742abb5d 100644 --- a/src/filelock.c +++ b/src/filelock.c | |||
| @@ -565,10 +565,10 @@ current_lock_owner (lock_info_type *owner, char *lfname) | |||
| 565 | break; | 565 | break; |
| 566 | 566 | ||
| 567 | case '\357': | 567 | case '\357': |
| 568 | /* Treat "\357\200\242" (U+F022 in UTF-8) as if it were ":". | 568 | /* Treat "\357\200\242" (U+F022 in UTF-8) as if it were ":" (Bug#24656). |
| 569 | This works around a bug in Samba, which can mistakenly | 569 | This works around a bug in the Linux CIFS kernel client, which can |
| 570 | transliterate ':' to U+F022 in symlink contents (Bug#24656). | 570 | mistakenly transliterate ':' to U+F022 in symlink contents. |
| 571 | See <https://bugzilla.redhat.com/show_bug.cgi?id=1271407#c8>. */ | 571 | See <https://bugzilla.redhat.com/show_bug.cgi?id=1384153>. */ |
| 572 | if (! (boot[0] == '\200' && boot[1] == '\242')) | 572 | if (! (boot[0] == '\200' && boot[1] == '\242')) |
| 573 | return -1; | 573 | return -1; |
| 574 | boot += 2; | 574 | boot += 2; |
diff --git a/src/lread.c b/src/lread.c index 10eec3b1be0..58d518ce40b 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -2917,7 +2917,18 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list) | |||
| 2917 | if (c == '=') | 2917 | if (c == '=') |
| 2918 | { | 2918 | { |
| 2919 | /* Make a placeholder for #n# to use temporarily. */ | 2919 | /* Make a placeholder for #n# to use temporarily. */ |
| 2920 | AUTO_CONS (placeholder, Qnil, Qnil); | 2920 | /* Note: We used to use AUTO_CONS to allocate |
| 2921 | placeholder, but that is a bad idea, since it | ||
| 2922 | will place a stack-allocated cons cell into | ||
| 2923 | the list in read_objects, which is a | ||
| 2924 | staticpro'd global variable, and thus each of | ||
| 2925 | its elements is marked during each GC. A | ||
| 2926 | stack-allocated object will become garbled | ||
| 2927 | when its stack slot goes out of scope, and | ||
| 2928 | some other function reuses it for entirely | ||
| 2929 | different purposes, which will cause crashes | ||
| 2930 | in GC. */ | ||
| 2931 | Lisp_Object placeholder = Fcons (Qnil, Qnil); | ||
| 2921 | Lisp_Object cell = Fcons (make_number (n), placeholder); | 2932 | Lisp_Object cell = Fcons (make_number (n), placeholder); |
| 2922 | read_objects = Fcons (cell, read_objects); | 2933 | read_objects = Fcons (cell, read_objects); |
| 2923 | 2934 | ||