Commit graph

126645 commits

Author SHA1 Message Date
Michal Nazarewicz
da9c55ddbb Get rid of re_set_whitespace_regexp
* 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.
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
04d96eca08 Get rid of re_set_syntax
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.
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
9a418e0f98 Remove dead opcodes in regex bytecode
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.
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
4538a5e37e Refactor regex character class parsing in [:name:]
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
buffer.

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:]
format.
(regex_compile): Use re_wctype_parse.
* src/syntax.c (skip_chars): Use re_wctype_parse.
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
e725706131 Split regex glibc test cases into separet tests
* 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’.
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
7496844e7d Don’t (require 'cl)
* test/src/regex-test.el: Don’t (require 'cl).
(regex-tests-PCRE): s/loop/cl-loop/
2016-08-02 15:39:10 +02:00
Michal Nazarewicz
82a487d522 Fix reading of regex-resources in regex-tests
* 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.
2016-08-02 15:39:10 +02:00
Dima Kogan
91d5309195 Added driver for the regex tests
* test/src/regex-tests.el (regex-tests): Test executing glibc tests
cases.

[mina86@mina86.com: merged test with existing file]
2016-08-02 15:39:10 +02:00
Dima Kogan
6db72771cc New regex tests imported from glibc 2.21
* 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/*.]
2016-08-02 15:39:10 +02:00
Paul Eggert
53917616b0 Fix use-after-close in connect_network_socket
* src/process.c (connect_network_socket):
Reverse sense of previous fix.  Problem reported by Ken Brown in:
http://lists.gnu.org/archive/html/emacs-devel/2016-08/msg00004.html
2016-08-02 03:31:26 -04:00
Glenn Morris
573dde70a4 * lisp/emacs-lisp/autoload.el (autoload-generate-file-autoloads):
Respect autoload-timestamps for "actual autoloads are elsewhere" case.
2016-08-01 16:31:57 -04:00
Glenn Morris
9eb80d93a7 ; Auto-commit of loaddefs files. 2016-08-01 06:24:24 -04:00
Stefan Merten
cafb4a391b * lisp/textmodes/rst.el: Major refactoring, minor changes, minor fixes
(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-font-lock-handle-adornment-pre-match-form)
(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.
2016-07-31 16:40:46 +02:00
Martin Rudalics
8cbaf34253 Fix calculation of tool bar width reported by `frame-geometry' (Bug#24107)
* src/w32fns.c (Fw32_frame_geometry): Fix calculation of tool
bar width (Bug#24107).  Reindent.
* src/xfns.c (frame_geometry): Fix calculation of tool bar
width on non-GTK builds.
2016-07-30 14:11:12 +02:00
Eli Zaretskii
7d58b02f36 Fix region display while dragging mouse
* lisp/mouse.el (mouse-drag-track): Reset deactivate-mark in the
buffer of the drag event, to allow mark to be set and the region
be shown as we drag the mouse.  (Bug#24030)
2016-07-30 11:32:02 +03:00
Tino Calancha
d81dc05258 Copy just non-empty strings to kill-ring
* lisp/dired.el (dired-copy-filename-as-kill):
Do not change the kill ring when the string is empty (Bug#24103).
2016-07-30 17:26:19 +09:00
Eli Zaretskii
9c542a23a8 Avoid warnings about undo list while decoding
* src/coding.c (coding_restore_undo_list): New function.
(decode_coding_gap, decode_coding_object): Temporarily set the
buffer's undo list to t, to avoid warnings when decoding changes
the buffer many times, e.g. due to post-read-conversion.  Use
coding_restore_undo_list to make sure the undo list is restored.
(Bug#23813)
2016-07-30 11:23:10 +03:00
Noam Postavsky
4a5b6e621c profiler: Add mouse-1 binding for tree expansion
(profiler-report-mode-map): Add mouse-1 binding for
profiler-report-toggle-entry (Bug #13455).
2016-07-28 20:13:51 -04:00
Vincent Belaïche
90ab699c4f Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs 2016-07-28 18:12:50 +02:00
Vincent Belaïche
41b28dea85 Enable addition of local printers from a mode hook.
* 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
accordingly.
(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
optimization.
(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.
2016-07-28 17:41:21 +02:00
Ted Zlatanov
ec359399a4
Prompt to save gnus-cloud-method.
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
restart.

* gnus-srvr.el (gnus-server-toggle-cloud-method-server): Prompt to
save the customization of `gnus-cloud-method'.
2016-07-27 15:22:02 -04:00
Ken Brown
773778e1c0 Fix dired-test-bug22694
* 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.
2016-07-27 12:30:43 -04:00
Michal Nazarewicz
74f9c1a8cd Fix ‘is multibyte’ test regex.c’s mutually_exclusive_p (bug#24020)
* 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 [6dc6b00: Fix ‘[[:cc:]]*literal’ regex failing to
match ‘literal’] which dropped a call to IS_REAL_ASCII (c) macro.
Reinstitute it.
2016-07-27 18:18:34 +02:00
Tino Calancha
e0d425976e Remove hook when disabling ibuffer-auto-mode
* lisp/ibuf-ext.el (ibuffer-auto-mode):
Remove 'ibuffer-auto-update-changed' from 'post-command-hook'.
2016-07-27 19:44:06 +09:00
Tino Calancha
404765526a ; Spelling fixes 2016-07-27 19:14:37 +09:00
Stefan Monnier
682fdae7ef * lisp/subr.el (cancel-change-group): Reset cell in case of error
Since the setcdr/setcdr is supposed to be temporary, use unwind-protect
to make sure we properly undo the temporary change even in case of error.
2016-07-26 13:14:50 -04:00
Eli Zaretskii
c54238db6a Avoid segfaults in compute_motion
* src/indent.c (compute_motion): Don't turn on and don't use the
width cache unless the buffer's width-table is non-nil.  This
avoids segfaults because code that uses the width cache assumes
the width-table exists.  (Bug#24064)
2016-07-26 18:27:21 +03:00
Nicolas Petton
ac30157b14 Do not sharp-quote lambdas
* lisp/progmodes/sql.el: Remove sharp-quotes in lambdas.
2016-07-26 17:10:56 +02:00
Ted Zlatanov
9ad05bec03
* gnus-cloud.el (gnus-cloud-encode-data): Fix 'base64-gzip encoding. 2016-07-25 22:07:35 -04:00
Andrew Hyatt
113b3852d7 Add warning to format-alist docs.
*/doc/lispref/files.texi (format-alist) Change documentation for
format-alist to warn against file modifications when formatting, which
leads to incorrect results.  (Bug#5440)

Changes suggested by Eli.
2016-07-25 21:31:48 -04:00
Katsumi Yamaoka
520522674e * lisp/gnus/mm-decode.el (mm-convert-shr-links):
Preserve key bindings that shr adds (bug#23964).
2016-07-25 23:46:58 +00:00
Michal Nazarewicz
6dc6b0079e Fix ‘[[:cc:]]*literal’ regex failing to match ‘literal’ (bug#24020)
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 ‘[[:cc:]]’ matches a multibyte character X then ‘[[:cc:]]*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
opcode.
(CHARSET_LOOKUP_RANGE_TABLE_RAW, CHARSET_LOOKUP_RANGE_TABLE): Removed.
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
matching.
2016-07-25 23:52:27 +02:00
Nicolas Petton
b176d16934
Fix auto-reverting image-mode buffer (bug#21598)
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.
2016-07-25 23:40:35 +02:00
Paul Eggert
50cc08bf6e ‘signal’ no longer returns
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
changed.
(xsignal): Move to lisp.h.
* src/lisp.h (xsignal): Now an inline function, as it's now
just an alias for Fsignal.
2016-07-25 00:38:34 +02:00
Paul Eggert
2c2b0cd07c Require libgnutls unless --with-gnutls=no
* configure.ac: Report an error if the gnutls library is missing,
unless --with-gnutls=no is specified.
2016-07-24 11:07:17 +02:00
Alan Mackenzie
4d34210256 Fontify C++ parameter packs.
This fixes debbugs #23610.

* lisp/progmodes/cc-langs.el (c-pack-ops, c-pack-key): New
c-lang-defconsts/defvars.
(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.
2016-07-23 15:03:07 +00:00
Alan Mackenzie
edcdf64960 Java Mode: Handle strings as case labels correctly.
This fixes debbugs #23901.

* lisp/progmodes/cc-langs.el (c-nonlabel-token-key): Remove "\"" from the
Java value.
2016-07-23 10:43:34 +00:00
Kaushal Modi
03f3287621 Avoid repeated warnings while restoring desktop
* lisp/desktop.el (desktop-restore-file-buffer): Do not print warnings
when files are being opened during desktop restore.
2016-07-22 14:48:12 -04:00
Eli Zaretskii
d0e1774a58 Fix compilation warning in the MinGW build
* 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
mismatch.
(sys_ctime): Remove, not used.
2016-07-22 20:38:22 +03:00
Lars Ingebrigtsen
ad90397c59 Move read-multiple-choice to subr-x.el
* 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.
2016-07-22 11:08:21 +02:00
Tino Calancha
431641a2ec Update define-ibuffer-op doc string
* lisp/ibuf-macs.el (define-ibuffer-op):
Mention that BODY is evaluated with 'buf' bound to the actual
marked buffer being processed.
2016-07-22 18:01:43 +09:00
Tino Calancha
c608f4901a Update define-ibuffer-op doc string
* lisp/ibuf-macs.el (define-ibuffer-op): Document arg COMPLEX
instead of refer the reader to the source code.
Document arg BODY.
2016-07-22 16:45:51 +09:00
Tino Calancha
b13b728cc2 Fix shell-command[-on-region] doc strings
* lisp/simple.el (shell-command, shell-command-on-region):
Drop the sentence saying that the command may delete the buffer
'*Shell Command Output*': the command never delete such
buffer (Bug#23936).
2016-07-22 14:47:43 +09:00
Mark Oteiza
b35ec0ab64 ;Revert ";Partially revert 2649105a"
This reverts commit b7651649c2.
2016-07-21 17:15:26 -04:00
Mark Oteiza
b7651649c2 ;Partially revert 2649105a
* lisp/textmodes/tex-mode.el (tex-common-initialization): Use
setq-local to modify prettify-symbols-compose-predicate.
2016-07-21 16:53:04 -04:00
Stefan Monnier
29f645d526 * src/bytecode.c: Fix compilation with BYTE_CODE_SAFE
(struct byte_stack): Re-add `bottom'.
(exec_byte_code): Initialize it.
2016-07-21 11:12:59 -04:00
Tino Calancha
cf23d8e9d3 Ibuffer: Use default output buffer for shell commands
* lisp/ibuf-ext.el (shell-command-pipe): Insert the output in buffer
'*Shell Command Output*', as command 'shell-command-file'.
2016-07-21 22:33:25 +09:00
Tino Calancha
1d119be4d3 Fix failing test
* test/lisp/erc/erc-track-tests.el (erc-track--erc-faces-in):
Enable Font Lock mode in order to initialize
'char-property-alias-alist' (Bug#23954).
2016-07-21 21:51:24 +09:00
Paul Eggert
a066fb1cee Fix use-after-close in connect_network_socket
* src/process.c (connect_network_socket): Don’t use
external_sock_fd after closing it.  Problem found by Coverity Scan.
2016-07-21 11:29:43 +02:00
Katsumi Yamaoka
9eb028f886 * lisp/net/shr.el (shr-fill-line):
Preserve text properties in folded lines (bug#24034).
2016-07-21 08:36:17 +00:00