1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-19 01:10:57 -08:00
Commit graph

126617 commits

Author SHA1 Message Date
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
Paul Eggert
852111f3a6 Fix lifetime bug in tzlookup
* src/editfns.c (tzlookup): Fix storage lifetime bug when
INTEGERP (zone) && settz.  Problem found by Coverity Scan.
2016-07-20 23:38:44 +02:00
Lars Ingebrigtsen
90fb0b2d13 Fix shr.el/image build problem
Fixes: bug#24035

* lisp/net/shr.el: Require image, since some builds seem to
break without it (bug#24035).
2016-07-20 16:47:47 +02:00
Ted Zlatanov
30b3a842ec
Bring the Gnus Cloud package into working order.
* lisp/gnus/gnus-sync.el: Removed in favor of gnus-cloud.el.

* lisp/gnus/gnus-cloud.el: Autoload EPG functions. Change storage format to
simplify non-file data.
(gnus-cloud-storage-method): New defcustom to support nil, Base64,
Base64+gzip, or EPG encoding on the Gnus Cloud IMAP server. Defaults to
EPG if that's available, Base64+gzip otherwise.
(gnus-cloud-interactive): New defcustom to make Gnus Cloud operations
interactive, defaults to enabled.
(gnus-cloud-group-name): New variable for the Gnus Cloud group name.
(gnus-cloud-make-chunk): Tag with "Gnus-Cloud-Version" instead of just
"Version".
(gnus-cloud-insert-data): Simplify and support :newsrc-data entries.
(gnus-cloud-encode-data, gnus-cloud-decode-data): Support various
storage methods as per gnus-cloud-storage-method.
(gnus-cloud-parse-chunk): Look for "Gnus-Cloud-Version" marker.
(gnus-cloud-parse-version-1): Fix parsing loop bug. Handle :newsrc-data
entries.
(gnus-cloud-update-all): Handle :newsrc-data entries and dispatch to
file and data handlers.
(gnus-cloud-update-newsrc-data): New function to handle :newrsc-data
entries.
(gnus-cloud-update-file): Rework to support gnus-cloud-interactive and
be more careful.
(gnus-cloud-delete-file): Remove; merged into gnus-cloud-update-file.
(gnus-cloud-file-covered-p, gnus-cloud-all-files)
(gnus-cloud-files-to-upload, gnus-cloud-ensure-cloud-group)
(gnus-cloud-add-timestamps, gnus-cloud-available-chunks)
(gnus-cloud-prune-old-chunks): Fix indentation.
(gnus-cloud-timestamp): New function to make a standard Gnus Cloud
timestamp.
(gnus-cloud-file-new-p): Use it.
(gnus-cloud-upload-all-data): Add interactive convenience function to
upload all data.
(gnus-cloud-upload-data): Make interactive; collect files and newsrc
data separately; refresh Gnus Cloud group after insert.
(gnus-cloud-download-all-data): Add interactive convenience function to
download all data.
(gnus-cloud-download-data): Rework to support "Gnus-Cloud-Version"
marker and different storage methods.
(gnus-cloud-host-server-p): New function to check if a server is the
Gnus Cloud host.
(gnus-cloud-collect-full-newsrc): Tag entries with :newsrc-data.
(gnus-cloud-host-acceptable-method-p): New function so
other code can check if a server method can host the Gnus cloud.
(gnus-cloud-storage-method): Use 'radio instead of 'choice for better UI.
(gnus-cloud-method): Make this a defcustom and note how to set it.

* lisp/gnus/gnus-group.el (gnus-group-cloud-map): Add Gnus Cloud autoloaded
keybindings under the `~' prefix.

* lisp/gnus/gnus-srvr.el (gnus-server-mode-map, gnus-server-make-menu-bar)
(gnus-server-cloud, gnus-server-cloud-host)
(gnus-server-font-lock-keywords, gnus-server-insert-server-line)
(gnus-server-toggle-cloud-method-server): Support Gnus Cloud
synchronized servers and synchronization host server toggling (`i' and
`I') and visual display.
(gnus-server-toggle-cloud-method-server): Use
gnus-cloud-host-acceptable-method-p.
(gnus-server-toggle-cloud-method-server): Use custom-set-variables to
set the gnus-cloud-method. Ask the user if it's OK to upload the data
right now.

* doc/misc/gnus.texi: Document Gnus Cloud package.
2016-07-20 08:52:11 -04:00
Paul Eggert
60dd094a8c Remove CHECK_FRAME_FONT cruft from bytecode.c
* src/bytecode.c [CHECK_FRAME_FONT]: Do not include frame.h, xterm.h.
Remove some old ‘#if 0’ code.
2016-07-20 10:40:46 +02:00
Paul Eggert
3e71e4379c Work around GCC bug 54561 in a better way
The new approach is less selective, but also less intrusive on C code.
* src/bytecode.c, src/image.c, src/keyboard.c: Ignore -Wclobbered.
* src/conf_post.h (NONVOLATILE): Remove.  All uses removed.
2016-07-20 10:32:24 +02:00
Paul Eggert
63750fd4ed Fix port to glibc 2.24 (pre-release) + ppc64
* src/callproc.c (child_setup): Use emacs_exec_file
so that ASLR is enabled in the child process.
* src/emacs.c: Move some personality details into sys/sysdep.c.
Do not include <sys/personality.h>.
(main): Disable ASLR earlier, so that we don’t chdir twice.
* src/lisp.h (disable_address_randomization): New decl.
* src/sysdep.c (disable_address_randomization)
[HAVE_PERSONALITY_ADDR_NO_RANDOMIZE]: Move personality details
here from emacs.c.
(emacs_exec_file): New function.
2016-07-20 09:49:41 +02:00
Alan Third
bf5ddded70 Prevent bar cursor overwriting next glyph (bug#16856)
* src/nsterm.m (ns_draw_window_cursor): Test glyph width vs cursor width
before setting final size.
2016-07-19 20:24:34 +01:00
Paul Eggert
a80ee12a64 ; Spelling fix 2016-07-19 18:52:06 +02:00
Eli Zaretskii
00b6647651 Fix 'transpose-regions' when LEAVE-MARKERS arg is non-nil
* src/insdel.c (adjust_markers_bytepos): New function.
* src/lisp.h (adjust_markers_bytepos): Add prototype.
* src/insdel.c (replace_range, replace_range_2):
* src/editfns.c (Ftranspose_regions): Call
adjust_markers_bytepos.  (Bug#5131)

* test/src/editfns-tests.el (transpose-test-reverse-word)
(transpose-test-get-byte-positions): New functions.
(transpose-ascii-regions-test)
(transpose-nonascii-regions-test-1)
(transpose-nonascii-regions-test-2): New tests.
2016-07-19 18:59:41 +03:00
Katsumi Yamaoka
439f3c3e56 Make gif animation work (bug#24004)
* lisp/image.el (image-animate-timeout): Fix the logic that tests if
an animation is too big (bug#24004).
2016-07-19 07:34:54 +00:00
Stefan Monnier
99fe98d37a * lisp/simple.el (undo-amalgamate-change-group): New function
* lisp/emulation/viper-cmd.el (viper-adjust-undo): Use it.
(viper-set-complex-command-for-undo): Save current state with
prepare-change-group.
* lisp/emulation/viper-init.el (viper-undo-needs-adjustment)
(viper-buffer-undo-list-mark): Remove.
2016-07-18 21:04:39 -04:00
Noam Postavsky
73f0715df5 Keep w32 environment settings internal only
* src/emacs.c (main) [WINDOWSNT]: Move init_environment calls after the
set_initial_environment call.  This prevents Emacs' modifications to the
environment from contaminating Vprocess_environment and
Vinitial_environment (Bug #10980).
* src/callproc.c (getenv_internal) [WINDOWSNT]: Consult Emacs' internal
environment in as a fallback to Vprocess_environment.
* test/src/callproc-tests.el (initial-environment-preserved): New Test.
2016-07-18 17:22:06 -04:00
Nicolas Petton
1879b9055e Better documentation for cl-reduce (bug#24014)
* lisp/emacs-lisp/cl-seq.el (cl-reduce): Explain what reducing means.
2016-07-18 14:17:28 +02:00
Dmitry Gutov
85b3eca57a ; Revert "Replace eldoc-documentation-function with a hook"
This reverts commit 5811404f0b.

It doesn't have the consensus, as evidenced by
http://lists.gnu.org/archive/html/emacs-devel/2016-06/msg00138.html
2016-07-18 02:22:24 +03:00
Dmitry Gutov
6dc0bafd59 ; Revert "Use eldoc-documentation-functions"
This reverts commit 001d88b62e.

It doesn't have the consensus, as evidenced by
http://lists.gnu.org/archive/html/emacs-devel/2016-06/msg00138.html
2016-07-18 02:17:06 +03:00
Alan Third
02ca5db040 Remove separate pool for popup dialogs (bug#23856)
* src/nsmenu.m (pop_down_menu, ns_popup_dialog): Remove references to
autorelease pool and Popdown_data struct.
2016-07-17 22:16:43 +01:00
Mark Oteiza
001d88b62e Use eldoc-documentation-functions
* lisp/hexl.el (hexl-mode):
* lisp/ielm.el (inferior-emacs-lisp-mode):
* lisp/progmodes/cfengine.el (cfengine3-mode):
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode):
* lisp/progmodes/octave.el (octave-mode, inferior-octave-mode):
* lisp/progmodes/python.el (python-mode):
* lisp/simple.el (read--expression): Add buffer-locally to hook
eldoc-documentation-functions.
2016-07-17 12:49:57 -04:00
Noam Postavsky
e333157cba Optimize ucs-normalize.el compilation
* lisp/international/ucs-normalize.el (ucs-normalize-combining-chars-regexp):
(quick-check-list-to-regexp): Use regexp-opt-charset instead of
regexp-opt.
* lisp/international/ucs-normalize.el (quick-check-list): Reuse a single
temp buffer for the whole loop.
2016-07-16 13:01:04 -04:00
Noam Postavsky
eed3b46ca1 Add tests for ucs-normalize.el
Some tests are marked as expected to fail.

* test/lisp/international/ucs-normalize-tests.el: New tests.
* admin/unidata/NormalizationTest.txt: Add data for tests.
* admin/unidata/README: Add URL for NormalizationTest.txt.
* admin/notes/unicode: Add note about running (and updating the data
for) the new tests.  Remove note about normalization being unsupported.
2016-07-16 13:01:04 -04:00
Alan Third
49f7c5ad68 Fix cursor display (bug#23993)
* src/xdisp.c (get_phys_cursor_geometry): Fix invalid C operator.
2016-07-16 09:19:05 +01:00
Paul Eggert
9569916d94 Stop worrying about Alliant in bytecode.c
* src/bytecode.c (PUSH): Remove workaround for long-obsolete compiler.
2016-07-15 22:31:41 +02:00
Paul Eggert
4ba72d3295 Remove BYTE_MAINTAIN_TOP
It is no longer needed now that we assume GC_MARK_STACK ==
GC_MAKE_GCPROS_NOOPS.
* src/bytecode.c (BYTE_MAINTAIN_TOP): Remove.
All uses removed, and code simplified accordingly.
(BEFORE_POTENTIAL_GC, AFTER_POTENTIAL_GC): Remove, since they
are always no-ops now.  All uses removed.
(MAYBE_GC): Remove.  All uses replaced by maybe_gc,
since it is now equivalent.
2016-07-15 22:31:40 +02:00
Paul Eggert
1873ef3b89 Remove now-inaccurate bytecode comments
* src/bytecode.c: Remove comments that are no longer accurate.
Most of these are actually old ChangeLog entries.
2016-07-15 22:31:40 +02:00
Paul Eggert
e95b023163 Port to glibc 2.24 (pre-release) + ppc64
Inspired by a suggestion by Florian Weimer in:
https://sourceware.org/ml/libc-alpha/2016-07/msg00425.html
* configure.ac (HAVE_PERSONALITY_ADDR_NO_RANDOMIZE):
Rename from HAVE_PERSONALITY_LINUX32, and check for
ADDR_NO_RANDOMIZE (the crucial thing) instead of for LINUX32.
All uses changed.
* src/emacs.c (main) [HAVE_PERSONALITY_ADDR_NO_RANDOMIZE]:
Use ADDR_NO_RANDOMIZE from personality.h rather than inventing the
flag ourselves.  Just set that flag, rather than also setting the
persona.  When doing it, avoid functions like putenv that may
allocate memory.
2016-07-15 21:27:05 +02:00
Mark Oteiza
098d29af10 Revert "Add a couple cells to lisp-prettify-symbols-alist"
This reverts commit bdda4855c6.
2016-07-14 18:23:40 -04:00