summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* Add OClosures, a cross between functions and structsStefan Monnier2022-03-282-2/+538
| | | | | | | | | | | | | | | | | | We here just add the new type. It is not fully self-contained. It requires cooperation from `cconv.el` on the one hand, and it hijacks the docstring info to hold the type of OClosure objects. This does imply that OClosures can't have docstrings, tho this limitation will be lifted in subsequent patches. * lisp/emacs-lisp/oclosure.el: New file. * test/lisp/emacs-lisp/oclosure-tests.el: New file. * doc/lispref/functions.texi (OClosures): New section. * src/eval.c (Ffunction): Accept symbols instead of strings for docstrings. * src/doc.c (store_function_docstring): Avoid overwriting an OClosure type. * lisp/emacs-lisp/cconv.el (cconv--convert-function): Tweak ordering of captured variables. (cconv-convert): Add case for `oclosure--fix-type`.
* Improve pp-last-sexp ergonomicsLars Ingebrigtsen2022-03-251-0/+4
| | | | | | * lisp/emacs-lisp/pp.el (pp-last-sexp): Ignore ,@? before a sexp, because eval-ing that will always lead to an error (bug#54537).
* Handle invisible text in Eldoc when calculating sizeAugusto Stoffel2022-03-241-5/+8
| | | | | | | | | Co-authored-by: João Távora <joaotavora@gmail.com> * lisp/emacs-lisp/eldoc.el (eldoc--echo-area-substring, eldoc-display-in-echo-area): Take invisible text into consideration when counting lines to crop an echo-area message. (Version): Bump.
* Don't break autoload generation of `left-margin' isn't zeroLars Ingebrigtsen2022-03-211-0/+3
| | | | | * lisp/emacs-lisp/autoload.el (make-directory-autoloads): Fix autoload generation breakage is left-margin isn't zero (bug#54491).