mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-24 05:22:04 -08:00
A unique frame id is assigned to a new or cloned frame, and reused on an undeleted frame. The id facilitates unambiguous identification among frames that share identical names or titles, deleted frames where a live frame object no longer exists that we can resurrect by id, for example via 'tab-bar-undo-close-tab'. It also aids debugging at the C level using the frame struct member id. Rewrite 'clone-frame' and 'undelete-frame' to not let bind variables that 'make-frame' uses to avoid conflicts with nested 'make-frame' calls, for example via 'after-make-frame-functions'. * lisp/frame.el (clone-frame, undelete-frame): Use 'frame--purify-parameters' to supply parameters explicitly. (undelete-frame--save-deleted-frame): Save frame id for restoration. (undelete-frame): Restore frame id. (frame--purify-parameters): New defun. (make-frame): Assign a new id for a new or cloned frame, reuse for undeleted frame. * src/frame.h (struct frame): Add id member. (frame_next_id): New extern. * src/frame.c (frame_next_id): New global counter. (frame_set_id, frame_set_id_from_params): New function. (Fframe_id): New DEFUN. (syms_of_frame <Sframe_id>): New defsubr. (syms_of_frame <Qinternal_id>): New DEFSYM. (syms_of_frame <frame_internal_parameters>): Add 'Qinternal_id'. * src/androidfns.c (Fx_create_frame): * src/haikufns.c (Fx_create_frame): * src/nsfns.m (Fx_create_frame): * src/pgtkfns.c (Fx_create_frame): * src/w32fns.c (Fx_create_frame): * src/xfns.c (Fx_create_frame): Call 'frame_set_id_from_params'. * doc/lispref/frames.texi: Add documentation. * etc/NEWS: Announce frame id. |
||
|---|---|---|
| .. | ||
| abbrevs.texi | ||
| anti.texi | ||
| back.texi | ||
| backups.texi | ||
| book-spine.texi | ||
| buffers.texi | ||
| ChangeLog.1 | ||
| commands.texi | ||
| compile.texi | ||
| control.texi | ||
| customize.texi | ||
| debugging.texi | ||
| display.texi | ||
| doclicense.texi | ||
| edebug.texi | ||
| elisp.texi | ||
| elisp_type_hierarchy.jpg | ||
| elisp_type_hierarchy.txt | ||
| errors.texi | ||
| eval.texi | ||
| files.texi | ||
| frames.texi | ||
| functions.texi | ||
| gpl.texi | ||
| hash.texi | ||
| help.texi | ||
| hooks.texi | ||
| index.texi | ||
| internals.texi | ||
| intro.texi | ||
| keymaps.texi | ||
| lay-flat.texi | ||
| lists.texi | ||
| loading.texi | ||
| macros.texi | ||
| Makefile.in | ||
| maps.texi | ||
| markers.texi | ||
| minibuf.texi | ||
| modes.texi | ||
| nonascii.texi | ||
| numbers.texi | ||
| objects.texi | ||
| os.texi | ||
| package.texi | ||
| parsing.texi | ||
| peg.texi | ||
| positions.texi | ||
| processes.texi | ||
| README | ||
| records.texi | ||
| searching.texi | ||
| sequences.texi | ||
| spellfile | ||
| streams.texi | ||
| strings.texi | ||
| symbols.texi | ||
| syntax.texi | ||
| text.texi | ||
| threads.texi | ||
| tips.texi | ||
| two-volume-cross-refs.txt | ||
| two-volume.make | ||
| variables.texi | ||
| windows.texi | ||
Copyright (C) 2001-2026 Free Software Foundation, Inc. -*- outline -*-
See the end of the file for license conditions.
README for the Emacs Lisp Reference Manual.
* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.
* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.
* The Emacs Lisp Reference Manual is quite large. It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.
* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.
* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work. See <https://shop.fsf.org/>.
(At time of writing, this manual is out of print.)
* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.
* This distribution contains a Makefile that you can use with GNU Make.
** To make an Info file, you need to install Texinfo, then run 'make info'.
** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.
This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.