<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src/window.h, branch scratch/igc2</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>Merge branch 'master' into feature/igc</title>
<updated>2025-01-31T16:40:29+00:00</updated>
<author>
<name>Pip Cet</name>
</author>
<published>2025-01-31T16:35:42+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=6f7e916a6c80df11bf169587913fb0443f6b5490'/>
<id>6f7e916a6c80df11bf169587913fb0443f6b5490</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Protect against GCing of last_mouse_window</title>
<updated>2025-01-27T07:05:53+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2025-01-27T06:15:49+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=2e8ef0910412aef8f9f1beba7c942473ad8602bb'/>
<id>2e8ef0910412aef8f9f1beba7c942473ad8602bb</id>
<content type='text'>
* src/window.c (last_mouse_window): New global var.  All static
instances removed, and all their uses replaced with this global
var.  This fixes a very unlikely bug where last_mouse_window was
GC’ed and a new window created in its place.  It also fixes several
places that assumed NIL_IS_ZERO without static_asserting it.
(init_window_once): Initialize the new var.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/window.c (last_mouse_window): New global var.  All static
instances removed, and all their uses replaced with this global
var.  This fixes a very unlikely bug where last_mouse_window was
GC’ed and a new window created in its place.  It also fixes several
places that assumed NIL_IS_ZERO without static_asserting it.
(init_window_once): Initialize the new var.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into scratch/igc</title>
<updated>2025-01-15T08:14:06+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2025-01-15T08:14:06+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=528f71140667c6ce46db019af6bb41bebb5d0527'/>
<id>528f71140667c6ce46db019af6bb41bebb5d0527</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Handle removal of selected tty child frame</title>
<updated>2025-01-14T08:51:17+00:00</updated>
<author>
<name>Martin Rudalics</name>
</author>
<published>2025-01-14T08:51:17+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d4aeb6bd230c42cf7b773ec9aebd80ad6d928d98'/>
<id>d4aeb6bd230c42cf7b773ec9aebd80ad6d928d98</id>
<content type='text'>
* src/dispextern.h (root_frame):
* src/frame.h (root_frame): Move declaration from dispextern.h
to frame.h.
(SET_FRAME_VISIBLE): Whend making the selected tty child frame
invisible, use mru_rooted_frame to find a frame to switch to.
* src/dispnew.c (root_frame): Move root_frame to frame.c.
* src/frame.c (do_switch_frame): On ttys don't change the
top frame when switching from a child frame to another frame
with the same root.
(root_frame): Move here from dispnew.c.
(Fframe_root_frame): New Lisp function.
(delete_frame): Whend deleting the selected tty child frame use,
mru_rooted_frame to find a frame to switch to.
* src/window.c (mru_rooted_frame): New function.
* src/window.h (mru_rooted_frame): Declare it.
* doc/lispref/frames.texi (Child Frames): Describe new function
'frame-root-frame'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/dispextern.h (root_frame):
* src/frame.h (root_frame): Move declaration from dispextern.h
to frame.h.
(SET_FRAME_VISIBLE): Whend making the selected tty child frame
invisible, use mru_rooted_frame to find a frame to switch to.
* src/dispnew.c (root_frame): Move root_frame to frame.c.
* src/frame.c (do_switch_frame): On ttys don't change the
top frame when switching from a child frame to another frame
with the same root.
(root_frame): Move here from dispnew.c.
(Fframe_root_frame): New Lisp function.
(delete_frame): Whend deleting the selected tty child frame use,
mru_rooted_frame to find a frame to switch to.
* src/window.c (mru_rooted_frame): New function.
* src/window.h (mru_rooted_frame): Declare it.
* doc/lispref/frames.texi (Child Frames): Describe new function
'frame-root-frame'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into scratch/igc</title>
<updated>2025-01-08T03:04:49+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2025-01-08T03:04:49+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=2838be3fd554cf5965967e873a52c1e69363f170'/>
<id>2838be3fd554cf5965967e873a52c1e69363f170</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright year to 2025</title>
<updated>2025-01-01T07:39:17+00:00</updated>
<author>
<name>Paul Eggert</name>
</author>
<published>2025-01-01T07:39:17+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=4da38c632161867e914b3a13dc760f8019255f94'/>
<id>4da38c632161867e914b3a13dc760f8019255f94</id>
<content type='text'>
Run "TZ=UTC0 admin/update-copyright".
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Run "TZ=UTC0 admin/update-copyright".
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' into scratch/igc</title>
<updated>2024-08-05T04:32:17+00:00</updated>
<author>
<name>Gerd Möllmann</name>
</author>
<published>2024-08-05T04:32:17+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=6a137e0c1dd8670d95134bab4ef8d6103c2c9602'/>
<id>6a137e0c1dd8670d95134bab4ef8d6103c2c9602</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve window/buffer handling code</title>
<updated>2024-08-01T07:37:50+00:00</updated>
<author>
<name>Martin Rudalics</name>
</author>
<published>2024-08-01T07:37:50+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=27381d71c65bd0ba93ed61f57011dbc66bd5bfab'/>
<id>27381d71c65bd0ba93ed61f57011dbc66bd5bfab</id>
<content type='text'>
The purpose of these changes is to improve the code handling the
display of buffers in windows, switching to previous and next
buffers in windows and restoring a previous state after quitting
or killing buffers.  In particular it does:

- Add a new window parameter 'quit-restore-prev' so a window can
keep its initial 'quit-restore' parameter and undoing a sequence
of quit window operations becomes more reliable (Bug#59862).

- Optionally have 'kill-buffer' call 'quit-restore-window' for
all windows showing the argument buffer (Bug#59862).

- Add a new hook so it's possible to avoid that a window gets
deleted implicitly by functions like 'kill-buffer' (Bug#71386).

- Add a new option to make 'quit-restore-window' delete windows
more aggressively (Bug#59862).

- Immediately remove killed buffers from all windows' previous
and next buffers.  For windows that are already dead, use a weak
hash table to be used by 'kill-buffer'.  This avoids any special
handling of such windows by the garbage collector.

- Immediately remove 'quit-restore' and 'quit-restore-prev'
window parameters that reference killed buffers.  These
parameters have no more use once their buffers got killed.

- Make sure that internal windows do not have any previous and
next buffers.  This fixes a silly memory leak.

- Make sure that after set_window_buffer and some wset_buffer
calls the buffer now shown in the window does not appear in the
lists of that window's previous and next buffers.  The old
behavior could make functions investigating these lists
erroneously believe that there still existed some other buffer
to switch to.

* src/alloc.c (mark_discard_killed_buffers): Remove function.
(mark_window): No more filter previous and next buffer lists.
* src/window.h (struct window): Move up prev_buffers and
next-buffers in structure; they are now treated by the collector
as usual.
* src/window.c (window_discard_buffer_from_alist)
(window_discard_buffer_from_list)
(window_discard_buffer_from_window)
(window_discard_buffer_from_dead_windows)
(Fwindow_discard_buffer): New functions.
(set_window_buffer): Discard BUFFER from WINDOW's previous and
next buffers.
(make_parent_window): Make sure internal windows have no previous
and next buffers.
(make_window): Don't initialize window's previous and next
buffers, they are handled by allocate_window now.
(Fdelete_window_internal): Add WINDOW to window_dead_windows_table.
(Fset_window_configuration): Remove resurrected window from
window_dead_windows_table.  Make sure buffers set by wset_buffer
calls are not recorded in window's previous and next buffers.
(delete_all_child_windows): Add deleted windows to
window_dead_windows_table.
(window_dead_windows_table): New weak hash table to record dead
windows that are stored in saved window configurations.
* src/buffer.c (Fkill_buffer): Call new function
'window_discard_buffer_from_dead_windows'.
* lisp/window.el (window-deletable-functions): New hook.
(window-deletable-p): Update doc-string.  Run
'window-deletable-functions' (Bug#71386).
(unrecord-window-buffer): New argument ALL.  Move body to
'window-discard-buffer-from-window' so that if ALL is non-nil,
WINDOW's 'quit-restore' and 'quit-restore-prev' parameters get
removed too.
(switch-to-prev-buffer): Don't care about killed buffers here;
'replace-buffer-in-windows' should have done that already.  Use
'unrecord-window-buffer'.
(switch-to-next-buffer): Don't care about killed buffers here;
'replace-buffer-in-windows' should do that now.
(kill-buffer-quit-windows): New option.
(delete-windows-on): Update doc-string.  Handle new option
'kill-buffer-quit-windows'.  Update 'unrecord-window-buffer'
calls.
(replace-buffer-in-windows): Update doc-string.  Handle new
option 'kill-buffer-quit-windows' (Bug#59862).  Update call to
'unrecord-window-buffer'.
(quit-restore-window-no-switch): New option.
(quit-restore-window): Update doc-string.  Handle additional
values of BURY-OR-KILL so to not kill a buffer about to be
killed by the caller.  Handle 'quit-restore-prev' parameter
(Bug#59862).  Handle new option 'quit-restore-window-no-switch'
(Bug#59862).
(quit-windows-on): Update doc-string.  Call 'quit-window-hook'
and call 'quit-restore-window' directly so that the buffer does
not get buried or killed by the latter.  Update
'unrecord-window-buffer' call.
(display-buffer-record-window): Update doc-string.  Handle new
`quit-restore-prev' parameter (Bug#59862).
(switch-to-buffer): Call 'display-buffer-record-window' so a
latter 'quit-restore-window' can use its parameters.
* doc/lispref/windows.texi (Deleting Windows): Describe implicit
deletion of windows and new hook 'window-deletable-functions'.
(Buffers and Windows): Update description of
'replace-buffer-in-windows'.  Describe new option
'kill-buffer-quit-windows'.
(Quitting Windows): Describe 'quit-restore-prev' parameter and
new option 'quit-restore-window-no-switch'.  Update description
of 'quit-restore-window'.
(Window Parameters): Mention 'quit-restore-prev' parameter.
* etc/NEWS: Add entries for 'window-deletable-functions',
'kill-buffer-quit-windows', 'quit-restore-window-no-switch'.
mention new parameter 'quit-restore-prev' and new argument
values for 'quit-restore-window'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The purpose of these changes is to improve the code handling the
display of buffers in windows, switching to previous and next
buffers in windows and restoring a previous state after quitting
or killing buffers.  In particular it does:

- Add a new window parameter 'quit-restore-prev' so a window can
keep its initial 'quit-restore' parameter and undoing a sequence
of quit window operations becomes more reliable (Bug#59862).

- Optionally have 'kill-buffer' call 'quit-restore-window' for
all windows showing the argument buffer (Bug#59862).

- Add a new hook so it's possible to avoid that a window gets
deleted implicitly by functions like 'kill-buffer' (Bug#71386).

- Add a new option to make 'quit-restore-window' delete windows
more aggressively (Bug#59862).

- Immediately remove killed buffers from all windows' previous
and next buffers.  For windows that are already dead, use a weak
hash table to be used by 'kill-buffer'.  This avoids any special
handling of such windows by the garbage collector.

- Immediately remove 'quit-restore' and 'quit-restore-prev'
window parameters that reference killed buffers.  These
parameters have no more use once their buffers got killed.

- Make sure that internal windows do not have any previous and
next buffers.  This fixes a silly memory leak.

- Make sure that after set_window_buffer and some wset_buffer
calls the buffer now shown in the window does not appear in the
lists of that window's previous and next buffers.  The old
behavior could make functions investigating these lists
erroneously believe that there still existed some other buffer
to switch to.

* src/alloc.c (mark_discard_killed_buffers): Remove function.
(mark_window): No more filter previous and next buffer lists.
* src/window.h (struct window): Move up prev_buffers and
next-buffers in structure; they are now treated by the collector
as usual.
* src/window.c (window_discard_buffer_from_alist)
(window_discard_buffer_from_list)
(window_discard_buffer_from_window)
(window_discard_buffer_from_dead_windows)
(Fwindow_discard_buffer): New functions.
(set_window_buffer): Discard BUFFER from WINDOW's previous and
next buffers.
(make_parent_window): Make sure internal windows have no previous
and next buffers.
(make_window): Don't initialize window's previous and next
buffers, they are handled by allocate_window now.
(Fdelete_window_internal): Add WINDOW to window_dead_windows_table.
(Fset_window_configuration): Remove resurrected window from
window_dead_windows_table.  Make sure buffers set by wset_buffer
calls are not recorded in window's previous and next buffers.
(delete_all_child_windows): Add deleted windows to
window_dead_windows_table.
(window_dead_windows_table): New weak hash table to record dead
windows that are stored in saved window configurations.
* src/buffer.c (Fkill_buffer): Call new function
'window_discard_buffer_from_dead_windows'.
* lisp/window.el (window-deletable-functions): New hook.
(window-deletable-p): Update doc-string.  Run
'window-deletable-functions' (Bug#71386).
(unrecord-window-buffer): New argument ALL.  Move body to
'window-discard-buffer-from-window' so that if ALL is non-nil,
WINDOW's 'quit-restore' and 'quit-restore-prev' parameters get
removed too.
(switch-to-prev-buffer): Don't care about killed buffers here;
'replace-buffer-in-windows' should have done that already.  Use
'unrecord-window-buffer'.
(switch-to-next-buffer): Don't care about killed buffers here;
'replace-buffer-in-windows' should do that now.
(kill-buffer-quit-windows): New option.
(delete-windows-on): Update doc-string.  Handle new option
'kill-buffer-quit-windows'.  Update 'unrecord-window-buffer'
calls.
(replace-buffer-in-windows): Update doc-string.  Handle new
option 'kill-buffer-quit-windows' (Bug#59862).  Update call to
'unrecord-window-buffer'.
(quit-restore-window-no-switch): New option.
(quit-restore-window): Update doc-string.  Handle additional
values of BURY-OR-KILL so to not kill a buffer about to be
killed by the caller.  Handle 'quit-restore-prev' parameter
(Bug#59862).  Handle new option 'quit-restore-window-no-switch'
(Bug#59862).
(quit-windows-on): Update doc-string.  Call 'quit-window-hook'
and call 'quit-restore-window' directly so that the buffer does
not get buried or killed by the latter.  Update
'unrecord-window-buffer' call.
(display-buffer-record-window): Update doc-string.  Handle new
`quit-restore-prev' parameter (Bug#59862).
(switch-to-buffer): Call 'display-buffer-record-window' so a
latter 'quit-restore-window' can use its parameters.
* doc/lispref/windows.texi (Deleting Windows): Describe implicit
deletion of windows and new hook 'window-deletable-functions'.
(Buffers and Windows): Update description of
'replace-buffer-in-windows'.  Describe new option
'kill-buffer-quit-windows'.
(Quitting Windows): Describe 'quit-restore-prev' parameter and
new option 'quit-restore-window-no-switch'.  Update description
of 'quit-restore-window'.
(Window Parameters): Mention 'quit-restore-prev' parameter.
* etc/NEWS: Add entries for 'window-deletable-functions',
'kill-buffer-quit-windows', 'quit-restore-window-no-switch'.
mention new parameter 'quit-restore-prev' and new argument
values for 'quit-restore-window'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Turn union vectorlike_header into struct vectorlike_header</title>
<updated>2024-07-20T15:17:50+00:00</updated>
<author>
<name>Pip Cet</name>
</author>
<published>2024-07-14T10:45:50+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=6068cf00cddcd9f81a1390e7b4b8ecb02e285696'/>
<id>6068cf00cddcd9f81a1390e7b4b8ecb02e285696</id>
<content type='text'>
This makes it feasible to add GC header members to this struct; keeping
it as a union and merely turning its contents into a struct would have
been misleading and required more difficult changes.

* src/lisp.h (struct vectorlike_header): New type.  Adjust comments.
(union vectorlike_header): Remove.
(PSEUDOVECTORP):
(XSETPVECTYPESIZE):
(struct Lisp_Vector):
(PSEUDOVECTOR_TYPEP):
(struct Lisp_Bool_Vector):
(struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table):
(struct Lisp_Subr):
(struct Lisp_Obarray):
(struct Lisp_Weak_Hash_Table):
(struct Lisp_Hash_Table):
(struct Lisp_Marker):
(struct Lisp_Overlay)
(struct Lisp_Misc_Ptr):
(struct Lisp_Sqlite):
(struct Lisp_User_Ptr):
(struct Lisp_Finalizer):
(vectorlike_nbytes):
* src/alloc.c (pseudovector_nbytes):
(vectorlike_nbytes):
(vectorlike_marked_p):
(set_vectorlike_marked):
(mark_vectorlike):
* src/androidterm.h (struct scroll_bar):
* src/bignum.h (struct Lisp_Bignum):
* src/buffer.h (struct buffer):
* src/comp.c (helper_PSEUDOVECTOR_TYPEP_XUNTAG):
* src/comp.h (struct Lisp_Native_Comp_Unit):
* src/emacs-module.c (struct Lisp_Module_Function):
* src/emacs-module.h.in (struct module_global_reference):
* src/font.h (struct font_spec, struct font_entity)
(struct font):
* src/frame.h (struct frame):
* src/haikuterm.h (struct scroll_bar): Adjust
* src/pdumper.c (_dump_object_start_pseudovector):
(START_DUMP_PVEC):
(finish_dump_pvec):
(dump_pseudovector_lisp_fields):
(dump_vectorlike_generic):
(fill_pseudovec):
(dump_nilled_pseudovec):
* src/pgtkterm.h (struct scroll_bar):
* src/process.h (struct Lisp_Process):
* src/termhooks.h (struct terminal):
* src/thread.h (struct thread_state):
(struct Lisp_Mutex):
(struct Lisp_CondVar):
* src/treesit.h (struct Lisp_TS_Parser)
(struct Lisp_TS_Node):
(struct Lisp_TS_Query):
* src/w32term.h (struct scroll_bar):
* src/window.c (make_parent_window):
(struct save_window_data):
(struct saved_window):
* src/window.h (struct window):
* src/xterm.h (struct scroll_bar):
* src/xwidget.h (struct xwidget):
(struct xwidget_view): Replace `union vectorlike_header' by `struct
vectorlike_header' throughout.
* doc/lispref/internals.texi: Fix references.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes it feasible to add GC header members to this struct; keeping
it as a union and merely turning its contents into a struct would have
been misleading and required more difficult changes.

* src/lisp.h (struct vectorlike_header): New type.  Adjust comments.
(union vectorlike_header): Remove.
(PSEUDOVECTORP):
(XSETPVECTYPESIZE):
(struct Lisp_Vector):
(PSEUDOVECTOR_TYPEP):
(struct Lisp_Bool_Vector):
(struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table):
(struct Lisp_Subr):
(struct Lisp_Obarray):
(struct Lisp_Weak_Hash_Table):
(struct Lisp_Hash_Table):
(struct Lisp_Marker):
(struct Lisp_Overlay)
(struct Lisp_Misc_Ptr):
(struct Lisp_Sqlite):
(struct Lisp_User_Ptr):
(struct Lisp_Finalizer):
(vectorlike_nbytes):
* src/alloc.c (pseudovector_nbytes):
(vectorlike_nbytes):
(vectorlike_marked_p):
(set_vectorlike_marked):
(mark_vectorlike):
* src/androidterm.h (struct scroll_bar):
* src/bignum.h (struct Lisp_Bignum):
* src/buffer.h (struct buffer):
* src/comp.c (helper_PSEUDOVECTOR_TYPEP_XUNTAG):
* src/comp.h (struct Lisp_Native_Comp_Unit):
* src/emacs-module.c (struct Lisp_Module_Function):
* src/emacs-module.h.in (struct module_global_reference):
* src/font.h (struct font_spec, struct font_entity)
(struct font):
* src/frame.h (struct frame):
* src/haikuterm.h (struct scroll_bar): Adjust
* src/pdumper.c (_dump_object_start_pseudovector):
(START_DUMP_PVEC):
(finish_dump_pvec):
(dump_pseudovector_lisp_fields):
(dump_vectorlike_generic):
(fill_pseudovec):
(dump_nilled_pseudovec):
* src/pgtkterm.h (struct scroll_bar):
* src/process.h (struct Lisp_Process):
* src/termhooks.h (struct terminal):
* src/thread.h (struct thread_state):
(struct Lisp_Mutex):
(struct Lisp_CondVar):
* src/treesit.h (struct Lisp_TS_Parser)
(struct Lisp_TS_Node):
(struct Lisp_TS_Query):
* src/w32term.h (struct scroll_bar):
* src/window.c (make_parent_window):
(struct save_window_data):
(struct saved_window):
* src/window.h (struct window):
* src/xterm.h (struct scroll_bar):
* src/xwidget.h (struct xwidget):
(struct xwidget_view): Replace `union vectorlike_header' by `struct
vectorlike_header' throughout.
* doc/lispref/internals.texi: Fix references.
</pre>
</div>
</content>
</entry>
<entry>
<title>New functions '(set-)window-cursor-type'</title>
<updated>2024-05-18T13:42:19+00:00</updated>
<author>
<name>Eshel Yaron</name>
</author>
<published>2024-04-27T18:47:34+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=3b890bf2bd2fec54433f35d61e30542b3dadb612'/>
<id>3b890bf2bd2fec54433f35d61e30542b3dadb612</id>
<content type='text'>
* src/window.h (struct window): Add 'cursor_type' slot.
(wset_cursor_type): New inline function.
* src/xdisp.c (get_window_cursor_type): Consult 'cursor_type'.
* src/window.c (make_window): Initialize 'cursor_type' to t.
(Fset_window_cursor_type, Fwindow_cursor_type): New functions.
(syms_of_window): List their symbols.
* doc/lispref/windows.texi (Window Point): Document them.
* doc/lispref/frames.texi (Cursor Parameters): Mention
new 'set-window-cursor-type'.
* etc/NEWS: Announce new functions.  (Bug#70622)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/window.h (struct window): Add 'cursor_type' slot.
(wset_cursor_type): New inline function.
* src/xdisp.c (get_window_cursor_type): Consult 'cursor_type'.
* src/window.c (make_window): Initialize 'cursor_type' to t.
(Fset_window_cursor_type, Fwindow_cursor_type): New functions.
(syms_of_window): List their symbols.
* doc/lispref/windows.texi (Window Point): Document them.
* doc/lispref/frames.texi (Cursor Parameters): Mention
new 'set-window-cursor-type'.
* etc/NEWS: Announce new functions.  (Bug#70622)
</pre>
</div>
</content>
</entry>
</feed>
