Commit graph

4467 commits

Author SHA1 Message Date
Artur Malabarba
f674de6f08 emacs-lisp/package.el: Don't overwrite downloads-in-progress. 2015-04-04 20:22:26 +01:00
Stefan Monnier
5e41a51e5c * lisp/emacs-lisp/lisp-mnt.el (lm-version): Don't burp in a non-file buffer. 2015-04-02 09:59:47 -04:00
Paul Eggert
bd55cd4d24 * emacs-lisp/package.el: Spelling fixes and use active voice. 2015-04-01 10:22:20 -07:00
Artur Malabarba
aa33f4a100 * emacs-lisp/package.el: Make package-menu asynchronous.
(package-menu-async): New variable.  Controls whether
`list-packages' is asynchronous.
(list-packages): Now asynchronous by default.
(package-menu--new-package-list): Always buffer-local.
(package-menu--post-refresh)
(package-menu--find-and-notify-upgrades)
(package-menu--populate-new-package-list): New functions.
2015-04-01 11:09:00 +01:00
Artur Malabarba
ba7a1a7a4e * emacs-lisp/package.el: Implement asynchronous refreshing.
(package--with-work-buffer-async)
(package--check-signature-content)
(package--update-downloads-in-progress): New functions.
(package--check-signature, package--download-one-archive)
(package--download-and-read-archives, package-refresh-contents):
Optional arguments for async usage.
(package--post-download-archives-hook): New variable. Hook run
after every refresh.
2015-04-01 11:08:03 +01:00
Stefan Monnier
bc9a6fcd29 Let jit-lock know the result of font-lock-extend-region-functions.
* lisp/jit-lock.el (jit-lock--run-functions): New function.
(jit-lock-fontify-now): Use it.  Handle fontification bounds more
precisely in case the backend functions fontify more than requested.
Don't round up to whole lines since that shouldn't be needed
any more.
* lisp/font-lock.el (font-lock-fontify-region-function): Adjust docstring.
(font-lock-inhibit-thing-lock): Make obsolete.
(font-lock-default-fontify-region): Return the bounds actually used.

* lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value):
Fix compilation error.
2015-03-30 21:33:20 -04:00
Artur Malabarba
ce88920edb Merge branch 'master' of git+ssh://git.sv.gnu.org/srv/git/emacs 2015-03-31 00:56:56 +01:00
Artur Malabarba
a7270fb20f emacs-lisp/package.el: Reorganize package.el
Reorganize package.el and divide it with page-breaks and comments
2015-03-31 00:47:31 +01:00
Stefan Monnier
ef37e79aae * eieio-base.el (make-instance) <eieio-named>: New instance. 2015-03-30 17:51:50 -04:00
Paul Eggert
0479a1b62c Merge from origin/emacs-24
5e0314f * smie.el (smie*ward-sexp-command): Don't pretend the arg is optional
13cf575 Don't round up scroll bar width with GTK3 (Bug#20182).
921dd0d * doc/lispref/objects.texi (Equality Predicates): Fix typo in example.

Conflicts:
	doc/lispref/ChangeLog
	lisp/ChangeLog
	src/ChangeLog
2015-03-29 14:14:15 -07:00
Jan D
e6127d9474 * lisp/emacs-lisp/package.el (package-refresh-contents): Fix spelling error 2015-03-28 23:05:30 +01:00
Jan D
733a9f114c Fixes: debbugs:17879
* lisp/emacs-lisp/package.el (package-refresh-contents): Add a message at
the end so it does not appear to have hanged.
2015-03-28 12:15:18 +01:00
Stefan Monnier
8fd527eb00 * lisp/emacs-lisp/cl|eieio: Minor tweaks
* lisp/emacs-lisp/cl-macs.el (cl-dolist, cl-dotimes): Silence byte-compiler.

* lisp/emacs-lisp/eieio.el (defclass): Change internal name so as to make
sure only EIEIO files should have "eieio--" prefixes in their .elc.
2015-03-26 13:32:45 -04:00
Stefan Monnier
5e0314f6fa * smie.el (smie*ward-sexp-command): Don't pretend the arg is optional
Fixes: debbugs:20205

* lisp/emacs-lisp/smie.el (smie-backward-sexp-command)
(smie-forward-sexp-command): Don't pretend the arg is optional.
2015-03-26 09:36:24 -04:00
Stefan Monnier
2b828866c2 * etc/TODO: Remove obsolete entries. 2015-03-25 14:28:25 -04:00
Artur Malabarba
eeb515715d emacs-lisp/checkdoc.el: Don't complain about args starting with _. 2015-03-25 17:48:38 +00:00
Nicolas Petton
d46f31b4b2 * lisp/emacs-lisp/seq.el: Documentation improvements 2015-03-25 09:21:14 +01:00
Stefan Monnier
d7d72624b2 Add cl-struct specific optimizations to pcase.
* lisp/emacs-lisp/cl-macs.el (cl--struct-all-parents)
(cl--pcase-mutually-exclusive-p): New functions.
(pcase--mutually-exclusive-p): Advise to optimize cl-struct patterns.

* lisp/emacs-lisp/pcase.el (pcase--split-pred): Handle quoted string.
2015-03-23 23:40:06 -04:00
Stefan Monnier
ae277259b1 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'.
2015-03-23 18:24:30 -04:00
Paul Eggert
a660037698 Merge from origin/emacs-24
bb7b23c In `debug' don't try using window on inaccessible frame (Bug#17170).

Conflicts:
	lisp/ChangeLog
2015-03-23 10:17:21 -07:00
Daniel Colascione
bad7308e0c Fix previous commit (again) 2015-03-23 01:54:42 -07:00
Daniel Colascione
b8d7d7e8e6 Fix previous commit 2015-03-23 01:42:56 -07:00
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