1. 02 Aug, 2016 10 commits
    • Michal Nazarewicz's avatar
      Get rid of re_set_whitespace_regexp · da9c55dd
      Michal Nazarewicz authored
      * src/regex.h (re_set_whitespace_regexp): Delete.
      (re_compile_pattern): Add whitespace_regexp argument #ifdef emacs.
      * src/regex.c (re_set_whitespace_regexp, whitespace_regexp): Delete.
      (regex_compile): Add whitespace_regexp argument #ifdef emacs and wrap
      whitespace_regexp-related code in an #ifdef emacs so it’s compiled out
      unless building Emacs.
      (re_compile_pattern): Pass whitespace_regexp argument to regex_compile
      * src/search.c (compile_pattern_1): Don’t use re_set_whitespace_regexp,
      pass the regex as argument to re_compile_pattern instead.
    • Michal Nazarewicz's avatar
      Get rid of re_set_syntax · 04d96eca
      Michal Nazarewicz authored
      Instead of using a global variable for storing regex syntax, pass it
      to re_compile_pattern.  This is only enabled when compiling Emacs (i.e.
      ‘#ifdef emacs’).
      * src/regex.h (re_set_syntax): Declare only #ifndef emacs.
      (re_compile_pattern): Now takes syntax argument #ifdef emacs.
      * src/regex.c (re_syntax_options): Define only #ifndef emacs.
      (re_compile_pattern): Use the new syntax argument #ifdef emacs.
      * src/search.c (compile_pattern_1): Don’t use re_set_syntax and
      instead pass syntax to re_compile_pattern directly.
    • Michal Nazarewicz's avatar
      Remove dead opcodes in regex bytecode · 9a418e0f
      Michal Nazarewicz authored
      There is no way to specify before_dot and after_dot opcodes in a regex
      so code handling those ends up being dead.  Remove it.
      * src/regex.c (print_partial_compiled_pattern, regex_compile,
      analyze_first, re_match_2_internal): Remove handling and references to
      before_dot and after_dot opcodes.
    • Michal Nazarewicz's avatar
      Refactor regex character class parsing in [:name:] · 4538a5e3
      Michal Nazarewicz authored
      re_wctype function is used in three separate places and in all of
      those places almost exact code extracting the name from [:name:]
      surrounds it.  Furthermore, re_wctype requires a NUL-terminated
      string, so the name of the character class is copied to a temporary
      The code duplication and unnecessary memory copying can be avoided by
      pushing the responsibility of parsing the whole [:name:] sequence to
      the function.
      Furthermore, since now the function has access to the length of the
      character class name (since it’s doing the parsing), it can take
      advantage of that information in skipping some string comparisons and
      using a constant-length memcmp instead of strcmp which needs to take
      care of NUL bytes.
      * src/regex.c (re_wctype): Delete function.  Replace it with:
      (re_wctype_parse): New function which parses a whole [:name:] string
      and returns a RECC_* constant or -1 if the string is not of [:name:]
      (regex_compile): Use re_wctype_parse.
      * src/syntax.c (skip_chars): Use re_wctype_parse.
    • Michal Nazarewicz's avatar
      Split regex glibc test cases into separet tests · e7257061
      Michal Nazarewicz authored
      * test/src/regex-tests.el (regex-tests): Remove and split into multiple
      tests cases.
      (regex-tests-glbic-BOOST, regex-tests-glibc-PCRE,
      regex-tests-glibc-PTESTS, regex-tests-glibc-TESTS): New test cases split
      from ‘regex-tests’.
    • Michal Nazarewicz's avatar
      Don’t (require 'cl) · 7496844e
      Michal Nazarewicz authored
      * test/src/regex-test.el: Don’t (require 'cl).
      (regex-tests-PCRE): s/loop/cl-loop/
    • Michal Nazarewicz's avatar
      Fix reading of regex-resources in regex-tests · 82a487d5
      Michal Nazarewicz authored
      * test/src/regex-tests.el (regex-tests-generic-line): Referring to
      ‘buffer-file-name’ does not work when running the test from command
      line, i.e. via make, which results in (wrong-type-argument stringp nil)
      failures.  Replace it with hard-coded path.
      (regex-tests-BOOST, regex-tests-PCRE, regex-tests-PTESTS-whitelist,
      regex-tests-TESTS-whitelist): ‘regex-tests-generic-line’ now  includes
      the ‘regex-resources’ path component so the tests don’t need to specify
      it explicitly.
    • Dima Kogan's avatar
      Added driver for the regex tests · 91d53091
      Dima Kogan authored
      * test/src/regex-tests.el (regex-tests): Test executing glibc tests
      [mina86@mina86.com: merged test with existing file]
    • Dima Kogan's avatar
      New regex tests imported from glibc 2.21 · 6db72771
      Dima Kogan authored
      * test/src/regex-resources/BOOST.tests:
      * test/src/regex-resources/PCRE.tests:
      * test/src/regex-resources/PTESTS:
      * test/src/regex-resources/TESTS:
      New test data files
      [mina86@mina86.com: Moved files from test/src/regex/* to test/src/*.]
    • Paul Eggert's avatar
      Fix use-after-close in connect_network_socket · 53917616
      Paul Eggert authored
      * src/process.c (connect_network_socket):
      Reverse sense of previous fix.  Problem reported by Ken Brown in:
  2. 01 Aug, 2016 2 commits
  3. 31 Jul, 2016 1 commit
    • Stefan Merten's avatar
      * lisp/textmodes/rst.el: Major refactoring, minor changes, minor fixes · cafb4a39
      Stefan Merten authored
      (rst-Ado, rst-Hdr, rst-Ttl, rst-Stn): Introduce classes
      representing reStructuredText section header concepts.
      (rst-mode-map, rst-new-preferred-hdr)
      (rst-update-section, rst-classify-adornment)
      (rst-ttl-at-point, rst-all-ttls-cache)
      (rst-hdr-hierarchy-cache, rst-reset-section-caches)
      (rst-all-ttls, rst-infer-hdr-hierarchy, rst-hdr-hierarchy)
      (rst-all-ttls-with-level, rst-get-previous-hdr)
      (rst-adornment-complete-p, rst-next-hdr, rst-adjust)
      (rst-adjust-section, rst-promote-region)
      (rst-display-hdr-hierarchy, rst-straighten-sections)
      (rst-all-stn, rst-remaining-stn, rst-toc-insert)
      (rst-toc-insert-node, rst-toc-node, rst-toc)
      (rst-forward-section, rst-adornment-level)
      (rst-imenu-convert-cell, rst-imenu-create-index): Refactor
      using classes.
      (rst-compare-adornments, rst-get-adornment-match): Remove
      functions now in classes.
      (rst-re-alist-def, rst-toc-mode)
      (rst-font-lock-extend-region-extend): Minor improvements.
      (rst-mode, rst-compile): Use `setq-local'.
      (rst-cvs-header, rst-svn-rev, rst-svn-timestamp)
      (rst-official-version, rst-official-cvs-rev)
      (rst-package-emacs-version-alist): Maintain version tags.
  4. 30 Jul, 2016 4 commits
  5. 29 Jul, 2016 1 commit
  6. 28 Jul, 2016 2 commits
    • Vincent Belaïche's avatar
    • Vincent Belaïche's avatar
      Enable addition of local printers from a mode hook. · 41b28dea
      Vincent Belaïche authored
      * doc/misc/ses.texi (Printer functions): Split the node into 5
      sub-nodes + add some extra documentation.
      (Various kinds of printer functions): Make an itemisation to
      disintguish better the 3 types of printers, give an example of
      lambda printer definition.
      (Standard printer functions): Add documentation for ses-prin1
      printer function.
      (Local printer functions): Add documentation for creating
      local printers programmatically from a hook.
      (Writing a lambda printer function): Add documentation about
      anti-stackoverflow precautions to take when you call the
      standard printer functions from inside a local printer.
      * lisp/ses.el (ses-standard-printer-functions): Add ses-prin1
      among standard printer function, and update docstring
      (ses-call-printer, ses-export-tab): Call `ses-prin1' instead
      of prin1-to-string.
      (ses-define-local-printer): Add definition to arguments so
      that a local printer can be defined programmatically from a
      mode hook.  Make docstring more substantial.  Use completing
      read for local printer name input.  Plus some minor
      (ses-define-if-new-local-printer): New defsubst.
      (ses-center, ses-center-span, ses-dashfill)
      (ses-dashfill-span, ses-tildefill-span): Allow to pass printer
      as an optional argument to superseed column printer/default
      spreadsheet printer.
      (ses-prin1): New defun.
  7. 27 Jul, 2016 5 commits
    • Ted Zlatanov's avatar
      Prompt to save gnus-cloud-method. · ec359399
      Ted Zlatanov authored
      Since `gnus-cloud-method' is a defcustom, when it's set, we should
      prompt the user to save it, so the customization is not lost on
      * gnus-srvr.el (gnus-server-toggle-cloud-method-server): Prompt to
      save the customization of `gnus-cloud-method'.
    • Ken Brown's avatar
      Fix dired-test-bug22694 · 773778e1
      Ken Brown authored
      * test/lisp/dired-tests.el (dired-test-bug22694): Delete the
      "bug22694" directory, if it exists, before running the test.  It
      might be left over from a previous aborted run of the test.
    • Michal Nazarewicz's avatar
      Fix ‘is multibyte’ test regex.c’s mutually_exclusive_p (bug#24020) · 74f9c1a8
      Michal Nazarewicz authored
      * src/regex.c (mutually_exclusive_p): Fix how whether character is
      unibyte is tested when calling execute_charset function.  This bug has
      been introduced by [6dc6b007: Fix ‘[[🇨🇨]]*literal’ regex failing to
      match ‘literal’] which dropped a call to IS_REAL_ASCII (c) macro.
      Reinstitute it.
    • Tino Calancha's avatar
      Remove hook when disabling ibuffer-auto-mode · e0d42597
      Tino Calancha authored
      * lisp/ibuf-ext.el (ibuffer-auto-mode):
      Remove 'ibuffer-auto-update-changed' from 'post-command-hook'.
    • Tino Calancha's avatar
      ; Spelling fixes · 40476552
      Tino Calancha authored
  8. 26 Jul, 2016 5 commits
  9. 25 Jul, 2016 3 commits
    • Katsumi Yamaoka's avatar
      * lisp/gnus/mm-decode.el (mm-convert-shr-links): · 52052267
      Katsumi Yamaoka authored
      Preserve key bindings that shr adds (bug#23964).
    • Michal Nazarewicz's avatar
      Fix ‘[[🇨🇨]]*literal’ regex failing to match ‘literal’ (bug#24020) · 6dc6b007
      Michal Nazarewicz authored
      The regex engine tries to optimise Kleene star by avoiding backtracking
      when it can detect that star’s operand cannot match what follows it in
      the pattern.
      For example, when ‘[[:alpha:]]*1’ tries to match a ‘foo’, the engine
      will test the longest match for ‘[[:alpha:]]*’, namely ’foo’ which is
      the entire string.  Literal digit one still present in the pattern will
      however not match the remaining empty string.
      Normally, backtracking would be performed trying a shorter match for the
      character class (namely ‘fo’ leaving ‘o’ in the string), but since the
      engine knows whatever would be put back into the string cannot possibly
      match literal digit one so no backtracking will be attempted.
      In the regexes of the form ‘[[:CC:]]*X’, the optimisation can be applied
      if the character class CC does not match character X.  In the above
      example, this holds because digit one is not in alpha character class.
      This test is performed by mutually_exclusive_p function but it did not
      check class bits of a charset opcode.  This resulted in an assumption
      that character classes do not match multibyte characters.  For example,
      it would incorrectly conclude that [[:alpha:]] doesn’t match ‘ż’.
      This, in turn, led to the aforementioned Kleene star optimisation being
      incorrectly applied in patterns such as ‘[[:graph:]]*’ (which should
      match ‘’ but doesn’t as can be tested by executing
          (string-match-p "[[:graph:]]*" "")
      which should return 0 but instead yields nil.
      This issue affects any class witch matches multibyte characters, i.e.
      if ‘[[🇨🇨]]’ matches a multibyte character X then ‘[[🇨🇨]]*X’ will
      fail to match ‘X’.
      * src/regex.c (executing_charset): A new function for executing the
      charset and charset_not opcodes.  It performs check on the character
      taking into consideration existing bitmap, range table and class bits.
      It also advances the pointer in the regex bytecode past the parsed
      Code now included in executing_charset.
      (mutually_exclusive_p, re_match_2_internal): Changed to take advantage
      of executing_charset function.
      * test/src/regex-tests.el: New file with tests for the character class
    • NicolasPetton's avatar
      Fix auto-reverting image-mode buffer (bug#21598) · b176d169
      NicolasPetton authored
      When auto-reverting an image buffer, `image-mode' is not called since
      `revert-buffer' is called with `preserve-modes' set to non-nil.
      * lisp/image-mode.el (image-after-revert-hook): Check if there is an
      image display property for the current buffer before updating it.
  10. 24 Jul, 2016 2 commits
    • Paul Eggert's avatar
      ‘signal’ no longer returns · 50cc08bf
      Paul Eggert authored
      Although for decades ‘signal’ has been documented to not return,
      a corner case in the Lisp debugger causes ‘signal’ to return.
      Remove the corner case and adjust Emacs internals accordingly.
      An alternative would be to document the corner case, but this
      would complicate the Lisp API unnecessarily.  (Bug#24047)
      * src/eval.c (signal_or_quit): New function, with most of the
      old contents of Fsignal.
      (quit): New function, which uses signal_or_quit and which
      might return.  All keyboard-based callers of Fsignal (Qquit,
      Qnil) changed to use this new function instead.
      (Fsignal): Use signal_or_quit.  Now _Noreturn.  All callers
      (xsignal): Move to lisp.h.
      * src/lisp.h (xsignal): Now an inline function, as it's now
      just an alias for Fsignal.
    • Paul Eggert's avatar
      Require libgnutls unless --with-gnutls=no · 2c2b0cd0
      Paul Eggert authored
      * configure.ac: Report an error if the gnutls library is missing,
      unless --with-gnutls=no is specified.
  11. 23 Jul, 2016 2 commits
    • Alan Mackenzie's avatar
      Fontify C++ parameter packs. · 4d342102
      Alan Mackenzie authored
      This fixes debbugs #23610.
      * lisp/progmodes/cc-langs.el (c-pack-ops, c-pack-key): New
      (c-type-decl-prefix-key): Add "..." and "&&" into the C++ version.
      * lisp/progmodes/cc-engine.el (c-forward-type): Handle matches of c-pack-key.
    • Alan Mackenzie's avatar
      Java Mode: Handle strings as case labels correctly. · edcdf649
      Alan Mackenzie authored
      This fixes debbugs #23901.
      * lisp/progmodes/cc-langs.el (c-nonlabel-token-key): Remove "\"" from the
      Java value.
  12. 22 Jul, 2016 3 commits
    • Kaushal Modi's avatar
      Avoid repeated warnings while restoring desktop · 03f32876
      Kaushal Modi authored
      * lisp/desktop.el (desktop-restore-file-buffer): Do not print warnings
      when files are being opened during desktop restore.
    • Eli Zaretskii's avatar
      Fix compilation warning in the MinGW build · d0e1774a
      Eli Zaretskii authored
      * nt/inc/ms-w32.h: Include stdint.h.
      (_execvp, execve): Provide prototypes.
      * lib-src/emacsclient.c [WINDOWSNT]: Remove prototype for execvp,
      it is now in nt/inc/ms-w32.h.
      * lib-src/ntlib.c (getppid): Avoid compiler warnings due to format
      (sys_ctime): Remove, not used.
    • Lars Ingebrigtsen's avatar
      Move read-multiple-choice to subr-x.el · ad90397c
      Lars Ingebrigtsen authored
      * lisp/faces.el (read-multiple-choice-face): Fix doc string.
      * lisp/emacs-lisp/subr-x.el (read-multiple-choice): Move here
      from subr.el.
      * lisp/gnus/message.el (subr-x): Ditto.
      * lisp/net/nsm.el: Require subr-x for read-multiple-choice.
      read-multiple-choice doesn't need to be in the dumped Emacs, so move
      it to a less central file.