Commit graph

4695 commits

Author SHA1 Message Date
Daniel Colascione
d235b1d261 Try to avoid fontifying macros in funcall position
* lisp/emacs-lisp/lisp-mode.el
(lisp--el-non-funcall-position-p): New function.
(lisp--el-match-keyword): Use it.
2015-03-23 01:38:20 -07:00
Glenn Morris
e7f92aa3d3 authors.el small additions
* lisp/emacs-lisp/authors.el (authors-aliases)
(authors-obsolete-files-regexps): Additions.
2015-03-22 17:33:49 -07:00
Martin Rudalics
bb7b23c5cb In `debug' don't try using window on inaccessible frame (Bug#17170).
* emacs-lisp/debug.el (debug): Don't try using "previous"
window when its not live or on an invisible frame (Bug#17170).
2015-03-22 12:40:21 +01:00
Mario Lang
17ad6f839e Fix problems caused by calling 'recenter' in auto-revert (Bug#20122)
lisp/emacs-lisp/tabulated-list.el (tabulated-list-print): Only call
 `recenter' if `current-buffer' is equal to `window-buffer'.

(cherry picked from commit 4a81602043)
2015-03-21 12:01:27 +02:00
Tassilo Horn
fa734d07ab Handle setf methods in elisp font-locking.
* emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-1): Also
recognize (cl-)defmethod with (setf method) name.
2015-03-21 08:52:34 +01:00
Tassilo Horn
73b8237c19 Fix CL function name font-lock bug.
* emacs-lisp/lisp-mode.el (lisp-cl-font-lock-keywords-1): Fix
false positive in function name font-locking.
2015-03-20 23:35:22 +01:00
Tassilo Horn
c9998fcbf4 Fix elisp function name font-lock bug.
* emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-1): Fix
false positive in function name font-locking.
2015-03-20 23:09:06 +01:00
Stefan Monnier
4cd31cf019 (cl-defsubst): Ignore false-positive occurrences of args via &cl-defs
Fixes: debbugs:20149

* lisp/emacs-lisp/cl-macs.el (cl-defsubst): Ignore false-positive
occurrences of args via &cl-defs.
2015-03-20 16:29:21 -04:00
Stefan Monnier
8aa13d07fe * lisp/emacs-lisp/pcase.el (pcase-lambda): Rewrite. 2015-03-19 13:46:36 -04:00
Stefan Monnier
29f7f98b7c Fixes: debbugs:20141
* lisp/emacs-lisp/eieio.el (object-slots): Return slot names as before.
2015-03-19 10:35:52 -04:00
Stefan Monnier
50c117fe86 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'.
2015-03-18 23:02:26 -04:00
Stefan Monnier
8dfff871bd * cl-generic.el (cl-generic-generalizers): Clean up after braindamage 2015-03-18 10:49:55 -04:00
Stefan Monnier
872481d9e2 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.

* lwlib/xlwmenu.c (pop_up_menu): Remove debugging code.
2015-03-18 10:31:07 -04:00
Tassilo Horn
9fdc166ee0 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.
2015-03-18 07:44:01 +01:00
Stefan Monnier
6f73c465a8 * cl-macs.el (cl--transform-lambda): Refine last change.
Fixes: debbugs:20125

* test/automated/cl-lib-tests.el: Use lexical-binding.
(cl-lib-arglist-performance): Refine test to the case where one of the
fields has a non-nil default value.  Use existing `mystruct' defstruct.
(cl-lib-struct-accessors): Use `pcase' to be a bit more flexible in the
accepted outputs.
2015-03-17 14:30:42 -04:00
Alan Mackenzie
b0743354e5 Edebug: Allow "S" to work during trace mode. Fixes debbugs #20074.
Also display the overlay arrow in go and go-nonstop modes.

* emacs-lisp/edebug.el (edebug--display-1): Move the
`input-pending' test to after trace mode's `sit-for'.
(edebug--recursive-edit): Insert "(sit-for 0)" after
"(edebug-overlay-arrow)".
2015-03-16 22:10:00 +00:00
Stefan Monnier
801eda8a2a * lisp/emacs-lisp/cl-macs.el (cl--transform-lambda): Optimize &aux.
Rework to avoid cl--do-arglist in more cases; add comments to explain what's
going on.
(cl--do-&aux): New function extracted from cl--do-arglist.
(cl--do-arglist): Use it.
* lisp/emacs-lisp/cl-generic.el: Add Version: header, for ELPA purposes.
2015-03-16 16:11:38 -04:00
Alan Mackenzie
3eb4d23a7c Make Edebug work with Follow Mode.
* emacs-lisp/edebug.el (edebug--display-1): Remove call to
edebug-adjust-window.
(edebug--recursive-edit): Don't bind pre/post-command-hooks to nil
over the recursive edit.
(edebug-adjust-window): Remove.
2015-03-16 14:48:09 +00:00
Tassilo Horn
51e7e463e9 Font-lock elisp macros/special forms dynamically
* emacs-lisp/lisp-mode.el (lisp--el-macro-regexp): New defconst.
(lisp--el-update-macro-regexp, lisp--el-update-after-load)
(lisp--el-match-macro): New functions.
(lisp-mode-variables): Update lisp--el-macro-regexp and add
lisp--el-update-after-load to after-load-functions.
2015-03-15 09:20:13 +01:00
Daniel Colascione
994168240a Support indenting backquote substitutions in cl-indent
* lisp/emacs-lisp/cl-indent.el
(lisp-indent-backquote-substitution-mode): New user option.
(common-lisp-indent-function-1, common-lisp-loop-part-indentation)
(common-lisp-indent-function): Support normally indenting
backquote substitutions.
(extended-loop-p): Rename to `lisp-extended-loop-p'.
2015-03-15 00:17:14 -07:00
Paul Eggert
33d9869b5f Spelling and minor grammar fixes 2015-03-10 00:49:57 -07:00
Nicolas Petton
b7ed48c3ce Add seq-into as a public function
* lisp/emacs-lisp/seq.el: Make seq-into a public function (replacing
seq--into)
* test/automated/seq-tests.el: Add tests for seq-into
* doc/lispref/sequences.texi: Add documentation for seq-into
2015-03-09 12:50:24 +01:00
Stefan Monnier
25058c3ab8 * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Don't try to
unfold `closure's since byte-compile-unfold-lambda doesn't know how to
do it.
2015-03-06 23:35:04 -05:00
Artur Malabarba
17ecfea3b9 package.el (package-refresh-contents): Update doc. 2015-03-05 13:25:53 +00:00
Stefan Monnier
21c547863d Replace *-function vars with generic functions in cl-generic.
* lisp/emacs-lisp/cl-generic.el (cl--generic-generalizer): New struct.
(cl-generic-tagcode-function, cl-generic-tag-types-function): Remove.
(cl--generic-t-generalizer): New const.
(cl--generic-make-method): Rename from `cl--generic-method-make'.
(cl--generic-make): Change calling convention.
(cl--generic): Add `options' field.
(cl-generic-function-options): New function.
(cl-defgeneric): Rewrite handling of options.  Add support for :method
options and allow the use of a default body.
(cl-generic-define): Save options in the corresponding new field.
(cl-defmethod): Fix ordering of qualifiers.
(cl-generic-define-method): Use cl-generic-generalizers.
(cl--generic-get-dispatcher): Change calling convention, and change
calling convention of the returned function as well so as to take the
list of methods separately from the generic function object, so that it
can receive the original generic function object.
(cl--generic-make-next-function): New function, extracted from
cl--generic-make-function.
(cl--generic-make-function): Use it.
(cl-generic-method-combination-function): Remove.
(cl--generic-cyclic-definition): New error.
(cl-generic-call-method): Take a generic function object rather than
its name.
(cl-method-qualifiers): New alias.
(cl--generic-build-combined-method): Use cl-generic-combine-methods,
don't segregate by qualifiers here any more.
(cl--generic-standard-method-combination): Segregate by qualifiers
here instead.  Add support for the `:extra' qualifier.
(cl--generic-cache-miss): Move earlier, adjust to new calling convention.
(cl-generic-generalizers, cl-generic-combine-methods):
New generic functions.
(cl-no-next-method, cl-no-applicable-method, cl-no-primary-method):
Use the new "default method in defgeneric" functionality, change
calling convention to receive a generic function object.
(cl--generic-head-used): New var.
(cl--generic-head-generalizer, cl--generic-eql-generalizer)
(cl--generic-struct-generalizer, cl--generic-typeof-generalizer):
New consts.
* lisp/emacs-lisp/eieio-core.el (eieio--generic-generalizer)
(eieio--generic-subclass-generalizer): New consts.
(cl-generic-generalizers): New methods.
* lisp/emacs-lisp/eieio-compat.el (eieio--generic-static-symbol-generalizer)
(eieio--generic-static-object-generalizer): New consts.
(cl-generic-generalizers) <(head eieio--static)>: New method.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Unfold closures like lambdas.
2015-03-04 20:04:57 -05:00
Paul Eggert
5d9b1e100a Spelling fixes 2015-03-03 15:10:40 -08:00
Daniel Colascione
8b38d30e1b Use `macroexp-parse-body'
* lisp/emacs-lisp/generator.el: (iter-defun): Use `macroexp-parse-body'.

* test/automated/generator-tests.el (cps-testcase): Use
(cps-test-declarations-preserved): New test.
2015-03-03 13:19:25 -08:00
Stefan Monnier
7133f262bb * lisp/progmodes/gud.el: Use lexical-binding.
Fixes: debbugs:19966

* lisp/emacs-lisp/gv.el (gv-ref): Warn about likely problematic cases.
2015-03-03 14:23:49 -05:00
Daniel Colascione
cecf4afebb Address generator feedback
* doc/lispref/control.texi (Generators): Correct missing word.  Clarify which
forms are legal in which parts of `unwind-protect'.  Fix orphaned
close parenthesis.

* lisp/emacs-lisp/generator.el: Make globals conform to elisp
style throughout.  Use more efficient font-lock patterns.
(cps-inhibit-atomic-optimization): Rename from
`cps-disable-atomic-optimization'.
(cps--gensym): New macro; replaces `cl-gensym' throughout.
(cps-generate-evaluator): Move the `iter-yield' local macro
definition here
(iter-defun, iter-lambda): from here.

* test/automated/generator-tests.el (cps-test-iter-close-finalizer):
Rename `gc-precise-p' to `gc-precise'.

* test/automated/generator-tests.el (cps-testcase): Use
`cps-inhibit-atomic-optimization' instead of
`cps-disable-atomic-optimization'.
2015-03-03 10:56:24 -08:00
Daniel Colascione
02eb227e81 Rename globals in generator.el
* lisp/emacs-lisp/generator.el: Make globals conform to elisp
style throughout.
2015-03-03 10:32:32 -08:00
Glenn Morris
a0b78cb64f # Standardize copyright and license notices for recently added files 2015-03-03 08:56:24 -08:00
Artur Malabarba
bfbcec128a emacs-lisp/package.el (package-autoremove): Fix if logic. 2015-03-03 15:15:26 +00:00
Daniel Colascione
8af3e1848c Add cl-iter-defun
* lisp/emacs-lisp/cl-macs.el (cl-iter-defun): Add cl-iter-defun.
2015-03-02 16:41:59 -08:00
Daniel Colascione
8f0f8c166c Fix docstrings, declarations in iter-defun
* lisp/emacs-lisp/generator.el (iter-defun): Correctly propagate
docstrings and declarations to underlying function.
2015-03-02 16:11:51 -08:00
Daniel Colascione
f6b5db6c45 Add support for generators
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 78f7e34..e7d79d5 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-02  Daniel Colascione  <dancol@dancol.org>
+
+	* control.texi (Generators): New section
+	* elisp.text: Reference new section.
+
 2015-02-28  Eli Zaretskii  <eliz@gnu.org>

 	* searching.texi (Char Classes): Update the documentation of
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 448c7f2..4e9c119 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,7 @@
+2015-03-02  Daniel Colascione  <dancol@dancol.org>
+
+	* cl.texi (Iteration Clauses): Mention iterator support.
+
 2015-02-25  Tassilo Horn  <tsdh@gnu.org>

 	* reftex.texi (Multifile Documents): Document
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7ce2e81..4ab4406 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,6 +1,8 @@
 2015-03-02  Daniel Colascione  <dancol@dancol.org>

-	* vc/vc.el (vc-responsible-backend): Add autoload cooking for
+	* emacs-lisp/generator.el: New file.
+
+	* vc/vc.el (vc-responsible-backend): Add autoload cookie for
 	`vc-responsible-backend'.

 2015-03-01  Michael Albinus  <michael.albinus@gmx.de>
diff --git a/test/ChangeLog b/test/ChangeLog
index 684e98f..64ad851 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,5 +1,7 @@
 2015-03-02  Daniel Colascione  <dancol@dancol.org>

+	* automated/generator-tests.el: New tests
+
 	* automated/finalizer-tests.el (finalizer-basic)
 	(finalizer-circular-reference, finalizer-cross-reference)
 	(finalizer-error): New tests.
2015-03-02 15:42:09 -08:00
Oleh Krehel
383722dee7 check-declare.el: Use compilation-style warnings
* lisp/emacs-lisp/check-declare.el (check-declare-warn): Add
  file-line-column info to the warning.

(check-declare-files): Make sure that `check-declare-warning-buffer'
is in `compilation-mode'. Make the order of the errors that same as in
the file. Add code to ensure that `first-error' will work properly.
2015-02-25 12:10:40 +01:00
Oleh Krehel
26b2e9aa4d check-declare.el (check-declare-ext-errors): New defcustom.
* emacs-lisp/check-declare.el (check-declare): New defgroup.
(check-declare-verify): When `check-declare-ext-errors' is non-nil,
warn about an unfound function, instead of saying "skipping external
file".
2015-02-25 12:05:28 +01:00
Stefan Monnier
8bb64d2722 * lisp/emacs-lisp/edebug.el (edebug--display): Save-excursion.
Fixes: debbugs:19611

* lisp/emacs-lisp/debug.el (debugger-env-macro): Remove redundant
save-excursion.
2015-02-25 01:03:14 -05:00
Stefan Monnier
e846bbf360 * lisp/emacs-lisp/macroexp.el (macroexp-parse-body): Handle cl-declare
and :documentation.  Change return value format accordingly.
* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda):
* lisp/emacs-lisp/pcase.el (pcase-lambda): Adjust accordingly.
* lisp/emacs-lisp/cl-macs.el (cl--transform-lambda): Use macroexp-parse-body.
2015-02-22 23:50:03 -05:00
Paul Eggert
14b4e657e2 Spelling fixes
* lisp/cedet/semantic/doc.el (semantic-documentation-comment-preceding-tag):
Rename from semantic-documentation-comment-preceeding-tag.  All
uses changed.  Leave an obsolete alias behind.
* src/lisp.h (DEFINE_NON_NIL_Q_SYMBOL_MACROS):
Rename from DEFINE_NONNIL_Q_SYMBOL_MACROS.  All uses changed.
2015-02-21 20:01:05 -08:00
Glenn Morris
226c1224b5 # Auto-commit of loaddefs files. 2015-02-20 06:18:36 -05:00
Stefan Monnier
d4ed798d25 * lisp/emacs-lisp/eieio-opt.el (eieio-help-class): Fix bug#19891
Fixes: debbugs:19891

* lisp/emacs-lisp/eieio-opt.el (eieio-help-class): `eieio-class-parents'
returns classes, not class names.
2015-02-19 13:22:21 -05:00
Stefan Monnier
235c3cb105 * lisp/emacs-lisp/cl-macs.el (cl-struct-slot-value): Handle a nil type. 2015-02-19 13:14:51 -05:00
Stefan Monnier
99db66a01f * lisp/emacs-lisp/smie.el (smie-prec2->grammar): Fix corner case problem. 2015-02-18 20:31:17 -05:00
Kelly Dean
b1d6ddd446 Push mark before goto-char in jump-to-register and check-parens
* register.el (jump-to-register):
* emacs-lisp/lisp.el (check-parens):
Push mark before goto-char so user doesn't lose his previous place.
2015-02-18 16:36:24 -02:00
Kelly Dean
72f7eded97 Use user-error where error is inappropriate
* help-mode.el (help-go-back, help-go-forward, help-follow):
* simple.el (yank-pop, pop-to-mark-command, exchange-point-and-mark):
* winner.el (winner-redo):
* windmove.el (windmove-do-window-select):
* register.el (jump-to-register, increment-register, insert-register)
(append-to-register, prepend-to-register):
* files.el (find-alternate-file, abort-if-file-too-large, write-file)
(set-visited-file-name):
* emacs-lisp/lisp.el (kill-backward-up-list):
Use user-error instead of error. (Bug#14480)
2015-02-18 16:36:22 -02:00
Stefan Monnier
ad6c1be923 * lisp/emacs-lisp/checkdoc.el (checkdoc-show-diagnostics): Don't make bogus
assumptions about window ordering.
2015-02-18 11:04:15 -05:00
Kelly Dean
04096849d5 emacs-lisp/easy-mmode.el: Clarify mode switch messages
* emacs-lisp/easy-mmode.el (define-minor-mode): Clarify mode
switch messages for minor modes. (Bug#19690)
2015-02-17 22:16:22 -02:00
Kelly Dean
cc273d1c03 emacs-lisp/easy-mmode.el (define-minor-mode): Clarify docs 2015-02-17 22:15:10 -02:00
Kelly Dean
3194809d24 emacs-lisp/easy-mmode.el: Process macro arguments correctly
* emacs-lisp/easy-mmode.el (define-minor-mode): Process macro
arguments correctly. (Bug#19685)
2015-02-17 22:08:52 -02:00