From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Newsgroups: gmane.emacs.bugs Subject: bug#72829: describe-function NEWS* scraper override Date: Tue, 27 Aug 2024 13:35:41 +0200 Message-ID: <79C79924-4870-4E55-9920-3D2C08A1E765@gmail.com> Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_3FD76543-F40D-4911-B12E-71E51A8208B0" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30476"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Stefan Monnier To: 72829@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Aug 27 13:36:35 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1siuV1-0007jl-4c for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 27 Aug 2024 13:36:35 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1siuUf-0004c6-6D; Tue, 27 Aug 2024 07:36:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1siuUc-0004bt-N5 for bug-gnu-emacs@gnu.org; Tue, 27 Aug 2024 07:36:10 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1siuUc-00023H-B6 for bug-gnu-emacs@gnu.org; Tue, 27 Aug 2024 07:36:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=Date:Mime-Version:From:To:Subject; bh=qBfk+BMtPCHNNr4uZjMnc3BkLs9ydXl1Qr1FZWNz+gI=; b=EQTgRXmGovmw3YjhJlpiUdjKJByY0DuVU+pYkdaRxXSLKYwIb3jAE2l6mIXIUyf7bY4OlqiFLmFWcYznNIf3zlkuzBoVUWmPz/EZSZVy1V4yLe6+79hKrM0zP1dOtJl2vwdVohLULQBvXXjJlehYIMbHpJHq42Q4Tgk2xiphMIawEu61YHCa6i9bA3OOD4CRFsh1dhxffccBSkAFPVGseSvA9DJkP4spz0li580EDFnVIF0wtw8RhY1o4nXjrQbomVNi5NwKuaDzSu0DcP3pwN57n/buZhHDAf82M1I5B4nl4QAzMVbzYlWKxKKvTeHw7vehUEYqpzXdVYNMBqT6Mg==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1siuVS-0000SK-I0 for bug-gnu-emacs@gnu.org; Tue, 27 Aug 2024 07:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Aug 2024 11:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 72829 X-GNU-PR-Package: emacs X-Debbugs-Original-To: Emacs Bug Report Original-Received: via spool by submit@debbugs.gnu.org id=B.17247586021721 (code B ref -1); Tue, 27 Aug 2024 11:37:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Aug 2024 11:36:42 +0000 Original-Received: from localhost ([127.0.0.1]:46138 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1siuV8-0000Rg-H5 for submit@debbugs.gnu.org; Tue, 27 Aug 2024 07:36:42 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:56788) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1siuV6-0000RZ-Bs for submit@debbugs.gnu.org; Tue, 27 Aug 2024 07:36:41 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1siuUF-0004ak-Gf for bug-gnu-emacs@gnu.org; Tue, 27 Aug 2024 07:35:47 -0400 Original-Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1siuUD-00021A-Pb for bug-gnu-emacs@gnu.org; Tue, 27 Aug 2024 07:35:47 -0400 Original-Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-5334fdabefbso4713393e87.1 for ; Tue, 27 Aug 2024 04:35:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724758543; x=1725363343; darn=gnu.org; h=to:cc:date:message-id:subject:mime-version:from:sender:from:to:cc :subject:date:message-id:reply-to; bh=qBfk+BMtPCHNNr4uZjMnc3BkLs9ydXl1Qr1FZWNz+gI=; b=V8sd91R8ZvWTNih1BP2RreI7BNi2CnbdT7zpxiTdYts32qsjiQmdBTzU388GW2cmkX 2GPSb59g5dmOMFd9FFrL1MiY8gzrT1PlWuT5tXCLCxBdsfKAOXd3vAgEqrSVT+ny0p/V s2VcuInCkaHod26egT+rwQV0AfBCdLNqDBMkERf48pdBf/jTI9Hv+IrNM8ZSBlnxEgnU sD/PoDiRAZZTqrScd5v/Hu6AmKadHMWBPcUFmK2rWNwJ+jAUNHuZlFwLlb6duSXaQjbX OVWZvIIoJTG+j0H2SaXdOT2g56MAduIp2ONBHNLmlWOhwiWZnRWHGZ2bMvmNtdNrHBgJ djxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724758543; x=1725363343; h=to:cc:date:message-id:subject:mime-version:from:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qBfk+BMtPCHNNr4uZjMnc3BkLs9ydXl1Qr1FZWNz+gI=; b=C62NYzaN0tmGVuR27PtpuarkJvlLXEigvBAg9FfacXu6GC7CEIp9ahkb6nCCKs68iv VtHLpAfj9+fj9GvS+lpoUgsLfo1xp4Ke7qTSsfse1prUMKL/Kqehj4Lhb7G15OUewYWK uGo613xcCOt1QNIqXi6aiGlNfrKJ54joiOMvj+A6QxtufNSfgX9LqwpTdZN2j+WV+/hW 4obS/MhAC585Hp93VuRrgF5f1bNEt5xINeyB0ILm57/CX5QKfxHSOVl8slw1knuwbUvD RTLLRmxqkj7mtSaabsrOWjRUDqcVOfBonA7EcnfGbAihcFZKW9XO38Xggo7HLt1AanMV /PRQ== X-Gm-Message-State: AOJu0YzfF3sEBlsWhin0doONP4oxitW6oFmFsi1EpD6zzYMxbUgZqvJ9 nUSrxFoABYZtII5OJPDARPFVZMNQ0cjo0Lay8/3Yav1yU95usl5u+4c8/Q== X-Google-Smtp-Source: AGHT+IGGEgcQ9POPFnyJdIXUqjml+4PjK2G769FTPla5zrVe8r/w325xnuYX0RVJpvw1ryIo4KbzCg== X-Received: by 2002:a05:6512:159b:b0:52b:aae0:2d41 with SMTP id 2adb3069b0e04-5344dd8d14dmr899694e87.28.1724758542695; Tue, 27 Aug 2024 04:35:42 -0700 (PDT) Original-Received: from smtpclient.apple (c188-150-191-82.bredband.tele2.se. [188.150.191.82]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5334ea36c31sm1738203e87.99.2024.08.27.04.35.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Aug 2024 04:35:42 -0700 (PDT) X-Mailer: Apple Mail (2.3654.120.0.1.15) Received-SPF: pass client-ip=2a00:1450:4864:20::12f; envelope-from=mattias.engdegard@gmail.com; helo=mail-lf1-x12f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:290811 Archived-At: --Apple-Mail=_3FD76543-F40D-4911-B12E-71E51A8208B0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii `describe-function` sometimes gives incorrect information about when = certain functions were first introduced. NEWS.unknown can be used to fix = some problems but it only works in one direction and is unable to help = when a function name appears too early. A robust solution would be to make NEWS* use a mark-up like = @function{some-name} instead of just 'some-name' but meanwhile, here is = a simple patch that replaces NEWS.unknown with a more structured file. = This fixes the case for `always`. --Apple-Mail=_3FD76543-F40D-4911-B12E-71E51A8208B0 Content-Disposition: attachment; filename=0001-Better-ad-hoc-Emacs-release-of-symbol-introduction-o.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Better-ad-hoc-Emacs-release-of-symbol-introduction-o.patch" Content-Transfer-Encoding: quoted-printable =46rom=20bfa7f11acb8aeeeaa07af29ec18dd30f77e933b3=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Mon,=2026=20Aug=202024=2017:18:25=20+0200=0A= Subject:=20[PATCH]=20Better=20ad-hoc=20Emacs=20release=20of=20symbol=20= introduction=20override=0A=0AThe=20file=20etc/symbol-releases.eld=20now=20= contains=20explicit=20version=0Ainformation=20for=20selected=20symbols=20= that=20our=20NEWS*=20scraper=20doesn't=0Aresolve=20correctly.=0A=0A*=20= etc/NEWS.unknown:=20Remove=20this=20file,=20replaced=20with...=0A*=20= etc/symbol-releases.eld:=20...this=20new=20file.=0A*=20lisp/help-fns.el=20= (help-fns--first-release-override)=0A= (help-fns--mention-first-function-release)=0A= (help-fns--mention-first-variable-release):=20New.=0A= (help-fns--mention-first-release):=20Try=20the=20override=20information=20= first=0Abefore=20scraping=20the=20NEWS*=20files.=0A---=0A=20= etc/NEWS.unknown=20=20=20=20=20=20=20=20|=2031=20= -------------------------------=0A=20etc/symbol-releases.eld=20|=2036=20= ++++++++++++++++++++++++++++++++++++=0A=20lisp/help-fns.el=20=20=20=20=20= =20=20=20|=2033=20++++++++++++++++++++++++++++-----=0A=203=20files=20= changed,=2064=20insertions(+),=2036=20deletions(-)=0A=20delete=20mode=20= 100644=20etc/NEWS.unknown=0A=20create=20mode=20100644=20= etc/symbol-releases.eld=0A=0Adiff=20--git=20a/etc/NEWS.unknown=20= b/etc/NEWS.unknown=0Adeleted=20file=20mode=20100644=0Aindex=20= eafdc953cac..00000000000=0A---=20a/etc/NEWS.unknown=0A+++=20/dev/null=0A= @@=20-1,31=20+0,0=20@@=0A-This=20file=20contains=20mentions=20of=20= functions=20and=20variables=20whose=0A-version=20of=20introduction=20= would=20otherwise=20be=20guessed=20incorrectly=0A-by=20'M-x=20= describe-function'.=0A-=0A-Since=20much=20of=20early=20Emacs=20source=20= history=20is=20lost,=20these=20versions=20are=0A-conservative=20= estimates:=20the=20actual=20version=20of=20first=20appearance=20may=20= very=0A-well=20be=20much=20earlier.=0A-=0A-*=20Changes=20in=20Emacs=20= 19.7=0A-**=20'defsubst'=0A-=0A-*=20Changes=20in=20Emacs=2018.59=0A-**=20= 'mark'=0A-=0A-*=20Changes=20in=20Emacs=2013.8=0A-This=20may=20be=20the=20= earliest=20surviving=20version=20with=20source=20code,=20although=0A= -damaged.=20=20See=0A= -https://github.com/larsbrinkhoff/emacs-history/decuslib.com/decus/vax85b/= gnuemax=0A-=0A-**=20'nthcdr'=0A-**=20'nreverse=0A-**=20'let*'=0A-**=20= 'rassq'=0A-**=20'>=3D'=0A-**=20'transpose-sexps'=0A-**=20= 'buffer-modified-p'=0A-**=20'current-column'=0A-**=20'downcase'=0A-**=20= 'previous-line'=0A-**=20'catch',=20'throw'=0A-**=20'count-lines'=0Adiff=20= --git=20a/etc/symbol-releases.eld=20b/etc/symbol-releases.eld=0Anew=20= file=20mode=20100644=0Aindex=2000000000000..dc991ae5747=0A---=20= /dev/null=0A+++=20b/etc/symbol-releases.eld=0A@@=20-0,0=20+1,36=20@@=0A= +;;=20Emacs=20versions=20when=20certain=20symbols=20and=20variables=20= were=20first=20introduced,=0A+;;=20for=20use=20in=20`describe-function'.=0A= +;;=0A+;;=20This=20file=20is=20used=20to=20explicitly=20override=20the=20= heuristic=20scraping=20NEWS*=0A+;;=20files,=20when=20that=20would=20= result=20in=20misleading=20information.=0A+;;=0A+;;=20It=20should=20= contain=20a=20single=20list=20of=20(VERSION=20TYPE=20SYMBOL),=20where=0A= +;;=20VERSION=20is=20the=20Emacs=20version=20when=20SYMBOL=20was=20= introduced=20as=20a=20TYPE,=0A+;;=20TYPE=20being=20`fun'=20or=20`var'.=0A= +=0A+(=0A+=20("28.1"=20fun=20always)=0A+=0A+;;=20Since=20much=20of=20= early=20Emacs=20source=20history=20is=20lost,=20these=20versions=20are=0A= +;;=20conservative=20estimates:=20the=20actual=20version=20of=20first=20= appearance=20may=20very=0A+;;=20well=20be=20much=20earlier.=0A+;;=2013.8=20= may=20be=20the=20earliest=20surviving=20version=20with=20source=20code,=20= although=0A+;;=20damaged.=20=20See=0A+;;=20= https://github.com/larsbrinkhoff/emacs-history/decuslib.com/decus/vax85b/g= nuemax=0A+=0A+=20("19.7"=20fun=20defsubst)=0A+=20("18.59"=20fun=20mark)=0A= +=20("13.8"=20fun=20nthcdr)=0A+=20("13.8"=20fun=20nreverse)=0A+=20= ("13.8"=20fun=20let*)=0A+=20("13.8"=20fun=20rassq)=0A+=20("13.8"=20fun=20= >=3D)=0A+=20("13.8"=20fun=20transpose-sexps)=0A+=20("13.8"=20fun=20= buffer-modified-p)=0A+=20("13.8"=20fun=20current-column)=0A+=20("13.8"=20= fun=20downcase)=0A+=20("13.8"=20fun=20previous-line)=0A+=20("13.8"=20fun=20= catch)=0A+=20("13.8"=20fun=20throw)=0A+=20("13.8"=20fun=20count-lines)=0A= +=20)=0Adiff=20--git=20a/lisp/help-fns.el=20b/lisp/help-fns.el=0Aindex=20= 8a2ae79736f..3d3b841d827=20100644=0A---=20a/lisp/help-fns.el=0A+++=20= b/lisp/help-fns.el=0A@@=20-869,6=20+869,21=20@@=20= help-fns--first-release-regexp=0A=20=20=20=20=20))=0A=20=0A=20=0A+(defun=20= help-fns--first-release-override=20(symbol=20type)=0A+=20=20"The=20first=20= release=20defining=20SYMBOL=20of=20TYPE,=20or=20nil.=0A+TYPE=20indicates=20= the=20namespace=20and=20is=20`fun'=20or=20`var'."=0A+=20=20(let*=20= ((sym-rel-file=20(expand-file-name=20"symbol-releases.eld"=20= data-directory))=0A+=20=20=20=20=20=20=20=20=20(tuples=0A+=20=20=20=20=20= =20=20=20=20=20(with-temp-buffer=0A+=20=20=20=20=20=20=20=20=20=20=20=20= (ignore-errors=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (insert-file-contents=20sym-rel-file)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(goto-char=20(point-min))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(read=20(current-buffer))))))=0A+=20=20=20=20(unless=20(cl-every=20= (lambda=20(x)=20(and=20(=3D=20(length=20x)=203)=20(stringp=20(car=20= x))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= tuples)=0A+=20=20=20=20=20=20(error=20"Bad=20%s=20format"=20= sym-rel-file))=0A+=20=20=20=20(car=20(rassoc=20(list=20type=20symbol)=20= tuples))))=0A+=0A=20(defun=20help-fns--first-release=20(symbol)=0A=20=20=20= "Return=20the=20likely=20first=20release=20that=20defined=20SYMBOL,=20or=20= nil."=0A=20=20=20;;=20Code=20below=20relies=20on=20the=20etc/NEWS*=20= files.=0A@@=20-949,16=20+964,24=20@@=20help-fns--first-release=0A=20;;=20= =20=20=20=20=20=20(display-buffer=20(current-buffer)))))=0A=20=0A=20= (add-hook=20'help-fns-describe-function-functions=0A-=20=20=20=20=20=20=20= =20=20=20#'help-fns--mention-first-release)=0A+=20=20=20=20=20=20=20=20=20= =20#'help-fns--mention-first-function-release)=0A=20(add-hook=20= 'help-fns-describe-variable-functions=0A-=20=20=20=20=20=20=20=20=20=20= #'help-fns--mention-first-release)=0A-(defun=20= help-fns--mention-first-release=20(object)=0A+=20=20=20=20=20=20=20=20=20= =20#'help-fns--mention-first-variable-release)=0A+=0A+(defun=20= help-fns--mention-first-function-release=20(object)=0A+=20=20= (help-fns--mention-first-release=20object=20'fun))=0A+=0A+(defun=20= help-fns--mention-first-variable-release=20(object)=0A=20=20=20;;=20= Don't=20output=20anything=20if=20we've=20already=20output=20the=20= :version=20from=0A=20=20=20;;=20the=20`defcustom'.=0A=20=20=20(unless=20= (memq=20'help-fns--customize-variable-version=0A=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20help-fns--activated-functions)=0A-=20=20=20=20= (when-let=20((first=20(and=20(symbolp=20object)=0A-=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (help-fns--first-release=20object))))=0A+=20=20=20=20= (help-fns--mention-first-release=20object=20'var)))=0A+=0A+(defun=20= help-fns--mention-first-release=20(object=20type)=0A+=20=20(when=20= (symbolp=20object)=0A+=20=20=20=20(when-let=20((first=20(or=20= (help-fns--first-release-override=20object=20type)=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (help-fns--first-release=20object))))=0A=20=20=20=20=20=20=20= (with-current-buffer=20standard-output=0A=20=20=20=20=20=20=20=20=20= (insert=20(format=20"=20=20Probably=20introduced=20at=20or=20before=20= Emacs=20version=20%s.\n"=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20first))))))=0A--=20=0A2.32.0=20(Apple=20= Git-132)=0A=0A= --Apple-Mail=_3FD76543-F40D-4911-B12E-71E51A8208B0--