summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* Add `union' and `intersection' to rx (bug#37849)Mattias Engdegård2019-12-101-95/+214
| | | | | | | | | | | | | | | | | | | | | | These character set operations, together with `not' for set complement, improve the compositionality of rx, and reduce duplication in complicated cases. Named character classes are not permitted in set operations. * lisp/emacs-lisp/rx.el (rx--translate-any): Split into multiple functions. (rx--foldl, rx--parse-any, rx--generate-alt, rx--intervals-to-alt) (rx--complement-intervals, rx--intersect-intervals) (rx--union-intervals, rx--charset-intervals, rx--charset-union) (rx--charset-all, rx--charset-intersection, rx--translate-union) (rx--translate-intersection): New. (rx--translate-not, rx--translate-form, rx--builtin-forms, rx): Add `union' and `intersection'. * test/lisp/emacs-lisp/rx-tests.el (rx-union ,rx-def-in-union) (rx-intersection, rx-def-in-intersection): New tests. * doc/lispref/searching.texi (Rx Constructs): * etc/NEWS: Document `union' and `intersection'.
* Spelling fixesPaul Eggert2019-12-092-2/+2
|
* * lisp/emacs-lisp/map-ynp.el (read-answer): Use [remap self-insert-command]Juri Linkov2019-12-101-1/+1
| | | | | | This reverts the last change that replaced [remap self-insert-command] with [t]. The user should have freedom of using any command in the minibuffer. (bug#32738)
* * lisp/emacs-lisp/map-ynp.el (read-answer): Allow more SHORT-ANSWER types.Juri Linkov2019-12-091-5/+18
| | | | | | | Treat SHORT-ANSWER as a character is characterp returns non-nil. Otherwise, use key-description to print it. Use catch-all [t] in keymap instead of [remap self-insert-command]. (bug#32738)
* Don't use the return value of 'push'Mattias Engdegård2019-12-041-1/+1
| | | | | | | Although 'push' returns the modified list, it isn't actually documented to do so, so don't rely on it. * lisp/emacs-lisp/rx.el (rx--translate-any): Add progn.
* Avoid duplicated character classes in rxMattias Engdegård2019-12-031-1/+3
| | | | | | | | For example, (any digit digit) should produce "[[:digit:]]", not "[[:digit:][:digit:]]". * lisp/emacs-lisp/rx.el (rx--translate-any): Deduplicate character classes. * test/lisp/emacs-lisp/rx-tests.el (rx-any): Add test case.
* New functions window-state-buffers and tab-bar-get-buffer-tab (bug#38354)Juri Linkov2019-12-031-0/+1
| | | | | | | | | | * lisp/window.el (window-state-buffers): New function. * lisp/tab-bar.el (tab-bar-get-buffer-tab): New function. * lisp/emacs-lisp/seq.el (seq-some): Add autoload cookie. * lisp/desktop.el (desktop-buffers-not-to-save-function): New variable. (desktop-save-buffer-p): Use it.
* Use run-with-idle-timer instead of debounce for responsive image scaling.Juri Linkov2019-11-301-44/+0
| | | | | | | | | | | | | | | * lisp/emacs-lisp/timer.el (debounce, debounce-reduce): Revert macro addition. https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01133.html * lisp/image.el (image-increase-size, image-decrease-size): Use run-with-idle-timer. (image--change-size): Rename back from image--change-size-function. * lisp/image-mode.el (image-mode--setup-mode): Remove hooks window-size-change-functions and window-selection-change-functions (bug#32672) (image-fit-to-window): Rename from image--window-change-function. (image--window-state-change): Rename from image--window-change. Use run-with-idle-timer.
* Improve errors & warnings due to fancy quoted vars (Bug#32939)Noam Postavsky2019-11-283-5/+29
| | | | | | | | | | | | | | | | | | | | | | | | Add some hints to the message for byte compiler free & unused variable warnings, and 'void-variable' errors where the variable has confusable quote characters in it. * lisp/help.el (uni-confusables), uni-confusables-regexp): New constants. (help-command-error-confusable-suggestions): New function, added to `command-error-function'. (help-uni-confusable-suggestions): New function. * lisp/emacs-lisp/bytecomp.el (byte-compile-variable-ref): * lisp/emacs-lisp/cconv.el (cconv--analyze-use): Use it. * lisp/emacs-lisp/lisp-mode.el (lisp--match-confusable-symbol-character): New function. (lisp-fdefs): Use it to fontify confusable characters with font-lock-warning-face when they occur in symbol names. * doc/lispref/modes.texi (Faces for Font Lock): * doc/lispref/objects.texi (Basic Char Syntax): Recommend backslash escaping of confusable characters, and mention new fontification. * etc/NEWS: Announce the new fontification behavior. * test/lisp/emacs-lisp/lisp-mode-tests.el (lisp-fontify-confusables): New test.
* Use new macro debounce-reduce to make mouse scaling of images more responsiveJuri Linkov2019-11-241-0/+44
| | | | | | | | | | * lisp/emacs-lisp/timer.el (debounce, debounce-reduce): New macros. * lisp/image.el (image-increase-size, image-decrease-size): Use funcall to call image--change-size-function. (image--change-size-function): Move code from defun of image--change-size to defvar that has the value of lambda returned from debounce-reduce. (Bug#38187)
* Fix edebug instrumentation removing from advised functionsMichael Heerdegen2019-11-231-6/+22
| | | | | * lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): Handle advised functions correctly.
* Refix conditional step clauses in cl-loopdickmao2019-11-221-59/+37
| | | | | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl--loop-bindings, cl--loop-symbol-macs, cl-loop): Add cl--loop-conditions, remove cl--loop-guard-cond. (cl--push-clause-loop-body): Apply clause to both cl--loop-conditions and cl--loop-body (cl--parse-loop-clause): Use cl--push-clause-loop-body. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-loop-and-assignment): Use docstring. (cl-macs-loop-for-as-arith): Removed expected failure. (cl-macs-loop-conditional-step-clauses): Add some tests (bug#29799).
* Fix uses of inhibit-message in package.elEli Zaretskii2019-11-221-5/+1
| | | | | | | | * lisp/emacs-lisp/package.el (package-generate-autoloads) (package--compile, package--save-selected-packages): Don't use 'inhibit-message' to bind 'noninteractive' and 'save-silently', since 'inhibit-message' already disables all messages. (Bug#38264)
* * lisp/emacs-lisp/smie.el (smie-next-sexp): Fix bug#38255Stefan Monnier2019-11-211-1/+5
| | | | | | Handle the case where the token is not in `smie-grammar`, either because the caller is making an error, or because it's a paren-like token that's not handled in the grammar but directly via the syntax tables.
* Make pp-buffer into a commandLars Ingebrigtsen2019-11-211-0/+1
| | | | * lisp/emacs-lisp/pp.el (pp-buffer): Make into a command (bug#38306).
* Make with-suppressed-warnings work for macros, tooLars Ingebrigtsen2019-11-201-1/+1
| | | | | | * lisp/emacs-lisp/macroexp.el (macroexp-macroexpand): Pass the macro/alias symbol on to byte-compile-warning-enabled-p so that with-suppressed-warnings works for macros, too.
* Fix cl-prettyexpand in the non-FULL caseLars Ingebrigtsen2019-11-181-9/+7
| | | | | | | | * lisp/emacs-lisp/cl-extra.el (cl-prettyexpand): This function has apparently not worked for at least a couple of decades (bug#38206) unless supplied with a FULL parameter. Make the FULL parameter obsolete and make the function always work as it did with a non-nil FULL.
* Make edebug-remove-instrumentation remove macro instrumentationLars Ingebrigtsen2019-11-151-2/+3
| | | | | | * lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): Macros can also have edebug instrumentation, so remove that as well (bug#38195).
* Allow using edebug-remove-instrumentation more fine-grainedLars Ingebrigtsen2019-11-141-17/+31
| | | | | | * lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): Prompt the user for what functions to remove instrumentation from a la cancel-edebug-on-entry (bug#38195).
* * lisp/emacs-lisp/easymenu.el (easy-menu-make-symbol): Fix last changeStefan Monnier2019-11-121-1/+1
|
* Fix some quoting glitches in doc stringsPaul Eggert2019-11-111-3/+3
|
* Document Lisp floats a bit betterPaul Eggert2019-11-101-9/+7
| | | | | | | | | | | | | * doc/lispref/numbers.texi (Float Basics): * doc/misc/cl.texi (Implementation Parameters): * lisp/emacs-lisp/cl-lib.el (cl-most-positive-float) (cl-least-positive-float) (cl-least-positive-normalized-float, cl-float-epsilon) (cl-float-negative-epsilon): Document IEEE floating point better. Don’t suggest that Emacs might use some floating-point format other than IEEE format, as Emacs currently assumes IEEE in several places and there seems little point in removing those assumptions.
* * lisp/autorevert.el: Use 'minibuffer-message' to not obscure the prompt.Juri Linkov2019-11-101-1/+1
| | | | | | | | | | | * lisp/autorevert.el (auto-revert-handler): Use 'minibuffer-message' instead of 'message'. Call it from the original window's buffer that in case of the minibuffer should be current, so minibuffer-message could add a message to it. (Bug#34614) * lisp/emacs-lisp/ert-x.el (ert--make-message-advice): Add nil to the list of values to not use for format-message, because minibuffer-message calls 'message' with nil argument, and tests fail.
* Add CHARS arg to read-char-from-minibuffer compatible with read-char-choice.Juri Linkov2019-11-101-3/+3
| | | | | | | | | | | | | | | * lisp/simple.el (read-char-history): Rename from read-char-from-minibuffer-history. (Bug#38076) (read-char-from-minibuffer-insert-char): Rename from read-char-from-minibuffer-self-insert. (read-char-from-minibuffer-map-hash): New defconst. (read-char-from-minibuffer-insert-other): New command. (read-char-from-minibuffer): Add optional args CHARS and HISTORY. (zap-to-char): Use 'read-char-history as HISTORY arg of read-char-from-minibuffer. * lisp/emacs-lisp/map-ynp.el (read-answer): Use sit-for instead of sleep-for. Replace short answer history yes-or-no-p-history with read-char-history.
* * lisp/emacs-lisp/easymenu.el: Don't quote lambdasStefan Monnier2019-11-071-6/+6
| | | | | (easy-menu-do-define, easy-menu-make-symbol): Replace `(lambda ..) with a closure.
* Clean up major mode check in package-menu-modeStefan Kangas2019-11-071-8/+20
| | | | | | | | | | | | | | * lisp/emacs-lisp/package.el (package--ensure-package-menu-mode): Extract function to warn about incorrect major mode... (package-menu-toggle-hiding, package-menu-refresh) (package-menu-execute): ...from here. (package-menu--mark-upgrades-1): And here, but move call... (package-menu-mark-upgrades): ...here instead. (package-menu-hide-package, package-menu-mark-delete) (package-menu-mark-install, package-menu-mark-unmark) (package-menu-quick-help, package-menu-get-status) (package-menu-filter-by-keyword, package-menu-filter-by-name) (package-menu-clear-filter): Add call to new function. (Bug#37891)
* Fix problem with my last commit in package.elStefan Kangas2019-11-061-3/+3
| | | | | | * lisp/emacs-lisp/package.el (package-menu--refresh-archives): Rename from duplicated name package-menu--refresh. (Bug#38084) (package-menu-mode, list-packages): Use new name.
* Avoid changing value of defcustom package-enable-at-startupStefan Kangas2019-11-061-6/+9
| | | | | | | | | | | | | | * lisp/emacs-lisp/package.el (package--activated): New variable to avoid changing value of defcustom 'package-enable-at-startup'. (package-initialize): Don't set 'package-enable-at-startup'. (package-initialize, package-activate-all): Set 'package--activated' instead of 'package-enable-at-startup'. (package--initialized): Add doc string. * lisp/startup.el (command-line): Check if 'package--activated' is non-nil before activating packages. * doc/lispref/package.texi (Packaging Basics): Update docs.
* Make 'g' refresh package data in package menuStefan Kangas2019-11-061-6/+11
| | | | | | | | | | | * lisp/emacs-lisp/package.el (package-menu--refresh): Rename from 'package-menu-refresh', make internal and non-interactive. (package-menu-mode-map, package-menu-mode-menu, package-menu-mode) (list-packages): Use the above. (Bug#35504) (package-menu-refresh): Redefine as obsolete fuction alias for 'revert-buffer'. * doc/emacs/package.texi (Package Menu): Document it. * etc/NEWS: Announce it.
* Declare unused macro package--push obsoleteStefan Kangas2019-11-051-0/+1
| | | | * lisp/emacs-lisp/package.el (package--push): Declare obsolete.
* * lisp/tab-bar.el: Filter out non-persistent tab parameters from frameset.Juri Linkov2019-11-031-0/+1
| | | | | | | | | | * lisp/tab-bar.el (frameset-filter-tabs): New function added to 'frameset-filter-alist' for frame parameter 'tabs'. (tab-bar--tab): Remove ws-bl/ws-bbl that are not needed because frameset doesn't save frame buffer-list to desktop anyway. (tab-bar-select-tab): Remove ws-bl/ws-bbl related code. * lisp/emacs-lisp/seq.el (seq-reduce): Add autoload cookie.
* Don't refuse to install packages without a "footer line"Stefan Kangas2019-11-021-3/+6
| | | | | | * lisp/emacs-lisp/package.el (package-buffer-info): Don't signal an error when the "footer line" is missing. Warn only. (Bug#26490) * etc/NEWS: Announce it.
* Really enable setting a breakpoint without instrumenting firstLars Ingebrigtsen2019-11-011-1/+3
| | | | | * lisp/emacs-lisp/edebug.el (edebug-set-breakpoint): Really enable setting a breakpoint without instrumenting first (bug#23469).
* Revert "Move description of value to syntax-ppss function."Lars Ingebrigtsen2019-10-301-20/+0
| | | | | | This reverts commit 305dbc7e2be05748039aacb1a3d697f6f64bed4c. Both of the functions in question are used a lot in the sources, so move it back to the more basic function.
* Add a new ppss structure for syntax-ppss dataLars Ingebrigtsen2019-10-301-0/+34
| | | | | * lisp/emacs-lisp/syntax.el (ppss): Add a new structure to provide accessors to the syntax-ppss data.
* Move description of value to syntax-ppss function.Lars Ingebrigtsen2019-10-301-0/+20
| | | | | | | | | * lisp/emacs-lisp/syntax.el (syntax-ppss): Move the description of the return value from... * src/syntax.c (Fparse_partial_sexp): ... here because `syntax-ppss' is what's called over the place, and jumping through an indirection to get to the value description is inconvenient.
* * lisp/tab-bar.el: Store point position and frame buffer-lists in tab.Juri Linkov2019-10-301-0/+2
| | | | | | | | | | | | | | | | | * lisp/tab-bar.el (tab-bar--tab): Store additionally point-marker, frame parameters buffer-list and buried-buffer-list, both for wc and ws. Use seq-filter. (tab-bar-select-tab): Restore point-marker after restoring window-configuration. Also restore frame parameters buffer-list and buried-buffer-list both for window-configuration and window-state. (tab-bar-history-limit, tab-bar-history--minibuffer-depth): New variables. (tab-bar-history-current): Rename from tab-bar-history--pre-change. (tab-bar-history--pre-change): Set tab-bar-history-current. (tab-bar--history-change): Use seq-take for tab-bar-history-limit. (tab-bar-history-back, tab-bar-history-forward): Restore point-marker. (tab-bar-list-noselect): Use seq-remove. * lisp/emacs-lisp/seq.el (seq-take, seq-filter): Add autoload cookie.
* * lisp/emacs-lisp/seq.el: Don't require cl-lib.Stefan Monnier2019-10-272-22/+23
| | | | | (seq-subseq): Move cl-subseq's code here instyead of calling it. * lisp/emacs-lisp/cl-extra.el (cl-subseq): Use seq-subseq.
* Fix point position after revert-buffer in tabulated-list modeEli Zaretskii2019-10-271-1/+6
| | | | | | | | | | | * lisp/emacs-lisp/tabulated-list.el (tabulated-list-print): Don't use count-screen-lines, as it is unreliable when lines are truncated and the region ends before a newline (the root cause is in vertical-motion, but is very hard to fix there). Instead, use vertical-motion directly, as the problems with counting/not counting the newline that ends the region are not relevant to what we need in this function, which is simply the number of the current window line. (Bug#37941)
* Expand rx definitions inside (not ...)Mattias Engdegård2019-10-271-0/+3
| | | | | | | | | * lisp/emacs-lisp/rx.el (rx--translate-not): * test/lisp/emacs-lisp/rx-tests.el (rx-not, rx-def-in-not): * doc/lispref/searching.texi (Rx Constructs, Extending Rx): Allow user-defined rx constructs to be expanded inside (not ...) forms, for better composability (bug#37849).
* * lisp/tab-bar.el (tab-bar-switch-to-recent-tab): New command.Juri Linkov2019-10-271-0/+2
| | | | | | | | | (tab-recent): Alias to tab-bar-switch-to-recent-tab. (tab-bar--tab-index-recent): New internal function. (tab-bar-close-tab-select): Add new default option 'recent'. (tab-bar-close-tab): Handle it. * lisp/emacs-lisp/seq.el (seq-sort-by, seq-remove): Add autoload.
* rx.el: Refactor user-definition expansionMattias Engdegård2019-10-241-41/+56
| | | | | | * lisp/emacs-lisp/rx.el (rx--translate-not): Simplify structure. * lisp/emacs-lisp/rx.el (rx--expand-def): New. (rx--translate-symbol, rx--translate-form): Use rx--expand-def.
* rx doc string tweaksMattias Engdegård2019-10-221-3/+4
| | | | | * lisp/emacs-lisp/rx.el (rx--translate-seq, rx--translate-or, rx): Say "zero or more" instead of "one or more" where applicable.
* Make edebug-eval-last-sexp interactively take a zero prefixLars Ingebrigtsen2019-10-221-10/+29
| | | | | | * lisp/emacs-lisp/edebug.el (edebug-eval-last-sexp): Make the zero prefix work analogously to in eval-last-sexp (bug#28895). (edebug-eval-print-last-sexp): Ditto.
* * lisp/emacs-lisp/cursor-sensor.el: Make it possible to reveal invisible textStefan Monnier2019-10-211-8/+18
| | | | | (cursor-sensor-mode): Hook into post-command-hook as well. (cursor-sensor--detect): Make argument optional.
* Tiny clean-up of previous edebug patchLars Ingebrigtsen2019-10-211-1/+1
| | | | | * lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): Clean up code slightly.
* Ensure we always remove the breakpoint overlaysLars Ingebrigtsen2019-10-211-1/+1
| | | | | | * lisp/emacs-lisp/edebug.el (edebug--display-1): Remove the overlays here -- this cleans up after exiting no matter how we exited.
* Add fringe markers to edebug breakpointsLars Ingebrigtsen2019-10-211-5/+18
| | | | | | * lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): Set a fringe element to mark the breakpoint. (edebug-breakpoint): Fringe marker.
* Don't try to add nil packages on refreshStefan Kangas2019-10-211-1/+4
| | | | | | | | | * lisp/emacs-lisp/package.el (package-read-archive-contents): Don't try to add nil entries. Warn instead. (Bug#28502) * test/lisp/emacs-lisp/package-tests.el (package-test-update-archives/ignore-nil-entry): New test. * test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents: New file.
* Add a command to toggle an edebug breakpointLars Ingebrigtsen2019-10-201-4/+39
| | | | | | | | | | * doc/lispref/edebug.texi (Breakpoints): Document this. * lisp/emacs-lisp/edebug.el (edebug-disabled-breakpoint): New face (bug#23472). (edebug-enabled-breakpoint): Rename. (edebug--overlay-breakpoints): Use the new face. (edebug-toggle-disable-breakpoint): New command and keystroke.