<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/lisp/obsolete, branch master</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>Add predicate for initial_terminal</title>
<updated>2026-03-26T14:19:56+00:00</updated>
<author>
<name>Basil L. Contovounesios</name>
</author>
<published>2026-03-18T11:42:28+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d78000728351986b0083013728dc3ef366112c0b'/>
<id>d78000728351986b0083013728dc3ef366112c0b</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename 'any' to 'member-if' and deprecate 'cl-member-if'</title>
<updated>2026-03-04T14:43:05+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2026-03-04T14:43:05+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7d63d267f2da75471c0d40ae710265a78f560512'/>
<id>7d63d267f2da75471c0d40ae710265a78f560512</id>
<content type='text'>
* 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Rename 'any' to 'member-if' and deprecate 'cl-member-if'"</title>
<updated>2026-03-03T16:21:35+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2026-03-03T16:21:35+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7eba545a4edffc096598c97922e80a5d33898d21'/>
<id>7eba545a4edffc096598c97922e80a5d33898d21</id>
<content type='text'>
This reverts commit 2bdf15f6d8293b21234cd236f39ce68f62e1f6c3.

There is no consensus for this change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 2bdf15f6d8293b21234cd236f39ce68f62e1f6c3.

There is no consensus for this change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename 'any' to 'member-if' and deprecate 'cl-member-if'</title>
<updated>2026-03-03T13:57:07+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2026-03-03T13:57:07+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=2bdf15f6d8293b21234cd236f39ce68f62e1f6c3'/>
<id>2bdf15f6d8293b21234cd236f39ce68f62e1f6c3</id>
<content type='text'>
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this.  All uses changed.
Implement '&amp;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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/subr.el (any): Rename from this ...
(member-if): ... to this.  All uses changed.
Implement '&amp;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.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Add 2026 to copyright years.</title>
<updated>2026-01-01T12:54:34+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2026-01-01T12:54:34+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=c31f6adc31d48076c63ad82b83b2970e1b0d7b9b'/>
<id>c31f6adc31d48076c63ad82b83b2970e1b0d7b9b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Check for successful exit when parsing output with vc-exec-after</title>
<updated>2025-12-07T15:00:13+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2025-12-07T15:00:13+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=0391b3f94ecf57536c068611c12ae776d7382962'/>
<id>0391b3f94ecf57536c068611c12ae776d7382962</id>
<content type='text'>
When using vc-exec-after to parse program output, check that the
program didn't die to a signal or exit with an error exit code
before attempting the parse.  Continue to use plain
vc-run-delayed where we aren't parsing output, because in these
cases it doesn't matter to CODE if the output is incomplete.

* lisp/vc/vc-dispatcher.el (vc-exec-after): &lt;process-status&gt;:
Treat PROC dying to a signal the same as PROC exiting non-zero.

(vc-exec-after): &lt;accept-process-output&gt;: Restore making a
nonblocking call, for the case of vc-exec-after called from a
process sentinel.  diff-hl *does* require this.

(vc-exec-after): &lt;OKSTATUS&gt;: New parameter, replacing SUCCESS,
which never worked as documented.
* test/lisp/vc/vc-tests/vc-test-misc.el (vc-test-exec-after-3):
Test it.

(vc-run-delayed-success): New macro.
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage):
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
* lisp/vc/vc.el (vc-pull-and-push): Use it.

* lisp/obsolete/vc-arch.el (vc-exec-after):
* lisp/obsolete/vc-mtn.el (vc-exec-after):
* lisp/vc/vc-bzr.el (vc-exec-after):
* lisp/vc/vc-cvs.el (vc-exec-after):
* lisp/vc/vc-git.el (vc-exec-after):
* lisp/vc/vc-hg.el (vc-exec-after):
* lisp/vc/vc-svn.el (vc-exec-after): Update declarations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When using vc-exec-after to parse program output, check that the
program didn't die to a signal or exit with an error exit code
before attempting the parse.  Continue to use plain
vc-run-delayed where we aren't parsing output, because in these
cases it doesn't matter to CODE if the output is incomplete.

* lisp/vc/vc-dispatcher.el (vc-exec-after): &lt;process-status&gt;:
Treat PROC dying to a signal the same as PROC exiting non-zero.

(vc-exec-after): &lt;accept-process-output&gt;: Restore making a
nonblocking call, for the case of vc-exec-after called from a
process sentinel.  diff-hl *does* require this.

(vc-exec-after): &lt;OKSTATUS&gt;: New parameter, replacing SUCCESS,
which never worked as documented.
* test/lisp/vc/vc-tests/vc-test-misc.el (vc-test-exec-after-3):
Test it.

(vc-run-delayed-success): New macro.
* lisp/vc/vc-git.el (vc-git-dir-status-goto-stage):
* lisp/vc/vc-hg.el (vc-hg-dir-status-files):
* lisp/vc/vc.el (vc-pull-and-push): Use it.

* lisp/obsolete/vc-arch.el (vc-exec-after):
* lisp/obsolete/vc-mtn.el (vc-exec-after):
* lisp/vc/vc-bzr.el (vc-exec-after):
* lisp/vc/vc-cvs.el (vc-exec-after):
* lisp/vc/vc-git.el (vc-exec-after):
* lisp/vc/vc-hg.el (vc-exec-after):
* lisp/vc/vc-svn.el (vc-exec-after): Update declarations.
</pre>
</div>
</content>
</entry>
<entry>
<title>More reliably check if a frame is the daemon's initial frame</title>
<updated>2025-10-30T18:27:19+00:00</updated>
<author>
<name>Steven Allen</name>
</author>
<published>2025-10-28T18:08:53+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b0eaaf736637f3ae677fd5a090e7317cb76ab2a4'/>
<id>b0eaaf736637f3ae677fd5a090e7317cb76ab2a4</id>
<content type='text'>
Frames created when Emacs is running as a daemon may not have the
"client" frame parameter set, e.g., when:

1. Created from the user's init file.
2. Created via "emacsclient -e" (e.g., "emacsclient -e '(make-frame)'").

The "client" parameter simply indicates that the frame was created by
emacsclient directly (or recursively from another emacsclient frame).

Instead, this commit checks if (a) Emacs is running as a daemon and (b)
the target frame is the "terminal frame".  When run as a daemon, Emacs's
terminal frame is always the daemon's initial frame.

* lisp/desktop.el (desktop-clear):
(desktop-restoring-frameset-p):
* lisp/display-fill-column-indicator.el
(display-fill-column-indicator--turn-on):
* lisp/frame.el (frame-notice-user-settings):
* lisp/obsolete/linum.el (linum-on):
* lisp/progmodes/flymake.el (flymake-start):
* lisp/tab-bar.el (tab-bar--update-tab-bar-lines): Fix the "is this the
initial daemon-frame" checks.  (Bug#79686)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Frames created when Emacs is running as a daemon may not have the
"client" frame parameter set, e.g., when:

1. Created from the user's init file.
2. Created via "emacsclient -e" (e.g., "emacsclient -e '(make-frame)'").

The "client" parameter simply indicates that the frame was created by
emacsclient directly (or recursively from another emacsclient frame).

Instead, this commit checks if (a) Emacs is running as a daemon and (b)
the target frame is the "terminal frame".  When run as a daemon, Emacs's
terminal frame is always the daemon's initial frame.

* lisp/desktop.el (desktop-clear):
(desktop-restoring-frameset-p):
* lisp/display-fill-column-indicator.el
(display-fill-column-indicator--turn-on):
* lisp/frame.el (frame-notice-user-settings):
* lisp/obsolete/linum.el (linum-on):
* lisp/progmodes/flymake.el (flymake-start):
* lisp/tab-bar.el (tab-bar--update-tab-bar-lines): Fix the "is this the
initial daemon-frame" checks.  (Bug#79686)
</pre>
</div>
</content>
</entry>
<entry>
<title>Make elint obsolete (bug#78685)</title>
<updated>2025-07-05T12:38:48+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2025-07-05T11:53:56+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d1677d0a926c148ef4fce65251311fc8dc796464'/>
<id>d1677d0a926c148ef4fce65251311fc8dc796464</id>
<content type='text'>
It never was very useful to begin with, produces lots of false positives,
and the byte-compiler has long eclipsed it in warning quality.

* lisp/emacs-lisp/elint.el: Move this file...
* lisp/obsolete/elint.el: ...here, and declare obsolete.
(elint-file, elint-directory, elint-current-buffer, elint-defun):
Declare obsolete.
(elint--file): Split from elint-file to avoid warning.
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu):
Remove elint menu entries.
* etc/NEWS: Announce
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It never was very useful to begin with, produces lots of false positives,
and the byte-compiler has long eclipsed it in warning quality.

* lisp/emacs-lisp/elint.el: Move this file...
* lisp/obsolete/elint.el: ...here, and declare obsolete.
(elint-file, elint-directory, elint-current-buffer, elint-defun):
Declare obsolete.
(elint--file): Split from elint-file to avoid warning.
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu):
Remove elint menu entries.
* etc/NEWS: Announce
</pre>
</div>
</content>
</entry>
<entry>
<title>Mark vc-dav.el as obsolete (bug#77626)</title>
<updated>2025-04-27T04:30:41+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2025-04-27T04:30:41+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=925ac2ef7043a1cf5356f8fa1f15ae43529319bc'/>
<id>925ac2ef7043a1cf5356f8fa1f15ae43529319bc</id>
<content type='text'>
* lisp/vc/vc-dav.el: Move from here ...
* lisp/obsolete/vc-dav.el: ... to here (bug#77626).
Add Obsolete-since header.
* etc/NEWS: Announce the obsoletion.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/vc/vc-dav.el: Move from here ...
* lisp/obsolete/vc-dav.el: ... to here (bug#77626).
Add Obsolete-since header.
* etc/NEWS: Announce the obsoletion.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove variable aliases obsolete since Emacs 23.2</title>
<updated>2025-03-11T20:20:38+00:00</updated>
<author>
<name>Stefan Kangas</name>
</author>
<published>2025-03-11T20:20:38+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=af851dd82e465a3e5e28065b35332ad35162beab'/>
<id>af851dd82e465a3e5e28065b35332ad35162beab</id>
<content type='text'>
* lisp/dired.el (dired-advertised-find-file):
* lisp/simple.el (advertised-undo):
* lisp/wid-edit.el (advertised-widget-backward): Remove variable
aliases obsolete since Emacs 23.2.  They are replaced by
':advertised-binding' properties.
* lisp/arc-mode.el (archive-mode-map):
* lisp/dired.el (dired-mode-map):
* lisp/obsolete/landmark.el (landmark-mode-map):
* lisp/play/decipher.el (decipher-mode-map):
* lisp/play/gomoku.el (gomoku-mode-map):
* lisp/proced.el (proced-mode-map): Don't bind above removed commands.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/dired.el (dired-advertised-find-file):
* lisp/simple.el (advertised-undo):
* lisp/wid-edit.el (advertised-widget-backward): Remove variable
aliases obsolete since Emacs 23.2.  They are replaced by
':advertised-binding' properties.
* lisp/arc-mode.el (archive-mode-map):
* lisp/dired.el (dired-mode-map):
* lisp/obsolete/landmark.el (landmark-mode-map):
* lisp/play/decipher.el (decipher-mode-map):
* lisp/play/gomoku.el (gomoku-mode-map):
* lisp/proced.el (proced-mode-map): Don't bind above removed commands.
</pre>
</div>
</content>
</entry>
</feed>
