1. 21 Jul, 2019 21 commits
    • Alan Mackenzie's avatar
      Implement C++ Mode attributes. This fixes bug #36650. · 5ccaee4b
      Alan Mackenzie authored
      * lisp/progmodes/cc-engine.el (c-looking-at-c++-attribute)
      (c-enclosing-c++-attribute, c-slow-enclosing-c++-attribute): New macro and
      functions.
      (c-crosses-statement-barrier-p): Add [ into skip-chars for C++ Mode, and use
      it to detect and skip over an attribute whilst scanning forward.
      (c-sws-lit-type): Use the new value 'attribute.
      (c-invalidate-sws-region-before): Put a save-match-data around this function.
      Detect and handle an enclosing attribute at either END or BEG.
      (c-invalidate-sws-region-after): Handle C++ attributes.
      (c-forward-sws, c-backward-sws): Handle C++ attributes.
      
      * lisp/progmodes/cc-mode.el (c-fl-decl-end): Detect and handle point being
      inside a C++ attribute.
      5ccaee4b
    • Paul Eggert's avatar
      Fix lifetime error in previous patch · 5d4dd552
      Paul Eggert authored
      Problem reported by Pip Cet in:
      https://lists.gnu.org/r/emacs-devel/2019-07/msg00520.html
      * src/alloc.c (inhibit_garbage_collection): Use new function.
      (allow_garbage_collection): Accept intmax_t, not pointer.
      * src/eval.c (default_toplevel_binding, do_one_unbind)
      (backtrace_eval_unrewind, Fbacktrace__locals, mark_specpdl):
      Support SPECPDL_UNWIND_INTMAX.
      (record_unwind_protect_excursion): New function.
      * src/lisp.h (enum specbind_tag): New constant SPECPDL_UNWIND_INTMAX.
      (union specbinding): New member unwind_intmax.
      5d4dd552
    • Paul Eggert's avatar
      Speed up maybe_gc when GC is inhibited · d02c2f7f
      Paul Eggert authored
      * src/alloc.c (allow_garbage_collection)
      (inhibit_garbage_collection): Temporarily bump
      consing_until_gc, to improve performance of maybe_gc while
      garbage collection is inhibited.  Suggested by Stefan Monnier in:
      https://lists.gnu.org/r/emacs-devel/2019-07/msg00511.html
      d02c2f7f
    • Paul Eggert's avatar
      Avoid integer overflow in hash table size · c72e6328
      Paul Eggert authored
      * src/fns.c (INDEX_SIZE_BOUND): Use a tighter bound.
      (maybe_resize_hash_table): Avoid integer overflow when
      checking for hash table size overflow.  Fix confusion
      between INDEX_SIZE_BOUND (which is for the index vector)
      and hash table size.  Fix typo in debugging message
      when ENABLE_CHECKING.
      c72e6328
    • Paul Eggert's avatar
      Improve doc for hash tables · cf285946
      Paul Eggert authored
      * doc/lispref/hash.texi (Creating Hash, Defining Hash):
      * src/fns.c (Fsxhash_eq, Fsxhash_eql, Fsxhash_equal):
      Say that hashes are fixnums.
      (Fmake_hash_table): Say that that an integer rehash-size
      should be a fixnum.
      * doc/lispref/hash.texi (Defining Hash): Say that hash and
      comparison functions should be consistent and pure, and should
      return quickly.
      cf285946
    • Paul Eggert's avatar
      pure_alloc returns cleared memory · 4a1507b8
      Paul Eggert authored
      * src/alloc.c (pure_alloc): Clear any heap-allocated storage.
      This is simpler than auditing all the callers to make sure
      they don’t assume pure memory is cleared memory, and the
      performance implication is nonexistent except when Emacs
      is misconfigured.  Also, add an assertion to catch
      caller misuse when pure space is exhausted.
      4a1507b8
    • Lars Ingebrigtsen's avatar
      Make the unflag-p parameter in dired-mark-unmarked-files work · 51f5c194
      Lars Ingebrigtsen authored
      * lisp/dired-x.el (dired-mark-unmarked-files): Make the unflag-p
      parameter work (bug#27465).
      51f5c194
    • Lars Ingebrigtsen's avatar
      Don't override SSH_AUTH_SOCK in the example emacs.service file · ca088159
      Lars Ingebrigtsen authored
      * etc/emacs.service (ExecStop): Don't override SSH_AUTH_SOCK by
      default, because it varies by distribution where the socket is
      (bug#27620).
      ca088159
    • Lars Ingebrigtsen's avatar
      Fill footnotes better on `M-q' · 76d0ca98
      Lars Ingebrigtsen authored
      * lisp/mail/footnote.el (footnote--fill-paragraph): New function
      (bug#27775).
      (footnote-mode): Use it.
      76d0ca98
    • Ken Brown's avatar
      Fix expand-file-name for names starting with '~' · 8b13ec1d
      Ken Brown authored
      * src/fileio.c: (file_name_absolute_no_tilde_p):
      New static function.
      (Fexpand_file_name): If the current buffer's default-directory
      starts with "~user" where "user" is not a valid user name, don't
      give the '~' a special meaning.  Just treat the value of
      default-directory as a relative name.  (Bug#36502)
      * test/src/fileio-tests.el
      (fileio-tests--relative-default-directory): Add a test.
      8b13ec1d
    • Gemini Lasswell's avatar
      Fix inline-quote Edebug spec · 0c48c0d0
      Gemini Lasswell authored
      * lisp/emacs-lisp/inline.el (inline-quote): Fix the edebug spec
      (bug#31051).
      0c48c0d0
    • Paul Eggert's avatar
      Tweak recent hash-table fix · 49e80e76
      Paul Eggert authored
      * src/fns.c (maybe_resize_hash_table): Completely initialize the
      new ‘next’ vector before allocating more vectors, as this
      preserves locality a bit better and it’s safer not to leave an
      uninitialized Lisp object around.  Use next_size instead of
      new_size to compute new index size.
      49e80e76
    • Paul Eggert's avatar
      Fix crash if user test munges hash table · 515afc9c
      Paul Eggert authored
      * src/fns.c (restore_mutability)
      (hash_table_user_defined_call): New functions.
      (cmpfn_user_defined, hashfn_user_defined): Use them.
      (make_hash_table, copy_hash_table):
      Mark new hash table as mutable.
      (check_mutable_hash_table): New function.
      (Fclrhash, Fputhash, Fremhash): Use it instead of CHECK_IMPURE.
      * src/lisp.h (struct hash_table_test): User-defined functions
      now take pointers to struct Lisp_Hash_Table, not to struct
      hash_table_test.  All uses changed.
      (struct Lisp_Hash_Table): New member ‘mutable’.
      * src/pdumper.c (dump_hash_table): Copy it.
      * test/src/fns-tests.el (test-hash-function-that-mutates-hash-table):
      New test, which tests for the bug.
      515afc9c
    • Paul Eggert's avatar
      Simplify hashfn/cmpfn calling convention · b6f194a0
      Paul Eggert authored
      * src/fns.c (cmpfn_eql, cmpfn_equal, cmpfn_user_defined)
      (hashfn_eq, hashfn_equal, hashfn_eql, hashfn_user_defined):
      * src/profiler.c (cmpfn_profiler, hashfn_profiler):
      Use new calling convention where the return value is a fixnum
      instead of EMACS_UINT.  While we’re at it, put the hash table
      at the end, since that’s a bit simpler and generates better
      code (at least on the x86-64).  All callers changed.
      * src/fns.c (hash_lookup): Store fixnum rather than EMACS_UINT.
      All callers changed.
      (hash_put): Take a fixnum rather than an EMACS_UINT.
      All callers changed.  Remove unnecessary eassert (XUFIXNUM does it).
      * src/lisp.h (struct hash_table_test):
      Adjust signatures of cmpfn and hashfn.
      b6f194a0
    • Paul Eggert's avatar
      Inhibit GC after inhibit_garbage_collection · 5018b663
      Paul Eggert authored
      Without this patch, there are unlikely ways that garbage
      collection could occur (sometimes causing undefined behavior)
      even when inhibit_garbage_collection is in effect.
      * src/alloc.c (garbage_collection_inhibited): New var.
      (pure_alloc): Increment it if pure space is exhausted, so that
      garbage_collect_1 no longer needs to inspect
      pure_bytes_used_before_overflow.
      (allow_garbage_collection): New function.
      (inhibit_garbage_collection): Increment the new variable rather
      than specbinding a user variable.
      (garbage_collect_1): Do not garbage collect if the new variable
      is set, rather than if pure_bytes_used_before_overflow is set.
      5018b663
    • Paul Eggert's avatar
      Simplify maybe_gc implementation · 26de2d42
      Paul Eggert authored
      * src/alloc.c (consing_until_gc): New variable, replacing the
      combination of consing_since_gc and gc_relative_threshold.
      All uses changed.
      (byte_ct): Move decl here from lisp.h.
      (memory_full_cons_threshold): New an enum constant.
      (free_cons): Check for integer overflow in
      statistics calculation.
      * src/lisp.h (object_ct): Move decl here from alloc.c.
      (OBJECT_CT_MAX): New macro.
      (maybe_gc): Simplify accordingly.
      26de2d42
    • Paul Eggert's avatar
      Rename ‘pure’ to ‘purecopy’ · df5024db
      Paul Eggert authored
      * src/lisp.h (struct Lisp_Hash_Table): Rename ‘pure’ member to
      ‘purecopy’, as the old name was quite confusing (it did not
      mean the hash table was pure).  All uses changed.
      df5024db
    • Paul Eggert's avatar
      Fix hash table overallocation etc. · b0908a0f
      Paul Eggert authored
      * src/fns.c (set_hash_key_and_value, set_hash_next)
      (set_hash_hash, set_hash_index): Remove.  All uses removed.
      (maybe_resize_hash_table): Don’t update h->next until it’s
      known that all the allocations succeeded, to avoid trashing
      the hash table if memory is exhausted.  Don’t overallocate the
      other vectors.  Don’t output growth message if the hash table
      didn’t actually grow due to allocation failure.  Assume C99
      decls after statements.
      b0908a0f
    • Noam Postavsky's avatar
      Merge from emacs-26 · 6490269b
      Noam Postavsky authored
      150bdfe4 Handle completely undecoded input in term (Bug#29918)
      021f32cc * doc/misc/forms.texi (Control File Format): Fix a doc error.
      76538d09 Fix typo in package-alist docstring
      b2fde4b5 * doc/lispref/text.texi (Mode-Specific Indent): Fix a typo...
      7e627785 ; Another minor change in 'bidi-display-reordering's doc s...
      4455ddbe Improve doc string of 'bidi-display-reordering'
      34ee26dd Add warning to bidi-display-reordering doc string
      
      # Conflicts:
      #	lisp/term.el
      #	test/lisp/term-tests.el
      6490269b
    • Noam Postavsky's avatar
      Handle completely undecoded input in term (Bug#29918) · 150bdfe4
      Noam Postavsky authored
      * lisp/term.el (term-emulate-terminal): Avoid errors if the whole
      decoded string is eight-bit characters.  Don't attempt to save the
      string for next iteration in that case.
      * test/lisp/term-tests.el (term-decode-partial)
      (term-undecodable-input): New tests.
      150bdfe4
    • Basil L. Contovounesios's avatar
      Use lexical-binding in compface.el · f02b9e9a
      Basil L. Contovounesios authored
      * lisp/image/compface.el: Use lexical-binding.  Extend Keywords
      header.
      (uncompface): Call call-process-region directly.
      f02b9e9a
  2. 20 Jul, 2019 13 commits
  3. 19 Jul, 2019 6 commits