emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 1afd313: Merge from origin/emacs-26


From: Glenn Morris
Subject: [Emacs-diffs] master 1afd313: Merge from origin/emacs-26
Date: Sun, 26 Aug 2018 18:11:02 -0400 (EDT)

branch: master
commit 1afd313334c93cb5b0a7a378bd635a54dc1d6a9e
Merge: 18d52b9 54fb383
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    Merge from origin/emacs-26
    
    54fb383 (origin/emacs-26) Fix detection of freed emacs_values (Bug#32...
    769d0cd ; Fix out-of-tree build for mod-test.so
    9a1329e Avoid crashes with very wide TTY frames on MS-Windows
    9a613d3 Prevent `modify-file-local-variable-prop-line' from adding ex...
    624e7dc Update GNOME bugtracker URLs
    51ef6d5 Clarify in the Emacs manual that ChangeLog files are not used
    6e08019 Recognize codepage 65001 as a valid encoding
    1a350d7 ; * etc/NEWS: Fix format of first lines of some entries.
    22d1f53 Avoid compilation warning in nt/addpm.c
    7bc9ce7 Fix duplicate custom group names in bibtex.el
    a9cf938 Fix outdated text in the Calc manual
    
    Conflicts:
        etc/NEWS
        etc/PROBLEMS
        src/emacs-module.c
        src/gtkutil.c
        src/image.c
        src/xterm.c
        test/Makefile.in
---
 doc/emacs/trouble.texi            | 10 +++----
 doc/misc/calc.texi                | 13 ++++-----
 etc/NEWS.26                       | 61 +++++++++++++++++++--------------------
 etc/PROBLEMS                      |  2 +-
 lisp/files-x.el                   |  4 ++-
 lisp/international/mule-conf.el   |  5 ++++
 lisp/textmodes/bibtex.el          |  2 +-
 nt/addpm.c                        |  7 +++--
 src/emacs-module.c                |  8 ++---
 src/w32console.c                  | 30 ++++++++++++++++---
 test/Makefile.in                  |  4 ++-
 test/data/emacs-module/mod-test.c | 19 ++++++++++++
 test/src/emacs-module-tests.el    |  3 ++
 13 files changed, 110 insertions(+), 58 deletions(-)

diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 37a7304..bb05378 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1162,11 +1162,11 @@ name that indicates whether it is the old version or 
your new changed
 one.
 
 @item
-Write the change log entries for your changes.  This is both to save us
+Write the commit log entries for your changes.  This is both to save us
 the extra work of writing them, and to help explain your changes so we
 can understand them.
 
-The purpose of the change log is to show people where to find what was
+The purpose of the commit log is to show people where to find what was
 changed.  So you need to be specific about what functions you changed;
 in large functions, it's often helpful to indicate where within the
 function the change was.
@@ -1177,9 +1177,9 @@ new function, all you need to say about it is that it is 
new.  If you
 feel that the purpose needs explaining, it probably does---but put the
 explanation in comments in the code.  It will be more useful there.
 
-Please look at the change log entries of recent commits to see what
-sorts of information to put in, and to learn the style that we use.  Note that,
-unlike some other projects, we do require change logs for
+Please look at the commit log entries of recent commits to see what
+sorts of information to put in, and to learn the style that we use.
+Note that, unlike some other projects, we do require commit logs for
 documentation, i.e., Texinfo files.
 @xref{Change Log},
 @ifset WWW_GNU_ORG
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 98ef6daa..02deee9 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -33275,19 +33275,18 @@ prefer them, or if you are calling these functions 
from regular Lisp.
 
 The functions described here are scattered throughout the various
 Calc component files.  Note that @file{calc.el} includes @code{autoload}s
-for only a few component files; when Calc wants to call an advanced
-function it calls @samp{(calc-extensions)} first; this function
-autoloads @file{calc-ext.el}, which in turn autoloads all the functions
-in the remaining component files.
+for only a few component files; to get autoloads of the more advanced
+function, one needs to load @file{calc-ext.el}, which in turn
+autoloads all the functions in the remaining component files.
 
 Because @code{defmath} itself uses the extensions, user-written code
 generally always executes with the extensions already loaded, so
 normally you can use any Calc function and be confident that it will
 be autoloaded for you when necessary.  If you are doing something
 special, check carefully to make sure each function you are using is
-from @file{calc.el} or its components, and call @samp{(calc-extensions)}
-before using any function based in @file{calc-ext.el} if you can't
-prove this file will already be loaded.
+from @file{calc.el} or its components, and use @address@hidden(require
+'calc-ext)}} before using any function based in @file{calc-ext.el} if
+you can't prove this file will already be loaded.
 
 @menu
 * Data Type Formats::
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index a766e96..e94bda5 100644
--- a/etc/NEWS.26
+++ b/etc/NEWS.26
@@ -19,7 +19,7 @@ with a prefix argument or by typing C-u C-h C-n.
 * Installation Changes in Emacs 26.2
 
 ---
-** Building Emacs with the '--with-xwidgets' option now requires WebKit2
+** Building Emacs with the '--with-xwidgets' option now requires WebKit2.
 To build Emacs with xwidgets support, you will need to install the
 webkit2gtk-4.0 package; version 2.12 or later is required.
 (This change was actually made in Emacs 26.1, but was not called out
@@ -132,17 +132,17 @@ now the default in developer builds.  As before, use
 ** When GCC warnings are enabled, '--enable-check-lisp-object-type' is
 now enabled by default when configuring.
 
-** The Emacs server now has socket-launching support.  This allows
-socket based activation, where an external process like systemd can
-invoke the Emacs server process upon a socket connection event and
-hand the socket over to Emacs.  Emacs uses this socket to service
-emacsclient commands.  This new functionality can be disabled with the
-configure option '--disable-libsystemd'.
+** The Emacs server now has socket-launching support.
+This allows socket based activation, where an external process like
+systemd can invoke the Emacs server process upon a socket connection
+event and hand the socket over to Emacs.  Emacs uses this socket to
+service emacsclient commands.  This new functionality can be disabled
+with the configure option '--disable-libsystemd'.
 
-** A systemd user unit file is provided.  Use it in the standard way:
-'systemctl --user enable emacs'.
-(If your Emacs is installed in a non-standard location, you may
-need to copy the emacs.service file to eg ~/.config/systemd/user/)
+** A systemd user unit file is provided.
+Use it in the standard way: 'systemctl --user enable emacs'.  (If your
+Emacs is installed in a non-standard location, you may need to copy
+the emacs.service file to eg ~/.config/systemd/user/)
 
 ** New configure option '--disable-build-details' attempts to build an
 Emacs that is more likely to be reproducible; that is, if you build
@@ -153,7 +153,6 @@ following variables nil: 'emacs-build-system', 
'emacs-build-time',
 'erc-emacs-build-time'.
 
 ** Emacs can now be built with support for Little CMS.
-
 If the lcms2 library is installed, Emacs will enable features built on
 top of that library.  The new configure option '--without-lcms2' can
 be used to build without lcms2 support even if it is installed.  Emacs
@@ -196,9 +195,9 @@ The effect is similar to that of "toolBar" resource on the 
tool bar.
 
 * Changes in Emacs 26.1
 
-** Option 'buffer-offer-save' can be set to new value, 'always'.  When
-set to 'always', the command 'save-some-buffers' will always offer
-this buffer for saving.
+** Option 'buffer-offer-save' can be set to new value, 'always'.
+When set to 'always', the command 'save-some-buffers' will always
+offer this buffer for saving.
 
 ** Security vulnerability related to Enriched Text mode is removed.
 
@@ -684,7 +683,7 @@ This can be customized via the 'info-menu' category in
 A new option 'ediff-show-ancestor' and a new toggle
 'ediff-toggle-show-ancestor'.
 
-** TeX: Add luatex and xetex as alternatives to pdftex
+** TeX: Add luatex and xetex as alternatives to pdftex.
 
 ** Electric-Buffer-menu
 
@@ -1088,7 +1087,6 @@ to a format suitable for reverse lookup zone files.
 ** Ispell
 
 *** Enchant is now supported as a spell-checker.
-
 Enchant is a meta-spell-checker that uses providers such as Hunspell
 to do the actual checking.  With it, users can use spell-checkers not
 directly supported by Emacs, such as Voikko, Hspell and AppleSpell,
@@ -1098,8 +1096,7 @@ configure different spelling-checkers for different 
languages.
 
 ** Flymake
 
-*** Flymake has been completely redesigned
-
+*** Flymake has been completely redesigned.
 Flymake now annotates arbitrary buffer regions, not just lines.  It
 supports arbitrary diagnostic types, not just errors and warnings (see
 variable 'flymake-diagnostic-types-alist').
@@ -1115,7 +1112,6 @@ backend", which has been updated to benefit from the new 
UI features.
 ** Term
 
 *** 'term-char-mode' now makes its buffer read-only.
-
 The buffer is made read-only to prevent changes from being made by
 anything other than the process filter; and movements of point away
 from the process mark are counter-acted so that the cursor is in the
@@ -1131,7 +1127,6 @@ the previous behavior.
 ** Xref
 
 *** When an *xref* buffer is needed, 'TAB' quits and jumps to an xref.
-
 A new command 'xref-quit-and-goto-xref', bound to 'TAB' in *xref*
 buffers, quits the window before jumping to the destination.  In many
 situations, the intended window configuration is restored, just as if
@@ -1227,11 +1222,11 @@ change FOO, respectively.  The exhaustive list of 
removed variables is:
 
 *** Many variables obsoleted in 22.1 referring to face symbols.
 
-** The variable 'text-quoting-style' is now a customizable option.  It
-controls whether to and how to translate ASCII quotes in messages and
-help output.  Its possible values and their semantics remain unchanged
-from Emacs 25.  In particular, when this variable's value is 'grave',
-all quotes in formats are output as-is.
+** The variable 'text-quoting-style' is now a customizable option.
+It controls whether to and how to translate ASCII quotes in messages
+and help output.  Its possible values and their semantics remain
+unchanged from Emacs 25.  In particular, when this variable's value is
+'grave', all quotes in formats are output as-is.
 
 ** Functions like 'check-declare-file' and 'check-declare-directory'
 now generate less chatter and more-compact diagnostics.  The auxiliary
@@ -1495,10 +1490,11 @@ to provide region boundaries (for rectangular regions 
more than one)
 to an interactively callable function as a single argument instead of
 two separate arguments 'region-beginning' and 'region-end'.
 
-** 'parse-partial-sexp' state has a new element.  Element 10 is
-non-nil when the last character scanned might be the first character
-of a two character construct, i.e., a comment delimiter or escaped
-character.  Its value is the syntax of that last character.
+** 'parse-partial-sexp' state has a new element.
+Element 10 is non-nil when the last character scanned might be the
+first character of a two character construct, i.e., a comment
+delimiter or escaped character.  Its value is the syntax of that last
+character.
 
 ** 'parse-partial-sexp's state, element 9, has now been confirmed as
 permanent and documented, and may be used by Lisp programs.  Its value
@@ -1762,8 +1758,9 @@ the ELisp manual.
 *** 'select-frame-by-name' now may return a frame on another display
 if it does not find a suitable one on the current display.
 
-** 'tcl-auto-fill-mode' is now declared obsolete.  Its functionality
-can be replicated simply by setting 'comment-auto-fill-only-comments'.
+** 'tcl-auto-fill-mode' is now declared obsolete.
+Its functionality can be replicated simply by setting
+'comment-auto-fill-only-comments'.
 
 ** New pcase pattern 'rx' to match against an rx-style regular expression.
 For details, see the doc string of 'rx--pcase-macroexpander'.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index fe59b52..a1fae22 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -1135,7 +1135,7 @@ is running.  If gnome-settings-daemon is not running, 
Emacs receives
 input through XIM without any problem.  Furthermore, this seems only
 to happen in *.UTF-8 locales; zh_CN.GB2312 and zh_CN.GBK locales, for
 example, work fine.  A bug report has been filed in the Gnome
-bugzilla: http://bugzilla.gnome.org/show_bug.cgi?id=357032
+bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=357032
 
 *** Gnome: GPaste clipboard manager causes erratic behavior of 'yank'
 
diff --git a/lisp/files-x.el b/lisp/files-x.el
index 2a52792..92532e8 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -377,7 +377,9 @@ from the -*- line ignoring the input argument VALUE."
           ((eq variable 'mode) (goto-char beg))
           ((null replaced-pos) (goto-char end))
           (replaced-pos (goto-char replaced-pos)))
-         (if (and (not (eq (char-before) ?\;))
+          (if (and (save-excursion
+                     (skip-chars-backward " \t")
+                     (not (eq (char-before) ?\;)))
                   (not (equal (point) (marker-position beg)))
                   ;; When existing `-*- -*-' is empty, beg > end.
                   (not (> (marker-position beg) (marker-position end))))
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 3affeec..b08150a 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -1304,6 +1304,11 @@ is treated as a character."
   :bom '(utf-8-with-signature . utf-8))
 
 (define-coding-system-alias 'mule-utf-8 'utf-8)
+;; See this page:
+;; https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers
+;; Starting with Windows 10, people are trying to set their systems to
+;; use UTF-8 , so we had better recognized this alias:
+(define-coding-system-alias 'cp65001 'utf-8)
 
 (define-coding-system 'utf-8-emacs
   "Support for all Emacs characters (including non-Unicode characters)."
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 50a30cf..6f6b062 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -457,7 +457,7 @@ INIT is either the initial content of the field or a 
function,
 which is called to determine the initial content of the field.
 ALTERNATIVE if non-nil is an integer that numbers sets of
 alternatives, starting from zero."
-  :group 'BibTeX
+  :group 'bibtex
   :version "26.1"                       ; add Conference
   :type 'bibtex-entry-alist)
 (put 'bibtex-BibTeX-entry-alist 'risky-local-variable t)
diff --git a/nt/addpm.c b/nt/addpm.c
index ec7d7ff..2132020 100644
--- a/nt/addpm.c
+++ b/nt/addpm.c
@@ -38,9 +38,12 @@ along with GNU Emacs.  If not, see 
<https://www.gnu.org/licenses/>.  */
 #include <stdio.h>
 #include <malloc.h>
 
-/* MinGW64 barfs if _WIN32_IE is defined to anything below 0x500.  */
+/* MinGW64 barfs if _WIN32_IE is defined to anything below 0x0500.  */
 #ifndef MINGW_W64
-#define _WIN32_IE 0x400
+# ifdef _WIN32_IE
+#  undef _WIN32_IE
+# endif
+#define _WIN32_IE 0x0400
 #endif
 /* Request C Object macros for COM interfaces.  */
 #define COBJMACROS 1
diff --git a/src/emacs-module.c b/src/emacs-module.c
index e7ba174..f2844c4 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -344,20 +344,20 @@ module_free_global_ref (emacs_env *env, emacs_value ref)
       Lisp_Object globals = global_env_private.values;
       Lisp_Object prev = Qnil;
       ptrdiff_t count = 0;
-      for (Lisp_Object tail = global_env_private.values; CONSP (tail);
+      for (Lisp_Object tail = globals; CONSP (tail);
            tail = XCDR (tail))
         {
-          emacs_value global = xmint_pointer (XCAR (globals));
+          emacs_value global = xmint_pointer (XCAR (tail));
           if (global == ref)
             {
               if (NILP (prev))
                 global_env_private.values = XCDR (globals);
               else
-                XSETCDR (prev, XCDR (globals));
+                XSETCDR (prev, XCDR (tail));
               return;
             }
           ++count;
-          prev = globals;
+          prev = tail;
         }
       module_abort ("Global value was not found in list of %"pD"d globals",
                     count);
diff --git a/src/w32console.c b/src/w32console.c
index 6c3cf06..9f9db68 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -140,23 +140,36 @@ w32con_clear_frame (struct frame *f)
 }
 
 
-static struct glyph glyph_base[256];
+static struct glyph glyph_base[80];
+static struct glyph *glyphs = glyph_base;
+static size_t glyphs_len = ARRAYELTS (glyph_base);
 static BOOL  ceol_initialized = FALSE;
 
 /* Clear from Cursor to end (what's "standout marker"?).  */
 static void
 w32con_clear_end_of_line (struct frame *f, int end)
 {
+  /* Time to reallocate our "empty row"?  With today's large screens,
+     it is not unthinkable to see TTY frames well in excess of
+     80-character width.  */
+  if (end - cursor_coords.X > glyphs_len)
+    {
+      if (glyphs == glyph_base)
+       glyphs = NULL;
+      glyphs = xrealloc (glyphs, FRAME_COLS (f) * sizeof (struct glyph));
+      glyphs_len = FRAME_COLS (f);
+      ceol_initialized = FALSE;
+    }
   if (!ceol_initialized)
     {
       int i;
-      for (i = 0; i < 256; i++)
+      for (i = 0; i < glyphs_len; i++)
         {
-         memcpy (&glyph_base[i], &space_glyph, sizeof (struct glyph));
+         memcpy (&glyphs[i], &space_glyph, sizeof (struct glyph));
         }
       ceol_initialized = TRUE;
     }
-  w32con_write_glyphs (f, glyph_base, end - cursor_coords.X);  /* fencepost ?  
*/
+  w32con_write_glyphs (f, glyphs, end - cursor_coords.X);
 }
 
 /* Insert n lines at vpos. if n is negative delete -n lines.  */
@@ -772,6 +785,15 @@ initialize_w32_display (struct terminal *term, int *width, 
int *height)
       *width = 1 + info.srWindow.Right - info.srWindow.Left;
     }
 
+  /* Force reinitialization of the "empty row" buffer, in case they
+     dumped from a running session.  */
+  if (glyphs != glyph_base)
+    {
+      glyphs = NULL;
+      glyphs_len = 0;
+      ceol_initialized = FALSE;
+    }
+
   if (os_subtype == OS_NT)
     w32_console_unicode_input = 1;
   else
diff --git a/test/Makefile.in b/test/Makefile.in
index 0bc893b..a1f4388 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -246,12 +246,14 @@ else
 FPIC_CFLAGS = -fPIC
 endif
 
+# Note: emacs-module.h is generated from emacs-module.h.in, hence we
+# look in ../src, not $(srcdir)/../src.
 MODULE_CFLAGS = -I../src $(FPIC_CFLAGS) $(PROFILING_CFLAGS) \
   $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAGS)
 
 test_module = $(test_module_dir)/mod-test${SO}
 src/emacs-module-tests.log: $(test_module)
-$(test_module): $(test_module:${SO}=.c) $(srcdir)/../src/emacs-module.h
+$(test_module): $(test_module:${SO}=.c) ../src/emacs-module.h
        $(AM_V_at)${MKDIR_P} $(dir $@)
        $(AM_V_CCLD)$(CC) -shared $(CPPFLAGS) $(MODULE_CFLAGS) $(LDFLAGS) \
          -o $@ $<
diff --git a/test/data/emacs-module/mod-test.c 
b/test/data/emacs-module/mod-test.c
index db05e90..a9b459b 100644
--- a/test/data/emacs-module/mod-test.c
+++ b/test/data/emacs-module/mod-test.c
@@ -156,6 +156,24 @@ Fmod_test_globref_make (emacs_env *env, ptrdiff_t nargs, 
emacs_value args[],
   return env->make_global_ref (env, lisp_str);
 }
 
+/* Create a few global references from arguments and free them.  */
+static emacs_value
+Fmod_test_globref_free (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
+                       void *data)
+{
+  emacs_value refs[10];
+  for (int i = 0; i < 10; i++)
+    {
+      refs[i] = env->make_global_ref (env, args[i % nargs]);
+    }
+  for (int i = 0; i < 10; i++)
+    {
+      env->free_global_ref (env, refs[i]);
+    }
+  return env->intern (env, "ok");
+}
+
+
 
 /* Return a copy of the argument string where every 'a' is replaced
    with 'b'.  */
@@ -339,6 +357,7 @@ emacs_module_init (struct emacs_runtime *ert)
   DEFUN ("mod-test-non-local-exit-funcall", Fmod_test_non_local_exit_funcall,
         1, 1, NULL, NULL);
   DEFUN ("mod-test-globref-make", Fmod_test_globref_make, 0, 0, NULL, NULL);
+  DEFUN ("mod-test-globref-free", Fmod_test_globref_free, 4, 4, NULL, NULL);
   DEFUN ("mod-test-string-a-to-b", Fmod_test_string_a_to_b, 1, 1, NULL, NULL);
   DEFUN ("mod-test-userptr-make", Fmod_test_userptr_make, 1, 1, NULL, NULL);
   DEFUN ("mod-test-userptr-get", Fmod_test_userptr_get, 1, 1, NULL, NULL);
diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el
index 90cd37a..c67190b 100644
--- a/test/src/emacs-module-tests.el
+++ b/test/src/emacs-module-tests.el
@@ -148,6 +148,9 @@ changes."
     (garbage-collect) ;; XXX: not enough to really test but it's something..
     (should (string= ref-str mod-str))))
 
+(ert-deftest mod-test-globref-free-test ()
+  (should (eq (mod-test-globref-free 1 'a "test" 'b) 'ok)))
+
 (ert-deftest mod-test-string-a-to-b-test ()
   (should (string= (mod-test-string-a-to-b "aaa") "bbb")))
 



reply via email to

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