summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* Merge from origin/emacs-28Eli Zaretskii2022-04-161-2/+6
|\ | | | | | | | | | | | | b201823f63 Describe problems with invoking Python on MS-Windows 880f2734c9 A better fix for bug#54800 5ee959aa87 Add a comment about cl-concatenate ab2b822b9b Revert "Make cl-concatenate an alias of seq-concatenate"
| * Add a comment about cl-concatenateLars Ingebrigtsen2022-04-131-0/+3
| | | | | | | | * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Add a comment.
| * Revert "Make cl-concatenate an alias of seq-concatenate"Lars Ingebrigtsen2022-04-131-2/+3
| | | | | | | | | | | | | | This reverts commit 78f76fe16e2737b40694f82af28d17a90a21ed7b. The commit made calls to cl-concatenate bug out, since autoloading defalises doesn't work very well (bug#54901).
| * cl-generic.el: Fix bug#46722Stefan Monnier2022-04-061-1/+3
| | | | | | | | | | | | | | | | | | Fix longstanding bug due to unexpected interference via side-effect. * lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Copy the `dispatch` arg before storing it into the hash-table. Backport from `master` (cherrypick from commit 61f8f7f68f).
* | Enable dragging resizing final column in vtableLars Ingebrigtsen2022-04-151-3/+2
| | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-line): Insert the divider after the final column, too, so that the size can be dragged.
* | Add some mouse-face bits to vtableLars Ingebrigtsen2022-04-151-0/+2
| | | | | | | | | | * lisp/emacs-lisp/vtable.el (make-vtable) (vtable--insert-header-line): Put mouse-face on draggable bits.
* | Tweak sorting indicator placement in vtableLars Ingebrigtsen2022-04-151-1/+8
| | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Tweak sorting indicator position.
* | Make the sorting indicator prettier in vtableLars Ingebrigtsen2022-04-151-14/+37
| | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Place the sorting indicator flush right in the heading.
* | Allow using faces for colors in vtableLars Ingebrigtsen2022-04-151-14/+45
| | | | | | | | | | | | | | | | * doc/misc/vtable.texi (Making A Table): Adjust color documentation. * lisp/emacs-lisp/vtable.el (make-vtable): Mix more. (vtable--compute-colors): Mix both foreground and background colors. (vtable--make-color-face, vtable--face-blend): New functions. (vtable--insert-line): Adjust usage.
* | Allow dragging the divider in vtableLars Ingebrigtsen2022-04-151-16/+36
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable): Add a keymap cache. (make-vtable): Allow dragging the divider. (vtable-insert): Don't put the table keymap over the entire line -- avoid the divider, which has its own keymap. (vtable--drag-resize-column): Adjust to the in-buffer divider dragging.
* | Fix off-by-one error in text-property-search-backwardLars Ingebrigtsen2022-04-151-1/+0
| | | | | | | | | | | | | | * lisp/emacs-lisp/text-property-search.el (text-property-search-backward): Fix off-by-one error -- this would result in not finding the previous (non-)match when at the first character in a field.
* | Allow dragging dividers in vtableLars Ingebrigtsen2022-04-141-10/+19
| | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Allow dragging dividers. (vtable--drag-resize-column): Adjust function.
* | Allow resizing vtable columns by draggingLars Ingebrigtsen2022-04-141-16/+31
| | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Allow resizing by dragging headers. (vtable--drag-resize-column): New function. (vtable-narrow-current-column): Refactor out common bits. (vtable--alter-column-width): To here. (vtable-widen-current-column): Rewrite to use vtable-narrow-current-column.
* | Make vtable remember user-altered column widthsLars Ingebrigtsen2022-04-141-0/+6
| | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable-narrow-current-column) (vtable-widen-current-column): Store the size to that it's respected on `g'.
* | Ensure that commands like { work on all frames in vtableLars Ingebrigtsen2022-04-141-13/+16
| | | | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--recompute-cache) (vtable--ensure-cache): New functions. (vtable-insert): Use it. (vtable--widths): Ditto.
* | Make vtable narrow/widen functions take a prefixLars Ingebrigtsen2022-04-141-8/+16
| | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable-narrow-current-column) (vtable-widen-current-column): Allow using the prefix to say how much to narrow/widen the columns.
* | Copy edit make-vtable codeLars Ingebrigtsen2022-04-141-6/+4
| | | | | | | | * lisp/emacs-lisp/vtable.el (make-vtable): Clean up code slightly.
* | Edit some vtable doc stringsLars Ingebrigtsen2022-04-141-2/+4
| | | | | | | | | | * lisp/emacs-lisp/vtable.el (make-vtable, vtable): Improve doc strings.
* | Further divider fixes for vtableLars Ingebrigtsen2022-04-141-3/+9
| | | | | | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Don't insert the divider at the end. (vtable-narrow-current-column, vtable-widen-current-column): Don't error out when being called on the divider.
* | Fix dividers in vtable header linesLars Ingebrigtsen2022-04-141-2/+2
| | | | | | | | | | * lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Put the divider in the correct place in the header line.
* | Allow having dividers between columns in vtableLars Ingebrigtsen2022-04-141-32/+57
| | | | | | | | | | | | | | | | * doc/misc/vtable.texi (Making A Table): Document it. * lisp/emacs-lisp/vtable.el (vtable): Add a divider slot. (make-vtable): Accept :divider and :divider-width arguments. (vtable--insert-line, vtable--insert-header-line): Display the divider.
* | Allow putting alternating colors on vtable rowsLars Ingebrigtsen2022-04-141-11/+50
| | | | | | | | | | | | | | | | | | * doc/misc/vtable.texi (Making A Table): Document it. * lisp/emacs-lisp/vtable.el (vtable): Add :row-colors. (make-vtable): Ditto. (vtable--compute-colors, vtable--color-blend): New functions. (vtable--insert-line): Take a line number argument and adjust callers.
* | Add a new `vtable' faceLars Ingebrigtsen2022-04-131-1/+7
| | | | | | | | | | | | * doc/misc/vtable.texi (Introduction): Document it. * lisp/emacs-lisp/vtable.el (vtable): Add a new face.
* | Add support for column background colors in vtableLars Ingebrigtsen2022-04-131-3/+12
| | | | | | | | | | | | | | | | * doc/misc/vtable.texi (Making A Table): Document it. * lisp/emacs-lisp/vtable.el (vtable): Add a column color element. (make-vtable): Use it. (vtable--insert-line): Insert the colors here.
* | Make list-times not include zero elementsLars Ingebrigtsen2022-04-131-1/+1
| | | | | | | | | | | | | | | | | | * doc/lispref/os.texi (Time Parsing): Mention %x. * lisp/calendar/time-date.el (format-seconds): Accept a new %x spec that removes trailing zeros (bug#54904). * lisp/emacs-lisp/timer-list.el (list-timers): Don't display trailing zero bits.
* | Fix marking upgrades for packages from ELPA or NonGNU ELPAPo Lu2022-04-131-1/+1
| | | | | | | | | | | | * lisp/emacs-lisp/package.el (package-menu--find-upgrades): Look inside ``external'' packages as well when searching for upgrades. (bug#54117)
* | Tweak how `M-q' in emacs-lisp-mode worksLars Ingebrigtsen2022-04-131-21/+41
| | | | | | | | | | | | | | * lisp/emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only fill as strings inside strings (bug#31656). (lisp--fill-line-simple): New function to do simple sexp-based filling.
* | Fix eager macroexpansion cycle in cl-once-onlySean Whitton2022-04-121-2/+2
| | | | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl-once-only): Use different cl-loop syntax, with no functional change, but such that the loop does not expand into cl-psetq.
* | Add two classic Common Lisp macro-writing macrosSean Whitton2022-04-111-0/+51
| | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl-with-gensyms, cl-once-only): New macros.
* | * lisp/emacs-lisp/macroexp.el (macroexp-let2*): Allow common shorthandStefan Monnier2022-04-111-3/+11
| |
* | Update docstrings for shortdoc.el FUNC lisp form APIKaushal Modi2022-04-101-15/+55
| | | | | | | | | | * lisp/emacs-lisp/shortdoc.el (define-short-documentation-group): Updated docstrings.
* | Improve package.el error messages on too-old EmacsenLars Ingebrigtsen2022-04-081-2/+6
| | | | | | | | | | * lisp/emacs-lisp/package.el (package-compute-transaction): Give a better error message on too-old Emacs versions (bug#54747).
* | OClosure: New function `function-documentation`Stefan Monnier2022-04-071-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As mentioned in the original OClosure commit, OClosures (ab)use the bytecode's docstring slot to hold the OClosure's type. This currently prevents OClosures from having their own docstring. Introduce a new generic function `function-documentation` to fetch the docstring of a function, which can then be implemented in various different ways depending on the OClosure's type. * lisp/simple.el (function-documentation): New generic function. (bad-package-check): Strength-reduce `eval` to `symbol-value`. * src/doc.c (Fdocumentation): Use it. * lisp/emacs-lisp/oclosure.el (oclosure--accessor-docstring): New function. * test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test): Add test for accessor's docstrings.
* | Clarify read-answer-short/use-short-answers actionLars Ingebrigtsen2022-04-071-2/+8
| | | | | | | | | | | | | | * lisp/emacs-lisp/map-ynp.el (read-answer-short): Clarify what this variable affects (bug#54754). * src/fns.c (Fyes_or_no_p): Mention `use-short-answers'.
* | Fix minor-mode doc string quotingLars Ingebrigtsen2022-04-061-1/+1
| | | | | | | | | | | | * lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Fix double quoting of things like (default-value 'electric-pair-mode) (bug#54746).
* | OClosure: add support for `slot-value`Stefan Monnier2022-04-042-47/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/oclosure.el (oclosure--slot-index) (oclosure--slot-value, oclosure--set-slot-value): New functions. * lisp/emacs-lisp/eieio-core.el (eieio-oset, eieio-oref): Consolidate the type test. Use `oclosure--(set-)slot-value`. (eieio--validate-slot-value, eieio--validate-class-slot-value): Don't presume `class` is an EIEIO class. (eieio--class): Fix bogus `:type` info. (eieio--object-class): Simplify. (eieio--known-slot-name-p): New function. (eieio-oref, eieio-oref-default, eieio-oset-default): Use it. * test/lisp/emacs-lisp/oclosure-tests.el: Require `eieio`. (oclosure-test): Make `name` field mutable. (oclosure-test-slot-value): New test.
* | Further fixes for cl--generic-describe and (function ...)Lars Ingebrigtsen2022-04-041-7/+6
| | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Fix the #' problem for defmethods, too (bug#54628).
* | Rewrite string-greaterp and string> using string-lesspMattias EngdegÄrd2022-04-041-0/+11
| | | | | | | | | | | | | | | | | | Since string-lessp has its own byte-op, using it is much faster than calling string-greaterp even with the need to bind a temporary variable. * lisp/emacs-lisp/byte-opt.el (byte-optimize-string-greaterp): New. (string-greaterp, string>): Set byte-optimizer.
* | ; * lisp/emacs-lisp/cl-macs.el (cl-struct-slot-value): Fix typo.Philipp Stephani2022-04-031-1/+1
| |
* | Have global minor modes say so in the doc stringLars Ingebrigtsen2022-04-031-9/+11
| | | | | | | | | | | | | | * lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): Allow saying whether it's a global minor mode or not. (easy-mmode--mode-docstring): Use it. (define-minor-mode): Pass in the data.
* | Fix bootstrap errors after previous easy-mmode changeLars Ingebrigtsen2022-04-022-33/+1
| | | | | | | | | | | | | | | | * lisp/subr.el (ensure-empty-lines, string-lines): Moved from subr-x so that they can be used in early bootstrap files. * lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Don't use string-empty-p because of bootstrap issues.
* | Put the define-minor-mode boilerplate at the end of the doc stringsLars Ingebrigtsen2022-04-021-24/+42
| | | | | | | | | | * lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Put the boilerplate at the end of the doc string.
* | Further tweaks to cl--generic-describeLars Ingebrigtsen2022-04-021-1/+7
| | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Further tweak the look of the implementation output.
* | cl-generic: Rework obsolescence checks for defmethodStefan Monnier2022-04-012-18/+15
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Silence obsolescence warnings in the included methods. (cl-defmethod): Reuse standard obsolescence checks. * lisp/emacs-lisp/seq.el (seq-contains): Remove redundant `with-suppressed-warnings`.
* | OClosure: Add support for defmethod dispatchStefan Monnier2022-04-013-18/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/oclosure.el (oclosure--class): Add slot `allparents`. (oclosure--class-make): Add corresponding arg `allparents`. (oclosure, oclosure--build-class): Pass the new arg to the constructor. (oclosure--define): Make the predicate function understand subtyping. * lisp/emacs-lisp/cl-preloaded.el (cl--class-allparents): Move from `cl-generic.el`. * lisp/emacs-lisp/cl-generic.el (cl--generic-class-parents): Move to `cl-preloaded.el` and rename to `cl--class-allparents`. Adjust all callers. (cl--generic-oclosure-tag, cl-generic--oclosure-specializers): New functions. (cl-generic-generalizers) <oclosure-struct>: New generalizer. * test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test-gen): New generic function. (oclosure-test): Add test for dispatch on oclosure types.
* | Tweak how functions are formatted in Implementation in *Help*Lars Ingebrigtsen2022-03-311-1/+1
| | | | | | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Include the function name in the implementations (bug#54628). This clarifies what we're talking about here, and avoids getting (function ...) translated into #'...
* | cl-generic: Use OClosures for `cl--generic-isnot-nnm-p`Stefan Monnier2022-03-302-70/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrite the handling of `cl-no-next-method` to get rid of the hideous hack used in `cl--generic-isnot-nnm-p` and also to try and move some of the cost to the construction of the effective method rather than its invocation. This speeds up method calls measurably when there's a `cl-call-next-method` in the body. * lisp/loadup.el ("emacs-lisp/oclosure"): Load. * lisp/emacs-lisp/oclosure.el (oclosure-define): Remove workaround now that we're preloaded. * lisp/emacs-lisp/cl-generic.el (cl--generic-method): Rename `uses-cnm` to `call-con` to reflect it's not a boolean any more. (cl-defmethod): Adjust to the new name and new values. (cl-generic-define-method): Adjust to the new name. (cl--generic-lambda): Use the new `curried` calling convention. (cl--generic-no-next-method-function): Delete function. (cl--generic-nnm): New type. (cl-generic-call-method): Rewrite to support the various calling conventions. (cl--generic-nnm-sample, cl--generic-cnm-sample): Delete consts. (cl--generic-isnot-nnm-p): Rewrite using `oclosure-type`. (cl--generic-method-info): Add support for new calling convention.
* | EIEIO tests: Fix failure when `eieio-core.el` is interpretedStefan Monnier2022-03-301-3/+3
| | | | | | | | | | * lisp/emacs-lisp/eieio-core.el (eieio--validate-slot-value) (eieio--slot-name-index): Use the `cl--class` accessor functions.
* | * lisp/emacs-lisp/oclosure.el (oclosure--define): AutoloadStefan Monnier2022-03-291-0/+1
| |
* | Temporarily fix the oclosure bootstrapPo Lu2022-03-291-0/+2
| | | | | | | | | | | | * lisp/emacs-lisp/oclosure.el (oclosure-define): Load oclosure from source if `oclosure--define' is not defined during byte compilation.