summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* 'assoc' is not side-effect-free; constprop its pure subsetMattias Engdegård2020-10-311-6/+8
| | | | | | | | | | | Since a supplied test function can do anything, assoc is not side-effect-free (bug#44018). However, with only two arguments it is pure and should be optimised accordingly. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Remove 'assoc'. (byte-optimize-assoc): Constant-propagate through 2-arg assoc calls. * test/lisp/emacs-lisp/bytecomp-tests.el (byte-opt-testsuite-arith-data): Add test cases.
* Trim and explain set of safe forms for 'unsafep' (bug#44018)Mattias Engdegård2020-10-311-4/+28
| | | | | | | | | | | | | | | * lisp/emacs-lisp/unsafep.el: Add comment explaining the policy for which forms can be considered 'safe' in the sense of unsafep. Remove ones that didn't make the cut: play-sound-file (large attack surface) catch, throw (alter program flow, inject data) replace-regexp-in-string (execute arbitary code) error, signal (deceptive messages) * test/lisp/emacs-lisp/unsafep-tests.el (unsafep-tests--unsafe): Add test cases. * etc/NEWS: Announce the change.
* Shoosh byte-compilation warning in lisp/emacs-lisp/eldoc.elJoão Távora2020-10-301-2/+3
| | | | | | | | | | Per bug#43609, elisp-eldoc-documentation-function is again in master, but since it's now officially obsoleted, this backward compatibility shim in eldoc--eval-expression-setup shouldn't unnecessarily trigger warnings in master's code. * lisp/emacs-lisp/eldoc.el (eldoc--eval-expression-setup): Shoosh by-compilation warning.
* Don't make ElDoc doc buffer visible in buffer list by defaultJoão Távora2020-10-301-18/+30
| | | | | | | | | | Fixes: bug#44334 * lisp/emacs-lisp/eldoc.el (eldoc-doc-buffer): No longer take INTERACTIVE arg. Show buffer if invisible. (eldoc--format-doc-buffer): Don't change buffer visibility. (eldoc-display-in-buffer): Show buffer if invisible if by calling eldoc-doc-buffer.
* Clarify point position after text-property-searchStefan Kangas2020-10-301-6/+6
| | | | | | | | | | * lisp/emacs-lisp/text-property-search.el (text-property-search-forward, text-property-search-backward): Doc fix to clarify placement of point after search. * test/lisp/emacs-lisp/text-property-search-tests.el (text-property-search--pos-test): New defun. (text-property-search-forward-point-at-beginning) (text-property-search-backward-point-at-end): New test.
* Make list-timers do sub-second timesLars Ingebrigtsen2020-10-301-2/+3
| | | | | * lisp/emacs-lisp/timer-list.el (list-timers): Do sub-second times (bug#39956).
* ; Remove spurious FIXMEs in my last commitStefan Kangas2020-10-301-2/+0
|
* Add shortdoc navigation commandsStefan Kangas2020-10-301-3/+53
| | | | | | | | | | | | * lisp/emacs-lisp/shortdoc.el (text-property-search): Require. (shortdoc-mode): New major mode. (shortdoc-mode-map): New variable. (shortdoc--goto-section): New macro. (shortdoc-next, shortdoc-previous, shortdoc-next-section) (shortdoc-previous-section): New commands. (shortdoc-display-group): Use new shortdoc-models. Propertize section header. (shortdoc--display-function): Propertize function header.
* ; * lisp/emacs-lisp/shortdoc.el (regexp): less contrived rx exampleMattias Engdegård2020-10-281-1/+1
|
* Run substitute-command-keys on shortdoc section headingsStefan Kangas2020-10-281-1/+1
| | | | | * lisp/emacs-lisp/shortdoc.el (shortdoc-display-group): Run substitute-command-keys on section headings before displaying.
* Extend the regexp shortdoc groupStefan Kangas2020-10-281-10/+34
| | | | | * lisp/emacs-lisp/shortdoc.el (regexp): New section "Match Data"; add save-match-data. New section "The `rx' Structured Regexp Notation".
* Display times in a more human-readable way in list-timersLars Ingebrigtsen2020-10-281-18/+19
| | | | | * lisp/emacs-lisp/timer-list.el (list-timers): Format the intervals in a more human-readable way (bug#39956).
* ERT: escape control characters in pretty-printed error outputMattias Engdegård2020-10-271-1/+2
| | | | | | * lisp/emacs-lisp/ert.el (ert--pp-with-indentation-and-newline): Escape control characters which would otherwise be blasted directly to the terminal (when running noninteractively) with unpleasant results.
* Don't leak result of nested byte-compilation to outer levelPaul Pogonyshev2020-10-271-2/+1
| | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Bind `byte-compiler-error-flag' instead of setting it (bug#41065). This fixes a problem of "leaking" the flag when compiling something that then compiles something that errors out (i.e., an "inner" compile).
* Make the -modes variable autoloadedLars Ingebrigtsen2020-10-261-19/+19
| | | | | * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Make the -modes variable be autoloaded.
* Implement a :predicate parameter for globalized minor modesLars Ingebrigtsen2020-10-261-19/+86
| | | | | | | | | * doc/lispref/modes.texi (Defining Minor Modes): Describe the new :predicate keyword (bug#44232). * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Allow a new :predicate keyword. (easy-mmode--globalized-predicate-p): New function.
* Tweak how shortdocs are displayedLars Ingebrigtsen2020-10-261-16/+18
| | | | | | | | | * lisp/emacs-lisp/shortdoc.el (shortdoc-example): Removed. (shortdoc-section): Remove colors. (shortdoc-separator): New face. (shortdoc-display-group, shortdoc--display-function): Don't use background colours, because that makes things harder to read. Separate with a horizontal line instead.
* Revert "Don't consider play-sound-file to be a 'safe' function (bug#44018)"Mattias Engdegård2020-10-261-1/+1
| | | | This reverts commit cdb3c9d662c772ce25ea4d803eccd2c9e6a6ae99.
* Don't consider play-sound-file to be a 'safe' function (bug#44018)Mattias Engdegård2020-10-261-1/+1
| | | | | | | | | While there are currently no known security holes in play-sound-file, the attack surface is considerable and historically audio file processing has had more than its share of security problems; the benefit to risk ratio is low. * lisp/emacs-lisp/unsafep.el: Don't mark play-sound-file as safe.
* Add section "Replacing Match" to the regexp shortdoc groupStefan Kangas2020-10-251-0/+7
| | | | * lisp/emacs-lisp/shortdoc.el (regexp): New section "Replacing Match".
* Remove some Emacs 19 compat code and referencesStefan Kangas2020-10-251-9/+8
| | | | | | | | | | | | * lisp/progmodes/sql.el: * lisp/mh-e/mh-show.el (mh-display-msg): Remove Emacs 19 compat code. * lisp/emacs-lisp/edebug.el (edebug-mark-marker): Make into obsolete alias for mark-marker. (edebug--display-1, edebug-bounce-point) (edebug-outside-excursion): Adjust callers. * lisp/net/snmp-mode.el: * lisp/forms.el: Remove references to Emacs 19. (forms-use-text-properties): Doc fix.
* Fix problem when replacing the final char in checkdocLars Ingebrigtsen2020-10-251-1/+1
| | | | | | * lisp/emacs-lisp/checkdoc.el (checkdoc-autofix-ask-replace): Ensure that the end-of-doc-string marker is really at the end, even if we replace the final " char in the string (bug#44201).
* Add shortdoc group for alistStefan Kangas2020-10-251-0/+39
| | | | * lisp/emacs-lisp/shortdoc.el (alist): New shortdoc group.
* Add shortdoc group for hash-tableStefan Kangas2020-10-251-0/+31
| | | | * lisp/emacs-lisp/shortdoc.el (hash-table): New shortdoc group.
* Rework semantics of eldoc-echo-are-use-multiline-pJoão Távora2020-10-241-57/+61
| | | | | | | | | | Per bug#43543. Now uses logical lines, not visual lines. * lisp/emacs-lisp/eldoc.el (eldoc-echo-area-use-multiline-p): Rework semantics. (eldoc--echo-area-substring): New helper. (eldoc--echo-area-prefer-doc-buffer-p): New helper. (eldoc-display-in-echo-area): Rework using new helpers.
* Rename ElDoc user option controlling display of truncation noticeJoão Távora2020-10-241-3/+3
| | | | | | | | | | | | | | | The new name makes it consistent with other variables controlling the display of ElDoc documentation in the echo area. Per bug#43543. * etc/NEWS (Eldoc): Rename eldoc-display-truncation-message to eldoc-echo-area-display-truncation-message. * lisp/emacs-lisp/eldoc.el (eldoc-echo-area-display-truncation-message): Rename from eldoc-display-truncation-message. (eldoc-display-in-echo-area): Use new variable name.
* Rework eldoc-echo-area-prefer-doc-buffer (bug#42532)João Távora2020-10-241-14/+25
| | | | | | | | * lisp/emacs-lisp/eldoc.el: (eldoc-echo-area-prefer-doc-buffer): Rename from eldoc-echo-area-prefer-doc-buffer (eldoc-display-in-echo-area): Rework to honour eldoc-echo-area-prefer-doc-buffer.
* Introduce eldoc-display-functionsJoão Távora2020-10-241-111/+157
| | | | | | | | | | | | | | | | | | | | See bug#43609. * lisp/emacs-lisp/eldoc.el (eldoc--request-state): Add comment. (eldoc--last-request-state): No longer buffer-local. (eldoc--request-docs-p): Delete. (eldoc-display-functions): New user variable. (eldoc--doc-buffer-docs): New variable. (eldoc-display-message-p): Rework. (eldoc--format-doc-buffer): Rework from eldoc--handle-docs. (eldoc-display-in-echo-area, eldoc-display-in-buffer): New user-visible function. (eldoc--invoke-strategy): Take INTERACTIVE arg. Invoke eldoc-display-in-buffer (eldoc-print-current-symbol-info): Simplify. (Version): Bump to 1.11.0 * etc/NEWS: Mention eldoc-display-functions.
* Revert "Use lexical-binding in bindat.el"Stefan Kangas2020-10-241-85/+89
| | | | | | | | | This reverts commit a497b8e4a41e3223089654da4b36d0fdd51ce555. This conversion to lexical-binding broke the eval specification, documented in the ELisp manual. We will probably want to add tests for that before we can confidently convert this to lexical-binding. Problem reported by Mattias Engdegård <mattiase@acm.org>.
* Use lexical-binding in copyright.el and add testsStefan Kangas2020-10-241-8/+1
| | | | | | * lisp/emacs-lisp/copyright.el: Use lexical-binding. Remove redundant :group args. * test/lisp/emacs-lisp/copyright-tests.el: New file.
* * lisp/emacs-lisp/pcase.el: Add "extensions" to keyword header.Stefan Kangas2020-10-231-1/+1
|
* ; * lisp/emacs-lisp/bindat.el (bindat-unpack): Fix typo.Stefan Kangas2020-10-211-1/+1
|
* Use lexical-binding in bindat.elStefan Kangas2020-10-211-91/+87
| | | | | | | | | | * lisp/emacs-lisp/bindat.el: Use lexical-binding. (bindat-raw, bindat-idx, bindat-unpack, bindat-pack): Adjust for lexical-binding. (bindat--unpack-group, bindat--length-group): Fix byte-compiler warning about unused variables last and vlen. (bindat--unpack-group, bindat--length-group, bindat--pack-group) (bindat-format-vector): Quote function symbols as such.
* Make more load-hooks obsolete (Bug#21563)Stefan Kangas2020-10-204-0/+8
| | | | | | | | | | | | | | | | | | | * lisp/progmodes/dcl-mode.el (dcl-mode): * lisp/progmodes/idlw-complete-structtag.el: Recommend with-eval-after-load instead of load-hooks. * lisp/calc/calc-ext.el (calc-ext-load-hook): * lisp/emacs-lisp/bytecomp.el (bytecomp-load-hook): * lisp/emacs-lisp/cl-extra.el (cl-extra-load-hook): * lisp/emacs-lisp/cl-macs.el (cl-macs-load-hook): * lisp/emacs-lisp/cl-seq.el (cl-seq-load-hook): * lisp/gnus/message.el (message-load-hook): * lisp/gnus/nnheader.el (nnheader-load-hook): * lisp/gnus/nnmail.el (nnmail-load-hook): * lisp/progmodes/dcl-mode.el (dcl-mode-load-hook): * lisp/textmodes/tex-mode.el (tex-mode-load-hook): * lisp/whitespace.el (whitespace-load-hook): Obsolete for with-eval-after-load. Note that these variables are never declared, but the byte-compiler will still warn about them if used.
* byte-compile-file: Make optional LOAD argument obsoleteStefan Kangas2020-10-201-6/+9
| | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Declare optional LOAD argument obsolete. Adjust callers. (Bug#38072) (byte-recompile-file): Declare optional LOAD argument obsolete. * doc/lispref/compile.texi (Compilation Functions): Update documentation to reflect above obsoletion. * etc/NEWS: Announce above obsoletion.
* Simplify syntax of shortdoc face specsBasil L. Contovounesios2020-10-201-7/+4
| | | | | | * lisp/emacs-lisp/shortdoc.el: Remove unused dependency. (shortdoc-section, shortdoc-example): Use newer (DISPLAY . PLIST) face spec syntax.
* Tweak the documentation for define-obsolete-variable-aliasLars Ingebrigtsen2020-10-201-4/+10
| | | | | | | | * doc/lispref/variables.texi (Variable Aliases): Actually describe the macro parameters (bug#44088). * lisp/emacs-lisp/byte-run.el (define-obsolete-variable-alias): Ditto (bug#44088).
* Preserve all `eval' elements from both .dir-locals filesLars Ingebrigtsen2020-10-201-0/+1
| | | | | * lisp/files.el (dir-locals-read-from-dir): Preserve all `eval' elements from both .dir-locals files (bug#44066).
* Add command package-menu-filter-upgradableStefan Kangas2020-10-191-0/+10
| | | | | | | * lisp/emacs-lisp/package.el (package-menu-filter-upgradable): New command. (Bug#41436) (package-menu-mode-map): Bind the new command. * doc/emacs/package.texi (Package Menu): Document the new command.
* Add "Old-" prefix to "Version" header in more casesStefan Kangas2020-10-182-2/+2
| | | | | These version numbers are historical accidents and not relevant today. Ref: https://lists.gnu.org/r/emacs-devel/2020-03/msg00080.html
* Merge from origin/emacs-27Glenn Morris2020-10-171-3/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 65078e0a76 * lisp/info.el (Info-hide-note-references): Doc fix. (Bug... 30305b543d Make lisp/progmodes/js.el dependent on CC Mode in the Make... c37b2a9b42 Yet another fix for 'set-minibuffer-message' 72dd911981 Fix posn-at-x-y in builds --without-x ace25f2066 Clarify the seq-reduce documentation 7d598e281d Make tramp-completion-reread-directory-timeout obsolete (B... 2c31ce18ea Fix 'message' when there's active minibuffer on another frame # Conflicts: # doc/misc/tramp.texi # etc/NEWS
| * Clarify the seq-reduce documentationLars Ingebrigtsen2020-10-151-3/+5
| | | | | | | | | | | | | | * doc/lispref/sequences.texi (Sequence Functions): Ditto. * lisp/emacs-lisp/seq.el (seq-reduce): Clarify the order of the arguments (bug#43995).
| * * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Doc tweakStefan Monnier2020-10-101-0/+4
| | | | | | | | | | | | Try and clarify the meaning of `init-value`. (cherry picked from commit 46c0f28c0e4e212687e90ec0ecb239d994105a19)
* | Add aid for finding missing dynamic variable declarationsMattias Engdegård2020-10-171-2/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Find lexical use of variables that are dynamically declared in other files by recording 'defvar' declarations in files that can be read in by the compiler in a second compilation. This is particularly useful when converting code to use lexical-binding. The facility is controlled by setting environment variables: EMACS_GENERATE_DYNVARS -- set to non-empty to generate a .dynvars file corresponding to each .elc. EMACS_DYNVARS_FILE -- set to the name of a .dynvars file to use as defvar information during compilation, enabling the new warnings. * lisp/emacs-lisp/bytecomp.el (byte-compile--known-dynamic-vars) (byte-compile--seen-defvars): New variables. (byte-compile-warning-types): Add lexical-dynamic warning. (byte-compile--load-dynvars, byte-compile--warn-lexical-dynamic): New functions. * lisp/emacs-lisp/bytecomp.el (byte-compile-file, byte-compile--declare-var) (byte-compile-lambda, byte-compile-bind): Add dynamic variable loads, dumps and checks. * doc/lispref/variables.texi (Converting to Lexical Binding): Document.
* | Remove some references to Emacs 18 and 19Stefan Kangas2020-10-161-1/+0
| | | | | | | | | | | | | | * doc/misc/forms.texi (Modifying Forms Contents, Error Messages): * lisp/arc-mode.el: * lisp/emacs-lisp/edebug.el (edebug-temp-display-freq-count): * lisp/type-break.el: Remove some references to Emacs 18 and 19.
* | * lisp/emacs-lisp/backquote.el: Use lexical binding.Mattias Engdegård2020-10-161-1/+1
| |
* | Add ert macros to get resource file names (Bug#43792)Stefan Kangas2020-10-161-0/+40
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/ert-x.el (subr-x): Require. (ert-resource-dir, ert-resource-file): New macros to get the file name of the resource directory belonging to a test. (ert-resource-dir-format, ert-resource-dir-trim-left-regexp) (ert-resource-dir-trim-right-regexp): New variables.
* | Make package-install-from-buffer maybe refresh the quickstart fileLars Ingebrigtsen2020-10-161-0/+1
| | | | | | | | | | | | * lisp/emacs-lisp/package.el (package-install-from-buffer): Refresh the quickstart file (bug#43237). This makes this command more consistent with package-install.
* | * lisp/emacs-lisp/warnings.el (display-warning): Don't be so negativeStefan Monnier2020-10-151-2/+1
| |
* | Don't display the warning buttons in bytecomp buffersLars Ingebrigtsen2020-10-151-1/+2
| | | | | | | | | | * lisp/emacs-lisp/warnings.el (display-warning): Don't do the buttons in bytecomp buffers.