emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 6129cd0 3/8: Merge from origin/emacs-25


From: Paul Eggert
Subject: [Emacs-diffs] master 6129cd0 3/8: Merge from origin/emacs-25
Date: Sun, 23 Oct 2016 09:58:39 +0000 (UTC)

branch: master
commit 6129cd03e20a0aaee46ceb742a9ed1ae2904eab3
Merge: 16d126d b73f466
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    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.
---
 INSTALL                          |    2 +-
 admin/notes/unicode              |    4 ++++
 lisp/cus-start.el                |    4 +++-
 lisp/international/characters.el |   29 +++++++----------------------
 lisp/minibuffer.el               |   18 +++++++++---------
 lisp/progmodes/sh-script.el      |    5 ++++-
 lisp/term.el                     |   16 ++++++++++------
 src/filelock.c                   |    8 ++++----
 src/lread.c                      |   13 ++++++++++++-
 9 files changed, 54 insertions(+), 45 deletions(-)

diff --git a/INSTALL b/INSTALL
index 27af6d9..bc859b2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -34,7 +34,7 @@ some of the steps manually.  The more detailed description in 
the other
 sections of this guide will help you do that, so please refer to those
 sections if you need to.
 
-  1. Unpacking the Emacs 24 release requires about 200 MB of free
+  1. Unpacking the Emacs 25 release requires about 200 MB of free
   disk space.  Building Emacs uses about another 200 MB of space.
   The final installed Emacs uses about 150 MB of disk space.
   This includes the space-saving that comes from automatically
diff --git a/admin/notes/unicode b/admin/notes/unicode
index c8a956d..7f0ce10 100644
--- a/admin/notes/unicode
+++ b/admin/notes/unicode
@@ -37,6 +37,10 @@ and char-width-table.  The additional scripts should cause 
automatic
 updates in charscript.el, but it is a good idea to look at the results
 and see if any changes in admin/unidata/blocks.awk are required.
 
+The setting of char-width-table around line 1200 of characters.el
+should be checked against the latest version of the Unicode file
+EastAsianWidth.txt, and any discrepancies fixed.
+
 Any new scripts added by UnicodeData.txt will also need updates to
 script-representative-chars defined in fontset.el, and also the list
 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 127a574..b7cc626 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
                                        (directory :format "%v")))
                         nil
                         :standard
-                        (mapcar 'directory-file-name
+                        (mapcar (lambda (f)
+                                  (if f (directory-file-name f)
+                                    "."))
                                 (append (parse-colon-path (getenv "PATH"))
                                         (list exec-directory))))
             (exec-suffixes execute (repeat string))
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 1757d2b..2a7bc32 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -1239,38 +1239,23 @@ with L, LRE, or LRO Unicode bidi character type.")
            (#x2B50 . #x2B50)
            (#x2B55 . #x2B55)
           (#x2E80 . #x303E)
-          (#x3040 . #xA4CF)
+          (#x3040 . #x4DBF)
+          (#x4E00 . #xA4CF)
+          (#xA960 . #xA97F)
           (#xAC00 . #xD7A3)
           (#xF900 . #xFAFF)
+          (#xFE10 . #xFE19)
           (#xFE30 . #xFE6F)
           (#xFF01 . #xFF60)
           (#xFFE0 . #xFFE6)
            (#x16FE0 . #x16FE0)
            (#x17000 . #x187EC)
            (#x18800 . #x18AF2)
+           (#x1B000 . #x1B001)
            (#x1F18E . #x1F18E)
            (#x1F191 . #x1F19A)
-           (#x1F200 . #x1F202)
-           (#x1F210 . #x1F23B)
-           (#x1F300 . #x1F320)
-           (#x1F32D . #x1F335)
-           (#x1F337 . #x1F37C)
-           (#x1F37E . #x1F393)
-           (#x1F3A0 . #x1F3CA)
-           (#x1F3CF . #x1F3D3)
-           (#x1F3E0 . #x1F3F0)
-           (#x1F3F4 . #x1F3F4)
-           (#x1F3F8 . #x1F3FA)
-           (#x1F3FB . #x1F3FF)
-           (#x1F440 . #x1F440)
-           (#x1F442 . #x1F4FC)
-           (#x1F4FF . #x1F53D)
-           (#x1F54B . #x1F54E)
-           (#x1F550 . #x1F567)
-           (#x1F57A . #x1F57A)
-           (#x1F595 . #x1F596)
-           (#x1F5A4 . #x1F5A4)
-           (#x1F5FB . #x1F5FF)
+           (#x1F200 . #x1F2FF)
+           (#x1F300 . #x1F5FF)
            (#x1F600 . #x1F64F)
            (#x1F680 . #x1F6C5)
            (#x1F6CC . #x1F6CC)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 3d63ca8..175189c 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -2052,22 +2052,22 @@ Also respects the obsolete wrapper hook 
`completion-in-region-functions'.
             minor-mode-map-alist))
 
 (defvar completion-at-point-functions '(tags-completion-at-point-function)
-  "Special hook to find the completion table for the thing at point.
-Each function on this hook is called in turn without any argument and should
-return either nil to mean that it is not applicable at point,
-or a function of no argument to perform completion (discouraged),
-or a list of the form (START END COLLECTION . PROPS) where
+  "Special hook to find the completion table for the entity at point.
+Each function on this hook is called in turn without any argument and
+should return either nil, meaning it is not applicable at point,
+or a function of no arguments to perform completion (discouraged),
+or a list of the form (START END COLLECTION . PROPS), where:
  START and END delimit the entity to complete and should include point,
- COLLECTION is the completion table to use to complete it, and
+ COLLECTION is the completion table to use to complete the entity, and
  PROPS is a property list for additional information.
 Currently supported properties are all the properties that can appear in
 `completion-extra-properties' plus:
  `:predicate'  a predicate that completion candidates need to satisfy.
- `:exclusive'  If `no', means that if the completion table fails to
+ `:exclusive'  value of `no' means that if the completion table fails to
    match the text at point, then instead of reporting a completion
    failure, the completion should try the next completion function.
-As is the case with most hooks, the functions are responsible to preserve
-things like point and current buffer.")
+As is the case with most hooks, the functions are responsible for
+preserving things like point and current buffer.")
 
 (defvar completion--capf-misbehave-funs nil
   "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 7a9e6c7..5d362e4 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1744,7 +1744,10 @@ This adds rules for comments and assignments."
 (defun sh--cmd-completion-table (string pred action)
   (let ((cmds
          (append (when (fboundp 'imenu--make-index-alist)
-                   (mapcar #'car (imenu--make-index-alist)))
+                   (mapcar #'car
+                           (condition-case nil
+                               (imenu--make-index-alist)
+                             (imenu-unavailable nil))))
                  (mapcar (lambda (v) (concat v "="))
                          (sh--vars-before-point))
                  (locate-file-completion-table
diff --git a/lisp/term.el b/lisp/term.el
index 1adeae2..5177ab4 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1109,12 +1109,16 @@ Entry to this mode runs the hooks on `term-mode-hook'."
   (term-update-mode-line))
 
 (defun term-reset-size (height width)
-  (setq term-height height)
-  (setq term-width width)
-  (setq term-start-line-column nil)
-  (setq term-current-row nil)
-  (setq term-current-column nil)
-  (term-set-scroll-region 0 height))
+  (when (or (/= height term-height)
+            (/= width term-width))
+    (let ((point (point)))
+      (setq term-height height)
+      (setq term-width width)
+      (setq term-start-line-column nil)
+      (setq term-current-row nil)
+      (setq term-current-column nil)
+      (term-set-scroll-region 0 height)
+      (goto-char point))))
 
 ;; Recursive routine used to check if any string in term-kill-echo-list
 ;; matches part of the buffer before point.
diff --git a/src/filelock.c b/src/filelock.c
index d4dfc1d..a4b742a 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -565,10 +565,10 @@ current_lock_owner (lock_info_type *owner, char *lfname)
       break;
 
     case '\357':
-      /* Treat "\357\200\242" (U+F022 in UTF-8) as if it were ":".
-        This works around a bug in Samba, which can mistakenly
-        transliterate ':' to U+F022 in symlink contents (Bug#24656).
-        See <https://bugzilla.redhat.com/show_bug.cgi?id=1271407#c8>.  */
+      /* Treat "\357\200\242" (U+F022 in UTF-8) as if it were ":" (Bug#24656).
+        This works around a bug in the Linux CIFS kernel client, which can
+        mistakenly transliterate ':' to U+F022 in symlink contents.
+        See <https://bugzilla.redhat.com/show_bug.cgi?id=1384153>.  */
       if (! (boot[0] == '\200' && boot[1] == '\242'))
        return -1;
       boot += 2;
diff --git a/src/lread.c b/src/lread.c
index 10eec3b..58d518c 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2917,7 +2917,18 @@ read1 (Lisp_Object readcharfun, int *pch, bool 
first_in_list)
                  if (c == '=')
                    {
                      /* Make a placeholder for #n# to use temporarily.  */
-                     AUTO_CONS (placeholder, Qnil, Qnil);
+                     /* Note: We used to use AUTO_CONS to allocate
+                        placeholder, but that is a bad idea, since it
+                        will place a stack-allocated cons cell into
+                        the list in read_objects, which is a
+                        staticpro'd global variable, and thus each of
+                        its elements is marked during each GC.  A
+                        stack-allocated object will become garbled
+                        when its stack slot goes out of scope, and
+                        some other function reuses it for entirely
+                        different purposes, which will cause crashes
+                        in GC.  */
+                     Lisp_Object placeholder = Fcons (Qnil, Qnil);
                      Lisp_Object cell = Fcons (make_number (n), placeholder);
                      read_objects = Fcons (cell, read_objects);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]