Paul Eggert [Fri, 27 Mar 2015 18:14:14 +0000 (11:14 -0700)]
Port etags to -DDEBUG
* etags.c (xnew, xrnew) [DEBUG]: Don't include chkmalloc.h, which
is not part of Emacs and is typically not installed.
Instead, just invoke xmalloc and xrealloc as usual.
Problem reported by Nicolas Richard in:
http://bugs.gnu.org/20191#20
(xrnew): Avoid no-longer-needed cast to 'char *'.
(xrealloc): First arg is now void *, not char *.
Paul Eggert [Fri, 27 Mar 2015 17:36:15 +0000 (10:36 -0700)]
Assume !BROKEN_NON_BLOCKING_CONNECT
From a suggestion by Eli Zaretskii in:
http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00824.html
* process.c (NON_BLOCKING_CONNECT): Simplify by assuming that
BROKEN_NON_BLOCKING_CONNECT is not defined.
(SELECT_CAN_DO_WRITE_MASK): Remove, and assume it's now true.
Eli Zaretskii [Fri, 27 Mar 2015 13:16:36 +0000 (16:16 +0300)]
Fix crashes when restoring sub-char-tables from desktop file
src/lread.c (substitute_object_recurse): For sub-char-tables, start
the recursive SUBSTITUTE loop from index of 2, to skip the
non-Lisp members of the sub-char-table. See the discussion at
http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00520.html
for the details.
Eli Zaretskii [Fri, 27 Mar 2015 09:44:31 +0000 (12:44 +0300)]
Support non-blocking connect on MS-Windows (Bug#20207)
Based on ideas from Kim F. Storm <storm@cua.dk>, see
http://lists.gnu.org/archive/html/emacs-devel/2006-12/msg00873.html.
src/w32proc.c (reader_thread): If the FILE_CONNECT flag is set, call
'_sys_wait_connect'. If it returns STATUS_CONNECT_FAILED, exit
the thread with code 2.
(sys_select): Support 'wfds' in addition to 'rfds'. If a
descriptor in 'wfds' has its bit set, but the corresponding
fd_info member doesn't have its FILE_CONNECT flag set, ignore the
descriptor. Otherwise, acknowledge a successful non-blocking
connect by resetting the FILE_CONNECT flag and setting cp->status
to STATUS_READ_ACKNOWLEDGED.
src/w32.h (STATUS_CONNECT_FAILED): New enumeration value.
(struct _child_process): New member 'errcode'.
(FILE_CONNECT): New flag.
(_sys_wait_connect): Add prototype.
src/w32.c (pfn_WSAEnumNetworkEvents): New function pointer.
(init_winsock): Load WSAEnumNetworkEvents from winsock DLL.
(set_errno): Map WSAEWOULDBLOCK and WSAENOTCONN.
(sys_connect): Support non-blocking 'connect' calls by setting the
FILE_CONNECT flag in the fd_info member and returning EINPROGRESS.
(_sys_read_ahead): Add debug message if this function is called
for a descriptor that waits for a non-blocking connect to complete.
(_sys_wait_connect): New function.
(sys_read): Support STATUS_CONNECT_FAILED. Return the error code
recorded by _sys_wait_connect when the non-blocking connect
failed. Don't call WSAGetLastError before a call to set_errno had
a chance to use its value, since WSAGetLastError clears the last
error.
Wolfgang Jenkner [Fri, 27 Mar 2015 01:54:39 +0000 (02:54 +0100)]
Preserve face text properties in comint prompt.
Fixes: debbugs:20084
* lisp/font-lock.el (font-lock--remove-face-from-text-property): New
function. Adapted from the previously commented out
remove-single-text-property.
Remove previously unused and commented out auxiliary function
remove-text-property and obsolete comment.
* lisp/comint.el (comint-output-filter): Use it to remove
comint-highlight-prompt.
(comint-snapshot-last-prompt, comint-output-filter): Use
font-lock-prepend-text-property for comint-highlight-prompt.
* test/automated/textprop-tests.el: New file.
(textprop-tests-font-lock--remove-face-from-text-property): New test.
Thus, the original face text property of a prompt "candidate" (the
last line of an output chunk not ending with a newline) is
preserved. This amends the fix for bug#14744.
Dmitry Gutov [Wed, 25 Mar 2015 19:54:29 +0000 (21:54 +0200)]
Only escape quotation mark, backslash and cntrl U+0000 to U+001F
* lisp/json.el (json-special-chars): Don't treat `/' specially, there's
no need to.
(json-encode-string): Only escape quotation mark, backslash and
the control characters U+0000 to U+001F.
Olaf Rogalsky [Wed, 25 Mar 2015 01:04:00 +0000 (21:04 -0400)]
* lisp/xt-mouse.el: Add mouse-tracking support.
Fixes: debbugs:19416
* lisp/xt-mouse.el: Add mouse-tracking support.
(xterm-mouse-translate-1): Handle mouse-movement events.
(xterm-mouse--read-event-sequence-1000)
(xterm-mouse--read-event-sequence-1006): Delete functions.
(xterm-mouse--read-event-sequence): New function that handles both at
the same time. Handle mouse-movements.
(xterm-mouse--read-utf8-char, xterm-mouse--read-number-from-terminal):
New functions.
(xterm-mouse-event): Simplify.
(xterm-mouse-tracking-enable-sequence)
(xterm-mouse-tracking-disable-sequence): Enable mouse tracking.
* lisp/mouse.el (mouse-drag-line): Also ignore `vertical-line' prefix events.
Michael Albinus [Tue, 24 Mar 2015 19:05:00 +0000 (20:05 +0100)]
Improve special char handling in Tramp
* net/tramp-sh.el (tramp-do-file-attributes-with-ls)
(tramp-do-file-attributes-with-stat): Quote file names in output.
(tramp-do-directory-files-and-attributes-with-stat): Use "//" as marker.
Paul Eggert [Tue, 24 Mar 2015 18:42:53 +0000 (11:42 -0700)]
Fix minor ldexp issues
* doc/lispref/numbers.texi (Float Basics): Improve ldexp documentation.
* src/floatfns.c (Fldexp): Require 2 args. Avoid undefined behavior
if the exponent is out of 'int' range. Improve documentation. Fixes: bug#20185
Stefan Monnier [Mon, 23 Mar 2015 22:24:30 +0000 (18:24 -0400)]
Add new `cl-struct' and `eieio' pcase patterns.
* lisp/emacs-lisp/cl-macs.el (cl-struct): New pcase pattern.
* lisp/emacs-lisp/eieio.el (eieio-pcase-slot-index-table)
(eieio-pcase-slot-index-from-index-table): New functions.
(eieio): New pcase pattern.
* lisp/emacs-lisp/pcase.el (pcase--make-docstring): New function.
(pcase): Use it to build the docstring.
(pcase-defmacro): Make sure the macro is lazy-loaded.
(\`): Move its docstring from `pcase'.
Paul Eggert [Mon, 23 Mar 2015 17:30:33 +0000 (10:30 -0700)]
Merge from origin/emacs-24
ad89f85 Another minor improvement in ELisp manual (Bug#20168) 5e2951b Improve docs of 'posn-actual-col-row' (Bug#20169) 1291ce1 Minor documentation fix in ELisp manual (Bug#20174) 33e2236 * display.texi (Useless Whitespace): Fix thinko. ff3878d * configure.ac: Fix jpeg version check to work with gcc >= 5. 90b46f5 Work for the case nnmail-expiry-target is an nnmh group (bug#20170) e7f92aa authors.el small additions 0bfe915 * etc/PROBLEMS: Add entry about dir-locals and some auto-mounters. c3c4b75 Fixes: debbugs:18939
Paul Eggert [Mon, 23 Mar 2015 17:14:01 +0000 (10:14 -0700)]
Merge from origin/emacs-24
The following commits were skipped:
17ad6f8 Fix problems caused by calling 'recenter' in auto-revert (Bug#20122) 1c4900d Backport: ruby-mode: Detect regexps after `!' f74843a Backport: ruby-mode: Change faces used for self, true, false and nil a5d1f94 Backport: ruby-mode: Expect regexp after { or | too
Have `sgml-attribute-offset' control SGML attribute indentation
Fixes: debbugs:20161
* textmodes/sgml-mode.el (sgml-attribute-offset): New defcustom.
(sgml-calculate-indent): Use `sgml-attribute-offset' for attribute
indentation.
Eli Zaretskii [Sat, 21 Mar 2015 15:44:00 +0000 (17:44 +0200)]
Fix problems with setting system-time-locale on MS-Windows
src/emacs.c (synchronize_locale) [WINDOWSNT]: Ignore 'category' and
always use LC_ALL instead. Fixes problems with setting
system-time-locale to something non-default.
Dmitry Gutov [Fri, 20 Mar 2015 05:03:54 +0000 (07:03 +0200)]
ruby-mode: Fix a "required arguments" confusion
* lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Move `at_exit'
and `callcc' to the "methods with required arguments" section,
they need a block argument. Remove a `throw' duplicate.
Dmitry Gutov [Fri, 20 Mar 2015 04:04:54 +0000 (06:04 +0200)]
Backport: ruby-mode: Change faces used for self, true, false and nil
Fixes: debbugs:17733
* lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Use
`font-lock-constant-face' for nil, true and false. Highlight
`self' as a keyword.
Paul Eggert [Thu, 19 Mar 2015 21:14:07 +0000 (14:14 -0700)]
Better port of pthread usage to FreeBSD
* configure.ac (ac_func_list): Omit pthread_sigmask, since
we check for that ourselves rather than relying on gnulib.
(HAVE_PTHREAD, LIB_PTHREAD, _THREAD_SAFE): Port better to FreeBSD,
by also checking for pthread_create, pthread_self, pthread_sigmask.
Tighten the test for pthread_atfork while we're at it. Fixes: bug#20136
Paul Eggert [Thu, 19 Mar 2015 19:32:42 +0000 (12:32 -0700)]
Merge from gnulib
This incorporates:
2015-03-19 fdopendir: port better to MinGW
2015-03-18 fdopendir: fix typo in comment
2015-02-24 glob, etc.: port to MSVC v18 on MS-Windows 8.1
* lib/dirent.in.h, lib/fdopendir.c: Update from gnulib.
* lib/dirfd.c, m4/dirfd.m4: New files from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
Stefan Monnier [Thu, 19 Mar 2015 03:02:26 +0000 (23:02 -0400)]
EIEIO: Change class's representation to unify instance & class slots
* lisp/emacs-lisp/eieio-core.el (eieio--class): Change field names and order
to match those of cl--class; use cl--slot for both instance slots and
class slots.
(eieio--object-num-slots): Use cl-struct-slot-info.
(eieio--object-class): Rename from eieio--object-class-object.
(eieio--object-class-name): Remove.
(eieio-defclass-internal): Adjust to new slot representation.
Store doc in class rather than in `variable-documentation'.
(eieio--perform-slot-validation-for-default): Change API to take
a slot object.
(eieio--slot-override): New function.
(eieio--add-new-slot): Rewrite.
(eieio-copy-parents-into-subclass): Rewrite.
(eieio--validate-slot-value, eieio--validate-class-slot-value)
(eieio-oref-default, eieio-oset-default)
(eieio--class-slot-name-index, eieio-set-defaults): Adjust to new
slot representation.
(eieio--c3-merge-lists): Simplify.
(eieio--class/struct-parents): New function.
(eieio--class-precedence-bfs): Use it.
* lisp/emacs-lisp/eieio.el (with-slots): Use macroexp-let2.
(object-class-fast): Change recommend replacement.
(eieio-object-class): Rewrite.
(slot-exists-p): Adjust to new slot representation.
(initialize-instance): Adjust to new slot representation.
(object-write): Adjust to new slot representation.
* lisp/emacs-lisp/eieio-base.el (eieio-persistent-convert-list-to-object):
Manually map initargs to slot names.
(eieio-persistent-validate/fix-slot-value): Adjust to new
slot representation.
* lisp/emacs-lisp/eieio-compat.el (eieio--generic-static-symbol-specializers):
Extract from eieio--generic-static-symbol-generalizer.
(eieio--generic-static-symbol-generalizer): Use it.
* lisp/emacs-lisp/eieio-custom.el (eieio-object-value-create)
(eieio-object-value-get): Adjust to new slot representation.
* lisp/emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots):
Declare to silence warnings.
(data-debug-insert-object-button): Avoid `object-slots'.
(data-debug/eieio-insert-slots): Adjust to new slot representation.
* lisp/emacs-lisp/eieio-opt.el (eieio--help-print-slot): New function
extracted from eieio-help-class-slots.
(eieio-help-class-slots): Use it. Adjust to new slot representation.
* test/automated/eieio-test-methodinvoke.el (make-instance): Use new-style
`subclass' specializer for a change.
* test/automated/eieio-test-persist.el (persist-test-save-and-compare):
Adjust to new slot representation.
* test/automated/eieio-tests.el (eieio-test-17-virtual-slot): Don't use
initarg in `oset'.
(eieio-test-32-slot-attribute-override-2): Adjust to new
slot representation.
* lisp/emacs-lisp/cl-preloaded.el (cl--class): Fix type of `parents'.
Paul Eggert [Wed, 18 Mar 2015 18:45:36 +0000 (11:45 -0700)]
Merge from origin/emacs-24
1a941d6 Fix incorrect usage of @key in the User Manual (Bug#20135) 14c47d3 doc/misc/efaq-w32.texi: Spell-check. ac85901 doc/misc/efaq-w32.texi: Remove outdated information and update. c43762d Fix description of fullscreen mode on MS-Windows (Bug#20110). ea8cab3 doc/lispref/minibuf.texi (Basic Completion): Fix a typo. (Bug#20108) 2fdec80 Improve indexing in Emacs manual (Bug#20105) cc11321 Fix --no-bitmap-icon
Stefan Monnier [Wed, 18 Mar 2015 14:31:07 +0000 (10:31 -0400)]
Add classes as run-time descriptors of cl-structs.
* lisp/emacs-lisp/cl-preloaded.el (cl--struct-get-class): New function.
(cl--make-slot-desc): New constructor.
(cl--plist-remove, cl--struct-register-child): New functions.
(cl-struct-define): Rewrite.
(cl-structure-class, cl-structure-object, cl-slot-descriptor)
(cl--class): New structs.
(cl--struct-default-parent): Initialize it here.
* lisp/emacs-lisp/cl-macs.el (cl--find-class): New macro.
(cl-defsubst, cl--defsubst-expand, cl--sublis): Move before first use.
(cl--struct-default-parent): New var.
(cl-defstruct): Adjust to new representation of classes; add
default parent. In accessors, signal `wrong-type-argument' rather than
a generic error.
(cl-struct-sequence-type, cl-struct-slot-info)
(cl-struct-slot-offset): Rewrite.
* lisp/emacs-lisp/cl-generic.el (cl--generic-struct-specializers)
(cl-generic-generalizers): Rewrite.
* src/alloc.c (purecopy): Handle hash-tables.
* lisp/emacs-lisp/debug.el (debug--implement-debug-on-entry):
Bind inhibit-debug-on-entry here...
(debug): Instead of here.
* lisp/emacs-lisp/macroexp.el (macroexp--debug-eager): New var.
(internal-macroexpand-for-load): Use it.
Tassilo Horn [Mon, 16 Mar 2015 09:25:14 +0000 (10:25 +0100)]
Improve dynamic elisp keyword font-locking
* emacs-lisp/byte-run.el (macro-declarations-alist): New
declaration no-font-lock-keyword.
(defmacro): Flush font-lock in existing elisp buffers.
* emacs-lisp/lisp-mode.el (lisp--el-update-after-load)
(lisp--el-update-macro-regexp, lisp--el-macro-regexp): Delete
functions and defconst.
(lisp--el-match-keyword): Rename from lisp--el-match-macro.
(lisp--el-font-lock-flush-elisp-buffers): New function.
(lisp-mode-variables): Remove code for updating
lisp--el-macro-regexp, and add
lisp--el-font-lock-flush-elisp-buffers to after-load-functions.