Commit graph

4317 commits

Author SHA1 Message Date
Stefan Monnier
ad5a7c86d0 Add (:documentation <form>) for dynamically-generated docstrings
* lisp/emacs-lisp/bytecomp.el:
(byte-compile-initial-macro-environment): Use macroexp-progn.
(byte-compile-cl-warn): Don't silence use of cl-macroexpand-all.
(byte-compile-file-form-defvar-function): Rename from
byte-compile-file-form-define-abbrev-table.
(defvaralias, byte-compile-file-form-custom-declare-variable): Use it.
(byte-compile): Use byte-compile-top-level rather than
byte-compile-lambda so we can compile non-values.
(byte-compile-form): Add warnings for failed uses of lexical vars via
quoted symbols.
(byte-compile-unfold-bcf): Improve message for failed inlining.
(byte-compile-make-closure): Handle new format of internal-make-closure
for dynamically-generated docstrings.

* lisp/emacs-lisp/cconv.el (cconv--convert-function):
Add `docstring' argument.
(cconv-convert): Use it to handle the new (:documentation ...) form.
(cconv-analyze-form): Handle the new (:documentation ...) form.

* src/eval.c (Ffunction): Handle the new (:documentation ...) form.
(syms_of_eval): Declare `:documentation'.
2015-02-05 14:28:16 -05:00
Stefan Monnier
8e010cf6e7 * lisp/emacs-lisp/cl-generic.el (cl--generic-member-method): Fix paren typo. 2015-02-04 14:45:07 -05:00
Tassilo Horn
da9c6486d2 Fix typo causing a void-variable error: pkg-desc
* emacs-lisp/package.el (package-installed-p): Fix typo causing
void-variable error.
2015-02-04 20:39:16 +01:00
Artur Malabarba
102a21d689 emacs-lisp/package.el (package-reinstall): Accept package-desc objects. 2015-02-04 15:17:06 +00:00
Artur Malabarba
5687ac9f01 emacs-lisp/package.el (package-install): Mark dependencies as selected.
In particular, when given a package-desc object which is already
installed, the package is not downloaded again.
2015-02-04 15:04:46 +00:00
Artur Malabarba
5b83f03725 emacs-lisp/package.el (package-delete): Always unselect package. 2015-02-04 11:01:02 -02:00
Artur Malabarba
200a47d45c emacs-lisp/package.el (package--read-pkg-desc): Fix tar-desc reference. 2015-02-03 18:14:28 -02:00
Artur Malabarba
2a4a5069a6 emacs-lisp/package.el (package-menu-execute): Offer to remove packages. 2015-02-03 17:51:39 -02:00
Artur Malabarba
504fada7e7 emacs-lisp/package.el (package-desc-status): Add "dependency" status to Package Menu. 2015-02-03 13:56:59 +00:00
Artur Malabarba
c184e85ea2 emacs-lisp/package.el (package--user-selected-p): New function.
Populates `package-selected-packages' if necessary, and then checks if
symbol PKG is contained in it.
2015-02-03 13:54:41 +00:00
Artur Malabarba
2a4a94db1a emacs-lisp/package.el (package--get-deps): delete-dups when ONLY is nil. 2015-02-03 11:36:10 +00:00
Artur Malabarba
0ee15a20bc emacs-lisp/package.el (package-delete): Document NOSAVE. 2015-02-03 11:19:56 +00:00
Thierry Volpiatto
88acd70e67 emacs-lisp/package.el (package-reinstall): Don't change selected status. 2015-02-03 11:18:46 +00:00
Artur Malabarba
8ad2ee33a1 emacs-lisp/package.el (package--get-deps): Fix returning duplicates. 2015-02-02 13:26:40 -02:00
Artur Malabarba
ef6fa2fe0d emacs-lisp/package.el (package-menu-execute): Clean unnecessary `and'. 2015-02-02 13:25:16 -02:00
Artur Malabarba
fe188b2e4f emacs-lisp/package.el (package-initialize): Populate `package-selected-packages'. 2015-02-02 11:56:35 +00:00
Thierry Volpiatto
060dc14590 emacs-lisp/package.el: Fix previous patch 2015-02-02 10:15:36 +00:00
Artur Malabarba
0326960d3d emacs-lisp/package.el: Many style changes 2015-02-01 21:01:37 -02:00
Artur Malabarba
8334021e5a package.el (package--get-deps): Fix for indirect dependencies. 2015-02-01 20:50:13 -02:00
Artur Malabarba
5329208baf emacs-lisp/package.el (package-install): Rename ARG to MARK-SELECTED. 2015-02-01 20:34:16 -02:00
Artur Malabarba
0ade763b74 emacs-lisp/package.el (package-selected-packages): Fix :type 2015-02-01 20:28:21 -02:00
Thierry Volpiatto
e2f0f263df emacs-lisp/package.el: Don't allow deleting dependencies. 2015-02-01 20:17:51 -02:00
Stefan Monnier
e0be229d5f EIEIO: Simplify help hyperlinks; Try and reduce hardcoding in .elc
* lisp/emacs-lisp/cl-generic.el (cl--generic-search-method): Fix regexp.

* lisp/emacs-lisp/eieio-core.el (eieio--check-type): Remove.
Use cl-check-type everywhere instead.
(eieio-class-object): Remove, use find-class instead when needed.
(class-p): Don't inline.
(eieio-object-p): Check more thoroughly, so we don't treat cl-structs,
such as eieio classes, as objects.  Don't inline.
(object-p): Mark as obsolete.
(eieio-defclass-autoload, eieio-defclass-internal, eieio-oref)
(eieio--generic-tagcode): Avoid `class-p'.
(eieio-make-class-predicate, eieio-make-child-predicate): New functions.
(eieio-defclass-internal): Use current-load-list rather than
`class-location'.

* lisp/emacs-lisp/eieio-opt.el (eieio-help-class, eieio-help-constructor):
Use find-lisp-object-file-name, help-fns-short-filename and new calling
convention for eieio-class-def.
(eieio-build-class-list): Remove function, unused.
(eieio-method-def): Remove button type, unused.
(eieio-class-def): Inherit from help-function-def.
(eieio--defclass-regexp): New constant.
(find-function-regexp-alist): Use it.
(eieio--specializers-apply-to-class-p): Handle eieio--static as well.
(eieio-help-find-method-definition, eieio-help-find-class-definition):
Remove functions.

* lisp/emacs-lisp/eieio.el (defclass): Use new eieio-make-class-predicate
and eieio-make-child-predicate.
(eieio-class-parents): Use eieio--class-object.
(slot-boundp, find-class, eieio-override-prin1): Avoid class-p.
(slot-exists-p): Use find-class.

* test/automated/eieio-tests.el (eieio-test-23-inheritance-check): Simplify.
2015-01-31 00:48:14 -05:00
Stefan Monnier
d5e3922e08 * lisp/emacs-lisp/backquote.el: Fix bug with unoptimized exp.
Fixes: debbugs:19734

* lisp/emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s'
since it may be "equivalent" in some sense, yet different.
* test/automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test.
2015-01-30 16:00:29 -05:00
Oleh Krehel
b1e3d14845 lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Set `indent' to 1. 2015-01-30 17:32:29 +01:00
Stefan Monnier
9a17d246ea * lisp/emacs-lisp/cl.el (cl--function-convert): Simplify. 2015-01-28 08:18:50 -05:00
Stefan Monnier
2668ac1aae Tighten up the tagcode used for eieio and cl-struct objects
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Set the function
slot of the tag symbol to :quick-object-witness-check.
(eieio-object-p): Use :quick-object-witness-check.
(eieio--generic-tagcode): Use cl--generic-struct-tag.
* lisp/emacs-lisp/cl-preloaded.el: New file.
* lisp/emacs-lisp/cl-macs.el (cl--bind-inits): Remove, unused.
(cl--transform-lambda, cl-destructuring-bind): Remove cl--bind-inits.
(cl--make-usage-args): Strip away &aux args.
(cl-case, cl-typecase, cl--parse-loop-clause): Use macroexp-let2.
(cl-the, cl-check-type): Use macroexp-let2 and cl-typep.
(cl-defstruct): Use `declare' and cl-struct-define.
* lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tag): New function.
(cl--generic-struct-tagcode): Use it to tighten the tagcode.
* lisp/loadup.el: Load cl-preloaded.
* src/lisp.mk (lisp): Add cl-preloaded.
2015-01-27 22:41:31 -05:00
Katsumi Yamaoka
be2d23e587 lisp/emacs-lisp/cl.el (cl--function-convert): Merge cache that cl--labels-convert adds (bug#19699) 2015-01-27 23:55:26 +00:00
Glenn Morris
1152755364 Auto-commit of loaddefs files. 2015-01-27 06:19:52 -05:00
Oleh Krehel
2c3b05c93e lisp/emacs-lisp/derived.el (define-derived-mode): Declare indent 3.
Now, e.g. `indent-sexp' will produce:

    (define-derived-mode outline-mode text-mode "Outline"
      "Set ...")

instead of:

    (define-derived-mode outline-mode text-mode "Outline"
                         "Set ...")
2015-01-27 10:48:40 +01:00
Katsumi Yamaoka
1fe087a1ab lisp/emacs-lisp/cl.el (cl--function-convert): Work for cl-flet and cl-labels 2015-01-27 03:15:49 +00:00
Stefan Monnier
a9a3d429e6 * lisp/emacs-lisp/cl-generic.el (cl--generic-method): New struct.
(cl--generic): The method-table is now a (list-of cl--generic-method).
(cl--generic-member-method): New function.
(cl-generic-define-method): Use it.
(cl--generic-build-combined-method, cl--generic-cache-miss):
Adapt to new method-table.
(cl--generic-no-next-method-function): Add `method' argument.
(cl-generic-call-method): Adapt to new method representation.
(cl--generic-cnm-sample, cl--generic-nnm-sample): Adjust.
(cl-find-method, cl-method-qualifiers): New functions.
(cl--generic-method-info): Adapt to new method representation.
Return a string for the qualifiers.
(cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class): Adjust accordingly.
(eieio-all-generic-functions, eieio-method-documentation):
Adjust to new method representation.

* lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Use cl-find-method.

* test/automated/cl-generic-tests.el: Try and make sure cl-lib is not
required at run-time.
2015-01-26 11:43:06 -05:00
Stefan Monnier
4cdde9196f * lisp/emacs-lisp/cl-generic.el: Add a method-combination hook.
(cl-generic-method-combination-function): New var.
(cl--generic-lambda): Remove `with-cnm' arg.
(cl-defmethod): Change accordingly.
(cl-generic-define-method): Don't check qualifiers validity.
Preserve all qualifiers in `method-table'.
(cl-generic-call-method): New function.
(cl--generic-nest): Remove (morph into cl-generic-call-method).
(cl--generic-build-combined-method): Adjust to new format of method-table
and use cl-generic-method-combination-function.
(cl--generic-standard-method-combination): New function, extracted from
cl--generic-build-combined-method.
(cl--generic-cnm-sample): Adjust to new format of method-table.

* lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Use () qualifiers
instead of :primary.

* lisp/emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke):
Remove obsolete function.

* test/automated/cl-generic-tests.el (cl-generic-test-11-next-method-p):
New test.
2015-01-26 09:04:55 -05:00
Stefan Monnier
c4e54f9627 * lisp/emacs-lisp/cl-generic.el: Fix next-method-p test
Fixes: debbugs:19672

* lisp/emacs-lisp/cl-generic.el (cl--generic-no-next-method-function): New.
(cl--generic-build-combined-method, cl--generic-nnm-sample): Use it.
(cl--generic-typeof-types): Add support for `sequence'.
(cl-defmethod): Add non-keywords in the qualifiers.
2015-01-25 11:09:53 -05:00
Dmitry Gutov
bce27d8845 (find-function-regexp): Don't match `defgroup'
* lisp/emacs-lisp/find-func.el (find-function-regexp): Don't match
`defgroup' (regression from the previous change here).
2015-01-25 02:20:01 +02:00
Stefan Monnier
fd62486e81 * lisp/emacs-lisp/cl-generic.el (cl-no-primary-method): New fun and error.
(cl--generic-build-combined-method): Use it.
2015-01-23 16:50:56 -05:00
Glenn Morris
d7995b18e4 Auto-commit of loaddefs files. 2015-01-22 06:21:14 -05:00
Paul Eggert
8dd58a2d1f Don't downcase system diagnostics' first letters
* etc/NEWS: Document this.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file):
* lisp/ffap.el (find-file-at-point):
* lisp/files.el (insert-file-1):
* lisp/net/ange-ftp.el (ange-ftp-barf-if-not-directory)
(ange-ftp-copy-file-internal):
* lisp/progmodes/etags.el (visit-tags-table):
* lisp/url/url-dav.el (url-dav-delete-directory, url-dav-delete-file)
(url-dav-directory-files):
Keep diagnostics consistent with system's.
* lisp/erc/erc-dcc.el (erc-dcc-server):
* lisp/ffap.el (ffap-machine-p):
Ignore case while comparing diagnostics.
* src/fileio.c (report_file_errno): Don't downcase, and simplify.
Fixes: bug#19642
2015-01-21 20:29:42 -08:00
Stefan Monnier
938bca8e41 Avoid generating invalid usage info for pathological function
Fixes: debbugs:19645

* lisp/help.el (help-make-usage): Don't turn a "_" arg into an empty-string.
* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Don't confuse a string
body with a docstring.
2015-01-21 23:16:45 -05:00
Stefan Monnier
59e7fe6d0c * lisp/emacs-lisp/eieio*.el: Fix up warnings and improve compatibility
Fixes: debbugs:19645

* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Add support for `declare'.
(cl--generic-setf-rewrite): Setup the setf expander right away.
(cl-defmethod): Make sure the setf expander is setup before we expand
the body.
(cl-defmethod): Silence byte-compiler warnings.
(cl-generic-define-method): Shuffle code to change return value.
(cl--generic-method-info): New function, extracted from
cl--generic-describe.
(cl--generic-describe): Use it.

* lisp/emacs-lisp/eieio-speedbar.el:
* lisp/emacs-lisp/eieio-datadebug.el:
* lisp/emacs-lisp/eieio-custom.el:
* lisp/emacs-lisp/eieio-base.el: Use cl-defmethod.

* lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Avoid no-next-method
errors when there's a `before' but no `primary'.
(next-method-p): Return nil rather than signal an error.
(eieio-defgeneric): Remove bogus (fboundp 'method).

* lisp/emacs-lisp/eieio-opt.el: Adapt to cl-generic.
(eieio--specializers-apply-to-class-p):	New function.
(eieio-all-generic-functions): Use it.
(eieio-method-documentation): Use it as well as cl--generic-method-info.
Change format of return value.
(eieio-help-class): Adapt accordingly.

* lisp/emacs-lisp/eieio.el: Use cl-defmethod.
(defclass): Generate cl-defmethod calls; use setf methods for :accessor.
(eieio-object-name-string): Declare as obsolete.

* test/automated/cl-generic-tests.el (setf cl--generic-2): Make sure
the setf can be used already in the body of the method.
2015-01-21 14:39:06 -05:00
Glenn Morris
41efcf4db1 Auto-commit of loaddefs files. 2015-01-21 06:20:15 -05:00
Artur Malabarba
9a895795e8 emacs-lisp/package.el (package-dir-info): Fix `while' logic. 2015-01-20 22:21:23 -02:00
Stefan Monnier
3a8312d00e lisp/emacs-lisp/eieio*.el: Rewrite our generics on top of cl-generic
* lisp/emacs-lisp/eieio-generic.el: Remove.
(defgeneric, defmethod): Move to eieio-compat.el.  Mark obsolete.
* lisp/emacs-lisp/eieio-compat.el: New file.
* lisp/emacs-lisp/eieio.el: Don't require eieio-generic any more.
* lisp/emacs-lisp/eieio-core.el (eieio--slot-originating-class-p):
Remove unused function.
(eieio-defclass): Move to eieio-compat.el.
* lisp/emacs-lisp/macroexp.el (macroexp-macroexpand): New function.
(macroexp--expand-all): Use it.
* lisp/emacs-lisp/bytecomp.el (byte-compile-recurse-toplevel): Here too.
2015-01-20 15:40:29 -05:00
Michal Nazarewicz
fd020a2931 eldoc: modify eldoc-documentation-function' using add-function'
* lisp/emacs-lisp/eldoc.el (eldoc-documentation-function): Describe how
major modes should use `add-function' to alter value of the variable.

* lisp/hexl.el (hexl-mode): Set `eldoc-documentation-function' using
`add-function' so the default value is always used.
* lisp/ielm.el (inferior-emacs-lisp-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/cfengine.el (cfengine3-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/elisp-mode (emacs-lisp-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/octave.el (octave-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/progmodes/python.el (python-mode): Set
`eldoc-documentation-function' using `add-function' so the default
value is always used.
* lisp/simple.el (read--expression): Set `eldoc-documentation-function'
using `add-function' so the default value is always used.
2015-01-20 15:04:15 +01:00
Stefan Monnier
1f545d3364 * lisp/emacs-lisp/eieio-core.el: Add `subclass' specializer for cl-generic.
(eieio--generic-subclass-tagcode, eieio--generic-subclass-tag-types):
New functions.
(cl-generic-tagcode-function, cl-generic-tag-types-function): Use them.

* test/automated/eieio-test-methodinvoke.el (eieio-test-cl-generic-1):
Test `subclass' specializer.
2015-01-18 14:08:13 -05:00
Stefan Monnier
2a61bd0096 EIEIO&cl-generic: Add obsolescence warnings and fix corner case
* lisp/emacs-lisp/cl-generic.el (cl-generic-define-method): Correctly handle
introduction of a new dispatch argument.
(cl--generic-cache-miss): Handle dispatch on an argument which was not
considered as dispatchable for this method.
(cl-defmethod): Warn when adding a method to an obsolete generic function.
(cl--generic-lambda): Make sure it works if cl-lib is not yet loaded.

* lisp/emacs-lisp/eieio-generic.el (eieio--defgeneric-init-form):
Use autoloadp.

* lisp/emacs-lisp/eieio.el (defclass): Add obsolescence warning for the
`newname' argument.

* test/automated/cl-generic-tests.el (cl-generic-test-10-weird): New test.
Rename other tests to preserve ordering.
2015-01-18 12:24:43 -05:00
Artur Malabarba
8ab85ee7ce (package--append-to-alist): Updated docstring due to new name. 2015-01-18 10:39:26 -02:00
Artur Malabarba
3ccbda730d package.el (package--append-to-alist): Renamed from `add-to-alist' 2015-01-18 10:13:07 -02:00
Leo Liu
253d44bd27 Fix seq-subseq and cl-subseq for bad bounding indices
Fixes: debbugs:19434 debbugs:19519

* lisp/emacs-lisp/cl-extra.el (cl-subseq): Use seq-subseq and fix
multiple evaluation.

* lisp/emacs-lisp/seq.el (seq-subseq): Throw bad bounding indices
error.

* test/automated/seq-tests.el (test-seq-subseq): Add more tests.
2015-01-18 14:04:31 +08:00
Stefan Monnier
909126de0f * lisp/emacs-lisp/cl-generic.el: Add support for cl-next-method-p.
(cl-defmethod): Add edebug spec.
(cl--generic-build-combined-method): Fix call to
cl-no-applicable-method.
(cl--generic-nnm-sample, cl--generic-cnm-sample): New constant.
(cl--generic-isnot-nnm-p): New function.
(cl--generic-lambda): Use it to add support for cl-next-method-p.
(cl-no-next-method, cl-no-applicable-method): Simplify arg list.
(cl-next-method-p): New function.
2015-01-17 22:50:50 -05:00