Commit graph

4369 commits

Author SHA1 Message Date
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
Kelly Dean
1f2c4f817e emacs-lisp/package-x.el: Create valid tar files
* emacs-lisp/package-x.el (package-upload-buffer-internal):
Create valid tar files. (Bug#19536)
2015-02-17 22:08:51 -02:00
Stefan Monnier
c4e2be4587 * lisp/emacs-lisp/eieio*.el: Align a bit better with CLOS
* lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag): Fix copy&paste
error (semanticdb-project-database => sym).  Avoid eieio--class-public-a
when possible.

* lisp/emacs-lisp/eieio-base.el (make-instance): Add a method here rather
than on eieio-constructor.

* lisp/emacs-lisp/eieio-core.el (eieio--class-print-name): New function.
(eieio-class-name): Make it do what the docstring claims.
(eieio-defclass-internal): Simplify since `prots' isn't used any more.
(eieio--slot-name-index): Simplify accordingly.
(eieio-barf-if-slot-unbound): Pass the class object rather than its
name to `slot-unbound'.

* lisp/emacs-lisp/eieio.el (defclass): Use make-instance rather than
eieio-constructor.
(set-slot-value): Mark as obsolete.
(eieio-object-class-name): Improve call to eieio-class-name.
(eieio-slot-descriptor-name, eieio-class-slots): New functions.
(object-slots): Use it.  Declare obsolete.
(eieio-constructor): Merge it with `make-instance'.
(initialize-instance): Use `dolist'.
(eieio-override-prin1, eieio-edebug-prin1-to-string):
Use eieio--class-print-name.

* test/automated/eieio-test-methodinvoke.el (make-instance): Add methods
here rather than on eieio-constructor.
2015-02-16 02:22:46 -05:00
Stefan Monnier
6bf61df8ab * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Keep type=nil by default.
* lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Add sanity checks
about relationship between `type', `named', and `slots'.
* lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tagcode): Adjust to new
value of `cl-struct-type' property.
2015-02-16 01:37:57 -05:00
Artur Malabarba
f4f4f93e42 emacs-lisp/package.el (describe-package-1): Describe incompatibility. 2015-02-14 15:09:50 -02:00
Artur Malabarba
34c7535912 emacs-lisp/package.el: Move the compatibility-table building logic. 2015-02-14 11:13:29 -02:00
Stefan Monnier
61b4c22c6e * lisp/emacs-lisp/cl*.el: Use define-inline and move some code
* lisp/emacs-lisp/cl-lib.el: Move autoloaded code to cl-preload.

* lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Register as children
of the parent.
(cl--assertion-failed): New function.
(cl-assertion-failed): Move in from cl-lib.el.

* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Don't generate code to register
as children of its parents.
(cl--make-type-test, cl--compiler-macro-typep): Remove functions.
(cl-typep): Reimplement using define-inline.
(cl-assert): Use cl--assertion-failed.
(cl-struct-slot-value): Use define-inline.
2015-02-14 00:46:29 -05:00
Artur Malabarba
a03ab7eaf5 emacs-lisp/package.el (describe-package-1): Fix "incompat" handling. 2015-02-13 13:08:38 +00:00
Artur Malabarba
3b8b549fff emacs-lisp/package.el (package--incompatible-p): Check dependencies. 2015-02-13 12:26:46 +00:00
Artur Malabarba
511acc77a4 emacs-lisp/package.el: Indicate incompatible packages.
These are packages which require a higher emacs version than the
current one.
2015-02-12 00:14:46 -02:00
Artur Malabarba
0a66ca36fa emacs-lisp/package.el (package-install): Invert the second argument. 2015-02-12 00:14:46 -02:00
Nicolas Petton
4fb5565d0a Add a backward-compatible version of seq-reverse
* lisp/emacs-lisp/seq.el (seq-reverse): Add a backward-compatible
version of seq-reverse that works on sequences in Emacs 24.  Bump
version to 1.2.
* test/automated/seq-tests.el (test-seq-reverse, test-seq-group-by):
Add a test for seq-reverse and update test for seq-group-by to test
vectors and strings, not only lists.
2015-02-11 14:48:18 +01:00
Nicolas Petton
c49e769d8f Improve seq-group-by to return sequence elements in correct order
* lisp/emacs-lisp/seq.el (seq-group-by): Improves seq-group-by to
return sequence elements in correct order
* tests/automated/seq-tests.el: Update test for seq-group-by
* doc/lispref/sequences.texi (Sequence Functions): Update documentation
examples for seq-group-by
2015-02-11 14:45:51 +01:00
Stefan Monnier
2973127159 * lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Use macroexp-parse-body. 2015-02-09 10:52:48 -05:00
Stefan Monnier
699ece2757 * lisp/emacs-lisp/eieio-core.el (eieio-oset-default): Catch the unexpected
case where the default value would be re-interpreted as a form!
2015-02-09 10:49:43 -05:00
Leo Liu
751adc4b96 Add macro pcase-lambda
Fixes: debbugs:19814

* emacs-lisp/lisp-mode.el (el-kws-re): Include `pcase-lambda'.

* emacs-lisp/macroexp.el (macroexp-parse-body): New function.

* emacs-lisp/pcase.el (pcase-lambda): New Macro.
2015-02-09 10:05:44 +08:00
Nicolas Petton
58c098199a Better docstring for seq.el functions
* lisp/emacs-lisp/seq.el: Better docstring for seq.el functions
2015-02-06 16:00:01 +01:00
Nicolas Petton
c4a0eff011 Add seq-partition and seq-group-by
* lisp/emacs-lisp/seq.el: Better docstring for seq.el functions
* test/automated/seq-tests.el: New tests for seq-partition and
  seq-group-by
2015-02-06 15:55:57 +01:00
Nicolas Petton
05211a578e Add seq-mapcat
* lisp/emacs-lisp/seq.el (seq-mapcat): New function
* test/automated/seq-tests.el: Add unit tests for seq-mapcat
2015-02-06 15:52:23 +01:00
Artur Malabarba
f4d7de6f9c emacs-lisp/package.el: Add missing (require 'subr-x) 2015-02-05 21:41:02 -02:00
Artur Malabarba
a844b94074 emacs-lisp/package.el (package-delete): Don't always delesect. 2015-02-05 20:47:28 -02:00
Artur Malabarba
b2c4997c82 emacs-lisp/package.el (package-menu-mark-install): Mark dependency. 2015-02-05 20:33:23 -02:00