summaryrefslogtreecommitdiff
path: root/doc/lispref
AgeCommit message (Collapse)Author
2026-05-30; Update the documentation of 'debug'Eli Zaretskii
2026-05-19; * doc/lispref/display.texi (Displaying Faces): Mention 'margin' face.Eli Zaretskii
2026-05-19; * doc/lispref/text.texi (Special Properties): Fix last change.Eli Zaretskii
2026-05-18doc/lispref/text.texi: Add complement to commit f4a1c006569fStefan Monnier
* doc/lispref/text.texi (Examining Properties): Mention the change in cursor-sensor-functions.
2026-05-16; * doc/lispref/variables.texi (Local Variables): Fix types (bug#81004).Eli Zaretskii
2026-05-16; * doc/lispref/variables.texi (Local Variables): Fix 'named-let'.Eli Zaretskii
2026-05-15; * doc/lispref/os.texi (Init File): Fix markup (bug#81049).Manuel Giraud
2026-05-13doc: Remove long obsolete references to `package-initialize`Stefan Monnier
Since Emacs-27, `package-initialize` is for internal use only, and callers should either call `package-activate-all` instead (cheaper and faster) or do nothing at all (because the other functions should trigger the needed initialization automatically as needed). * doc/lispref/package.texi (Packaging Basics): Delete `package-initialize`. * doc/misc/eglot.texi (Reporting bugs): Don't recommend using `package-initialize`. * doc/misc/org.org (Using Emacs packaging system): Simplify the command line since both `(require 'package)` and `(package-initialize)` are redundant here.
2026-05-05Introduce 'margin' face for window margin backgroundAndrea Alberti
A new basic face 'margin' is used for text displayed in the left and right margin areas, i.e., the areas typically used by VCS and LSP packages for per-line annotations. Its background defaults to the frame default, preserving existing behavior for users who do not customize it. * etc/NEWS: Document the new 'margin' face. * lisp/faces.el (margin): Add 'margin' face, inheriting from 'default'. * src/dispextern.h (face_id): Add MARGIN_FACE_ID. * src/xdisp.c (face_at_pos): Use 'margin' as the base face for strings displayed in margin areas so that they inherit the gutter background by default. (extend_face_to_end_of_line): Compute 'margin_fill_face_id' from the 'margin' face. Use while loops to explicitly fill all empty character slots in both left and right margins for both GUI and TTY branches. (display_line): Call 'extend_face_to_end_of_line' for beyond-EOB rows when the window has margins. Also extend the existing condition for text rows with empty margins to trigger when the 'margin' face background differs from the frame default, not only when the default face is remapped. * src/xfaces.c (realize_basic_faces): Realize 'margin' as a basic face to support face-remapping and efficient lookup. (Bug#80693)
2026-05-04nadvice.el: Make it easier to find how to change an interactive-formStefan Monnier
* lisp/emacs-lisp/nadvice.el (advice--how-alist): Add ':interactive-only'. * doc/lispref/functions.texi (Advice Combinators): Document it. (Core Advising Primitives): Use it.
2026-04-27; Fix minor issues in SQLite docsEli Zaretskii
* doc/lispref/text.texi (Database): Update description of 'sqlite-close'. (Bug#80908) * etc/NEWS: Fix SQLite entries.
2026-04-27Add treesit-query-with-fallbackYuan Fu
* lisp/treesit.el (treesit-font-lock-rules): Handle treesit-query-with-fallback. (treesit-query-with-fallback): New function. * doc/lispref/modes.texi (Parser-based Font Lock): Mention treesit-query-with-fallback.
2026-04-25; * doc/lispref/text.texi (Undo): Advice about restoring point.Eli Zaretskii
2026-04-24;; Clarify doc on 'dedicated' 'display-buffer' action alist entryMartin Rudalics
* doc/lispref/windows.texi (Buffer Display Action Alists): Clarify that only new windows can be marked as dedicated via the action alist entry.
2026-04-07; * doc/lispref/os.texi (Timers): Mention primitives that wait (bug#80755).Eli Zaretskii
2026-04-06; Improve documentation of 'window-prev-buffers'Eli Zaretskii
* doc/lispref/windows.texi (Window History): Document that 'window-prev-buffers' returns positions as markers. (Bug#80754)
2026-04-04; Improve documentation of 'make-temp-file'Eli Zaretskii
* doc/lispref/files.texi (Unique File Names): * lisp/files.el (make-temp-file): * src/fileio.c (Fmake_temp_file_internal): Doc fixes.
2026-04-02New macro setopt-local and function set-local (bug#80709)Stéphane Marks
'setopt-local' is the buffer local equivalent of 'setopt'. Unify 'setopt', 'setopt-local', 'setq-local', 'buffer-local-set-state' with 'setq' to signal 'wrong-number-of-arguments'. * lisp/cus-edit.el (setopt): Change error signal to 'wrong-number-of-arguments'. (setopt-local): New macro. (setopt--set-local): New function. * lisp/subr.el (set-local): New function. (setq-local, buffer-local-set-state): Signal 'wrong-number-of-arguments' rather than 'error'. * doc/emacs/custom.texi (Examining): Document 'setopt-local'. * etc/NEWS: Announce the new macro and function.
2026-03-28Merge remote-tracking branch 'bug#80297-extend-shortdoc-infrastructure'Stefan Monnier
2026-03-26Add predicate for initial_terminalBasil L. Contovounesios
This introduces the predicate frame-initial-p, which uses struct frame.output_method or struct terminal.type to detect initial_terminal without relying on its name (bug#80629). For some prior discussion, see: https://lists.gnu.org/r/emacs-devel/2019-12/msg00480.html https://lists.gnu.org/r/emacs-devel/2020-01/msg00120.html * doc/lispref/frames.texi (Frames): Document frame-initial-p. (Finding All Frames): Fix grammar. * etc/NEWS (Lisp Changes in Emacs 31.1): Announce frame-initial-p. * lisp/desktop.el (desktop--check-dont-save): * lisp/emacs-lisp/debug.el (debug): * lisp/frameset.el (frameset-restore): * lisp/menu-bar.el (menu-bar-update-buffers): * lisp/xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal): Use frame-initial-p instead of checking the "initial_terminal" name. * lisp/emacs-lisp/byte-opt.el: Mark frame-initial-p as error-free. * src/pgtkterm.c (pgtk_focus_changed): Use IS_DAEMON in place of Fdaemonp, thus also accepting a named daemon session. * src/terminal.c (decode_tty_terminal): Clarify commentary. (Fframe_initial_p): New function. (syms_of_terminal): Expose it. (init_initial_terminal): Update commentary now that menu-bar-update-buffers uses frame-initial-p (bug#53740). * test/lisp/xt-mouse-tests.el (with-xterm-mouse-mode): Simulate the lack of an initial terminal by overriding frame-initial-p now that turn-on-xterm-mouse-tracking-on-terminal uses it. * test/src/terminal-tests.el: New file.
2026-03-25Split up shortdoc functions and groups, fix their formatJens Schmidt
Move shortdoc group definitions from shortdoc.el to a separate file shortdoc-doc.el. Document shortdoc group format in a future-proof way and guide package authors on how to use shortdoc groups across past Emacs versions. * lisp/emacs-lisp/shortdoc-doc.el: New file. * lisp/emacs-lisp/shortdoc.el: Document shortdoc group format in a future-proof way. Require 'shortdoc-doc'. (shortdoc--keyword-plist-p): New function. (shortdoc--check): Update to check the documented shortdoc group format. (shortdoc--groups, define-short-documentation-group): Pull out of autoloaded 'progn'. (define-short-documentation-group): Report errors in terms of byte compiler warnings. (alist, map, string, file-name, file, hash-table, list, symbol) (comparison, vector, regexp, sequence, buffer, overlay, process, number) (text-properties, keymaps): Move group to shortdoc-doc.el. (shortdoc): Move alias to after function. (shortdoc-add-function): Add argument checks. * doc/lispref/tips.texi (Documentation Group Tips): New section. * doc/lispref/elisp.texi (Top): * doc/lispref/tips.texi (Tips): Add references to it. * doc/lispref/help.texi (Documentation Groups): Ditto, and add some concept index entries. (bug#80297)
2026-03-21; * doc/lispref/variables.texi (Void Variables): Add cross-reference.Eli Zaretskii
2026-03-20(Fmakunbound): Break aliasing, if present (bug#80538)Stefan Monnier
* src/data.c (Fmakunbound): Break aliasing, if present. * doc/lispref/variables.texi (Void Variables): Document it.
2026-03-19; Fix documentation of window-dimension functionsEli Zaretskii
* doc/lispref/windows.texi (Window Sizes): * src/window.c (Fwindow_body_height, Fwindow_total_height) (Fwindow_total_width, Fwindow_body_width): Clarify that window dimensions are returned in canonical columns and lines. (Bug#80620)
2026-03-15Merge remote-tracking branch 'origin/scratch/error-API'Stefan Monnier
2026-03-15; Tweak documentation for ensure-proper-list.Sean Whitton
2026-03-15; Minor doc improvements for 'let-alist'.Eshel Yaron
* doc/lispref/lists.texi: * lisp/emacs-lisp/let-alist.el (let-alist): Improve docs. Namely, clarify that 'let-alist' does not "see" symbols introduced by macro-expansion in its body, and that the generated code looks up symbols in the alist whether or not they are actually used in runtime. See also bug#79706 for some relevant discussion.
2026-03-15Add new function 'ensure-proper-list' (bug#80598)Philip Kaludercic
* doc/lispref/lists.texi (Building Lists): Document it. * etc/NEWS: Mention it. * lisp/emacs-lisp/shortdoc.el (list): Demonstrate it. * lisp/subr.el (ensure-proper-list): Add it.
2026-03-10(error-data): Delete functionStefan Monnier
Remove `error-data` from the new error API: it is not really compatible with a more abstract view of error descriptors, and in practice it seems to be used only in two ways (both of them rare): - To add some contextual info to an error. We should maybe add a dedicated support for that, but it's not clear what shape it should take, ideally (there was a discussion about with Alan and myself in emacs-devel a few years ago). - To do some other massaging whose correctness is dubious anyway. * doc/lispref/control.texi (Handling Errors): Remove `error-data`. * lisp/epa-file.el (epa-file--find-file-not-found-function): Don't use `error-data`. (epa-file--error-add-context): New function, extracted from `epa-file-insert-file-contents`. (epa-file-insert-file-contents): Use it instead of `error-data`. * lisp/subr.el (error-data): Delete function.
2026-03-10Improve the error APIStefan Monnier
Define new functions to manipulate error descriptors and add support for `signal` to *re*signal a previous error. * src/eval.c (Fsignal): Make the second arg optional and document the possibility of passing a whole error descriptor to re-signal it. (signal_or_quit): Fix a few corner case issues when DATA is `nil` and ERROR_SYMBOL is an error descriptor. * lisp/subr.el (error-type-p, error--p, error-type, error-data) (error-has-type-p, error-slot-value): New function. * doc/lispref/control.texi (Handling Errors): Prefer "error descriptor" to "error description". Use the new single-arg call to `signal` to re-throw an error. Document `error-type`, `error-data` and `error-slot-value`. (Error Symbols): Document the new functions `error-type-p` and `error-has-type-p`.
2026-03-05; Move unfill-paragraph to fill.el. Document it in (elisp)Filling.Sean Whitton
2026-03-05; * doc/lispref/control.texi (Conditionals): Improve explanation.Sean Whitton
2026-03-05Make 'frame-use-time' more reliable. (bug#80397)Stéphane Marks
Walking the window tree is more reliable than using the selected window. Implement 'get-mru-frame' on top of 'get-mru-frames' using 'frame-use-time'. * lisp/frame.el (frame-use-time): Change to walk the window tree for the specified frame. (get-mru-frames): New defun. (get-mru-frame): Change to call 'get-mru-frames'. * doc/lispref/frames.texi: Update documentation. * etc/NEWS: Update announcement.
2026-03-04Rename 'any' to 'member-if' and deprecate 'cl-member-if'Sean Whitton
* lisp/subr.el (any): Rename from this ... (member-if): ... to this. All uses changed. (any): New function alias. * lisp/emacs-lisp/cl-seq.el (cl-member-if): Mark obsolete. * lisp/obsolete/cl.el (member-if): Delete obsolete function alias. * doc/lispref/lists.texi (List Elements): * doc/misc/cl.texi (Lists as Sets): * etc/NEWS: Document the change.
2026-03-03Revert "Rename 'any' to 'member-if' and deprecate 'cl-member-if'"Mattias Engdegård
This reverts commit 2bdf15f6d8293b21234cd236f39ce68f62e1f6c3. There is no consensus for this change.
2026-03-03; * doc/lispref/control.texi (Conditionals): Improve example.Sean Whitton
2026-03-03Rename 'any' to 'member-if' and deprecate 'cl-member-if'Sean Whitton
* lisp/subr.el (any): Rename from this ... (member-if): ... to this. All uses changed. Implement '&key KEY-FN' for backwards compatibility. (any): New function alias. * lisp/emacs-lisp/cl-seq.el (cl-member-if): Make an alias for 'member-if'. * lisp/obsolete/cl.el (member-if): Delete obsolete function alias. * doc/lispref/lists.texi (List Elements): * doc/misc/cl.texi (Lists as Sets): * etc/NEWS: Document the change.
2026-03-03; Fix documentation of recent changes in treesit.elEli Zaretskii
* etc/NEWS: * doc/lispref/parsing.texi (User-defined Things): Fix punctuation, markup and typos.
2026-03-03; Suggest not using if-let* and friends to bind never-nil values.Sean Whitton
2026-03-02Make tree-sitter thing navigation handle nested parsersYuan Fu
Not a bug report, but this is from the emacs-devel thread "Tree-sitter: Transcendental things". Improve tree-sitter thing navigation functions to handle the case where there are multiple nested parsers in the buffer. Previously these functions just grab the node at point and are limited to the parser of that node. Now these functions will thoUrouly search through all parsers that covers point before giving up. * doc/lispref/parsing.texi: Mention the change. * lisp/treesit.el (treesit--some): New macro. (treesit--thing-sibling): Use the new macro, add a new PARSER parameter. (treesit-thing-prev): (treesit-thing-next): Add PARSER parameter. (treesit-thing-at): (treesit-navigate-thing): Use the new macro, add a new PARSER parameter. Also pass the PARSER arg to recursive calls and calls to treesit-thing-prev, etc.
2026-02-28Don’t stuff keyboard input uselesslyPaul Eggert
Also, document stuffing better. * src/keyboard.c (stuff_buffered_input): Give up on stuffing if it fails. * src/sysdep.c (stuff_char): Return failure indication.
2026-02-28Correct manual entry for string-lesspMattias Engdegård
* doc/lispref/strings.texi (Text Comparison): The old text was wrong: non-ASCII unibyte chars overlap part of Unicode.
2026-02-28Document that string ARG of 'kill-emacs' might not workEli Zaretskii
* src/emacs.c (Fkill_emacs): * doc/lispref/os.texi (Killing Emacs): Document that EXIT-DATA being a string doesn't always work. (Bug#80435)
2026-02-28; Fix the documentation of 'overlays-in' etc.Eli Zaretskii
* src/buffer.c (Foverlays_in): * lisp/subr.el (remove-overlays): * doc/lispref/display.texi (Finding Overlays, Managing Overlays): * etc/NEWS: Improve the documentation of recent changes in behavior of 'overlays-in' and 'remove-overlays'. (Bug#80242)
2026-02-25New function multiple-command-partition-argumentsSean Whitton
* lisp/subr.el (command-line-max-length): New variable. (multiple-command-partition-arguments): New function. * doc/lispref/processes.texi (Shell Arguments): * etc/NEWS: Document them. * test/lisp/subr-tests.el (subr-multiple-command-partition-arguments): New test.
2026-02-24Compare circular lists in 'equal' without error (bug#80456)Mattias Engdegård
* src/lisp.h (FOR_EACH_TAIL_INTERNAL): Divvy up the code into... (FOR_EACH_TAIL_BASIC, FOR_EACH_TAIL_STEP_CYCLEP): ...these macros, so that they can be used in more flexible ways. * src/fns.c (internal_equal_1): Detect circular lists and call... (internal_equal_cycle): ...this function that keeps comparing but now detecting cycles in the other argument. * lisp/emacs-lisp/testcover.el (testcover-after): Remove unnecessary error handling. * test/src/fns-tests.el (test-cycle-equal): Adapt and extend. * test/lisp/emacs-lisp/testcover-resources/testcases.el (testcover-testcase-cyc1): Remove case that no longer applies. * doc/lispref/objects.texi (Equality Predicates): Update. * etc/NEWS: Announce.
2026-02-23Add SHA-3 support to secure-hashCollin Funk
* admin/merge-gnulib (GNULIB_MODULES): Add crypto/sha3-buffer. * lib/sha3.c: New file, imported by running admin/merge-gnulib. * lib/sha3.h: Likewise. * m4/sha3.m4: Likewise. * lib/gnulib.mk.in: Updated by admin/merge-gnulib. * m4/gnulib-comp.m4: Likewise. * src/fns.c: Include sha3.h (Fsecure_hash_algorithms): Add Qsha3_224, Qsha3_256, Qsha3_384, and Qsha3_512. (secure_hash): Likewise. (Fsecure_hash): List the SHA-3 algorithms in the docstring. (syms_of_fns): Define Qsha3_224, Qsha3_256, Qsha3_384, and Qsha3_512. * test/lisp/net/gnutls-tests.el (gnutls-tests-internal-macs-upcased): Filter out the new SHA-3 algorithms since they are currently not implemented in gnutls. * test/src/fns-tests.el (test-secure-hash): Add test cases for the new algorithms. * doc/lispref/text.texi (Checksum/Hash): List the SHA-3 algorithms. Mention that they are considered secure. * etc/NEWS: Mention the new feature.
2026-02-21; Make the document language in Info manuals explicitly statedEli Zaretskii
* doc/misc/woman.texi: * doc/misc/wisent.texi: * doc/misc/widget.texi: * doc/misc/vtable.texi: * doc/misc/viper.texi: * doc/misc/vhdl-mode.texi: * doc/misc/use-package.texi: * doc/misc/url.texi: * doc/misc/tramp.texi: * doc/misc/todo-mode.texi: * doc/misc/srecode.texi: * doc/misc/speedbar.texi: * doc/misc/smtpmail.texi: * doc/misc/sieve.texi: * doc/misc/ses.texi: * doc/misc/semantic.texi: * doc/misc/sc.texi: * doc/misc/sasl.texi: * doc/misc/remember.texi: * doc/misc/reftex.texi: * doc/misc/rcirc.texi: * doc/misc/pgg.texi: * doc/misc/pcl-cvs.texi: * doc/misc/octave-mode.texi: * doc/misc/nxml-mode.texi: * doc/misc/newsticker.texi: * doc/misc/mh-e.texi: * doc/misc/message.texi: * doc/misc/mairix-el.texi: * doc/misc/info.texi: * doc/misc/ido.texi: * doc/misc/idlwave.texi: * doc/misc/htmlfontify.texi: * doc/misc/gnus.texi: * doc/misc/forms.texi: * doc/misc/flymake.texi: * doc/misc/eww.texi: * doc/misc/eudc.texi: * doc/misc/eshell.texi: * doc/misc/ert.texi: * doc/misc/erc.texi: * doc/misc/epa.texi: * doc/misc/emacs-gnutls.texi: * doc/misc/eieio.texi: * doc/misc/eglot.texi: * doc/misc/efaq-w32.texi: * doc/misc/efaq.texi: * doc/misc/edt.texi: * doc/misc/ediff.texi: * doc/misc/ede.texi: * doc/misc/ebrowse.texi: * doc/misc/dired-x.texi: * doc/misc/dbus.texi: * doc/misc/cl.texi: * doc/misc/cc-mode.texi: * doc/misc/calc.texi: * doc/misc/bovine.texi: * doc/misc/autotype.texi: * doc/misc/auth.texi: * doc/lispintro/emacs-lisp-intro.texi: * doc/lispref/elisp.texi: * doc/emacs/emacs.texi: Add @documentlanguage where it was missing. This makes the language explicit given the change in behavior expected in Texinfo 7.3.
2026-02-21; * doc/lispref/edebug.texi (Using Edebug): Fix a typo (bug#80459).Eli Zaretskii
2026-02-19Restore 'cond' one element clauses to 'cond*'Sean Whitton
* lisp/emacs-lisp/cond-star.el (cond*-non-exit-clause-p) (cond*-non-exit-clause-substance): Treat only one element clauses beginning with match*/pcase* pseudoforms as non-exit. (cond*-convert-condition): Handle exiting clauses with only one element, that is a regular Lisp expression. (cond*): * doc/lispref/control.texi (cond* Macro): Document the change.