* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
@ 2023-07-09 17:08 sbaugh
2023-07-10 14:13 ` Philip Kaludercic
0 siblings, 1 reply; 16+ messages in thread
From: sbaugh @ 2023-07-09 17:08 UTC (permalink / raw)
To: 64543
[-- Attachment #1: Type: text/plain, Size: 4685 bytes --]
Tags: patch
Previously we just assumed that the car of an element of
custom-current-group-alist was a filename. But actually it can be nil
if a custom group was defined by just evaling Lisp.
* lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
custom group was defined by eval.
In GNU Emacs 29.0.92 (build 13, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.16.0, Xaw3d scroll bars) of 2023-07-04 built on earth
Repository revision: 5ef6e74202e2bdae5999913bff527a4a16d9176e
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12101008
System Description: NixOS 23.05 (Stoat)
Configured using:
'configure --cache-file=config.cache --with-x-toolkit=lucid
--with-tree-sitter --with-xinput2 CC=gcc PKG_CONFIG=pkg-config
PKG_CONFIG_PATH=/nix/store/s3r15m8wbl4wqk4khqlf41ikryhjm1bi-file-5.44-dev/lib/pkgconfig:/nix/store/f9jbn419h46c78z1pi49yn9a8742b0ql-gnutls-3.8.0-dev/lib/pkgconfig:/nix/store/knq0pv08wm4dins7m4jh0n7cv7pjvdjr-nettle-3.9.1-dev/lib/pkgconfig:/nix/store/dy8p07vrrhdgpnl45xz9c0k0didbikdh-gmp-with-cxx-6.2.1-dev/lib/pkgconfig:/nix/store/6hkdabzyqhyq5ypq4c9b2cibr1d1zg1s-harfbuzz-7.3.0-dev/lib/pkgconfig:/nix/store/hyns944pqgblw4icskylvlpm5krmfvcr-graphite2-1.3.14-dev/lib/pkgconfig:/nix/store/08cdp9vgvy023ysfa2y01gzsm2jv6phx-jansson-2.14/lib/pkgconfig:/nix/store/nqlbk40lh7igs61l77dwgdkn8dc2akcm-libxml2-2.10.4-dev/lib/pkgconfig:/nix/store/b3axl73v3yvqqx7g47njqb5wzxvm280p-zlib-1.2.13-dev/lib/pkgconfig:/nix/store/3f2rc4inlcxmq11718qmz94v2rpybw70-ncurses-6.4-dev/lib/pkgconfig:/nix/store/bxy745kyb1fwhpfkiaaz3wgvpkpvwcpq-dbus-1.14.8-dev/lib/pkgconfig:/nix/store/9714v7c4cgpm4yqcyqk6n9xw9iq3a1bs-expat-2.5.0-dev/lib/pkgconfig:/nix/store/zzi7pcadidqh798yddxv6pwdbwpkikma-libselinux-3.3-dev/lib/pkgconfig:/nix/store/w14j7y5nl14vy4ikcivss35jmrqq3fxj-libotf-0.9.16-dev/lib/pkgconfig:/nix/store/arhk7hsch4scyv6m24fw03yq6wq5wbbx-m17n-lib-1.8.2/lib/pkgconfig:/nix/store/1jbbrny8xcjb68lb5m30cvxycfkyhvsv-sqlite-3.42.0-dev/lib/pkgconfig:/nix/store/5vx779yqkxaysv48gicwlgv0ippbrhc4-systemd-253.5-dev/lib/pkgconfig:/nix/store/5vx779yqkxaysv48gicwlgv0ippbrhc4-systemd-253.5-dev/share/pkgconfig:/nix/store/djifahvk3qp06ssqxv6gy1ixdnnypr9s-tree-sitter-0.20.8/lib/pkgconfig:/nix/store/74aasy1d2r5y27zn68cs1rxwy1llzn05-libwebp-1.3.0/lib/pkgconfig:/nix/store/8sk7bp89iwb4gw96fq6xakb6lcy2x52n-Xaw3d-1.6.3/lib/pkgconfig:/nix/store/ppvb3ha8148am3ajnzxnm6i3ri38c01n-libXmu-1.1.3-dev/lib/pkgconfig:/nix/store/jyxf8cjbj3nzh00x48nfram79i63chdi-libX11-1.8.6-dev/lib/pkgconfig:/nix/store/zk9v0nr5zdfi1ybkhcfifmxsng7hfl23-xorgproto-2021.5/share/pkgconfig:/nix/store/3q1k18v8aa6mxs538bha4ry0mp3m321l-libxcb-1.14-dev/lib/pkgconfig:/nix/store/hcscz68zvfk1skyb25wrnha959f6hhrc-libXt-1.2.1-dev/lib/pkgconfig:/nix/store/kl55wj6qc3v481jsgvzm5w2csnhm84zf-libSM-1.2.3-dev/lib/pkgconfig:/nix/store/s3f67kvsn55rxp2rc98xv0hkq364yci1-libICE-1.0.10-dev/lib/pkgconfig:/nix/store/rsw4ri8025jgln8vpsrmg82bzgbcw3zr-cairo-1.16.0-dev/lib/pkgconfig:/nix/store/jir0rqbcy0d9qr9kf5cwf2yphql4ykyw-fontconfig-2.14.2-dev/lib/pkgconfig:/nix/store/n2g3xblaz1k4civv1z6hhm1nsmp3m17p-freetype-2.13.0-dev/lib/pkgconfig:/nix/store/isbmyzm2shmp0wsjr4cy45v2i58h2zvw-bzip2-1.0.8-dev/lib/pkgconfig:/nix/store/bl2qwy78jr2sqm260imgxmd5dzhjqvag-brotli-1.0.9-dev/lib/pkgconfig:/nix/store/z96jh9ag5b3565lwwb5chjb9bfp5i2qv-libpng-apng-1.6.39-dev/lib/pkgconfig:/nix/store/jjd4z18grhky6lh8n463v648nnf5628b-pixman-0.42.2/lib/pkgconfig:/nix/store/qd14wrazwcspjv3q65vgh35pl7b8nifq-libXext-1.3.4-dev/lib/pkgconfig:/nix/store/gj8i21xx87ip9b971j2d1m0rmrzyhbir-libXau-1.0.9-dev/lib/pkgconfig:/nix/store/4gpinwwdqhi927xkrfpr1hvdd56baxgk-libXrender-0.9.10-dev/lib/pkgconfig:/nix/store/d1jbygs6hcn6dysk706i9zf07yd18wmr-xcb-util-0.4.1-dev/lib/pkgconfig:/nix/store/hdc4ika0mb1cv0cf6dchwxbr004rc50i-glib-2.76.3-dev/lib/pkgconfig:/nix/store/wxyh848a6xcqy2v8727vcwspri53pqwi-libffi-3.4.4-dev/lib/pkgconfig:/nix/store/42jx72681qzliic0xsjhvx24cil2gapk-libGL-1.6.0-dev/lib/pkgconfig:/nix/store/b9lmdkxpvgkj6zc956fvhshzisqpi767-libglvnd-1.6.0-dev/lib/pkgconfig:/nix/store/gff29sbhg1gcw969mpm5rb693kj5v18w-libXaw-1.0.14-dev/lib/pkgconfig:/nix/store/776xijk8rsb1b4c0dsxwq0k82bvm7mm9-libXpm-3.5.15-dev/lib/pkgconfig:/nix/store/qizdmm43xi65mdngal8bpbpqcdc8290d-libjpeg-turbo-2.1.5.1-dev/lib/pkgconfig:/nix/store/db7ix62fx4nvr9j1fjdvnznl2npff4pr-librsvg-2.55.1-dev/lib/pkgconfig:/nix/store/q0hg0951w1dv9y40m9ggln8phwil6lxc-gdk-pixbuf-2.42.10-dev/lib/pkgconfig:/nix/store/34rr5nvgljsc4bi3mxjxg8abmjr1f7hn-libtiff-4.5.0-dev/lib/pkgconfig:/nix/store/zwkr4kjcjs213pw9mhzi46bzlw6qwxzq-libdeflate-1.18/lib/pkgconfig:/nix/store/6na552yzwml88j8g5vqf5h9ir3vw8myi-xz-5.4.3-dev/lib/pkgconfig'
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-package-report-bug-don-t-fail-on-custom-groups-defin.patch --]
[-- Type: text/patch, Size: 1175 bytes --]
From 663f36f52c7c8e66e54d4e93ce037428bf1b3dd0 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@catern.com>
Date: Sun, 9 Jul 2023 12:59:50 -0400
Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
eval
Previously we just assumed that the car of an element of
custom-current-group-alist was a filename. But actually it can be nil
if a custom group was defined by just evaling Lisp.
* lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
custom group was defined by eval.
---
lisp/emacs-lisp/package.el | 1 +
1 file changed, 1 insertion(+)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 3e6acd9b388..f67e99e04b5 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -4642,6 +4642,7 @@ package-report-bug
(boundp (car ent))
(not (eq (custom--standard-value (car ent))
(default-toplevel-value (car ent))))
+ (car group)
(file-in-directory-p (car group) (package-desc-dir desc)))
(push (car ent) vars))))
(dlet ((reporter-prompt-for-summary-p t))
--
2.41.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-09 17:08 bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval sbaugh
@ 2023-07-10 14:13 ` Philip Kaludercic
2023-07-12 19:26 ` sbaugh
0 siblings, 1 reply; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-10 14:13 UTC (permalink / raw)
To: sbaugh; +Cc: 64543
sbaugh@catern.com writes:
Thanks,
> From: Spencer Baugh <sbaugh@catern.com>
> Date: Sun, 9 Jul 2023 12:59:50 -0400
> Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
> eval
>
> Previously we just assumed that the car of an element of
> custom-current-group-alist was a filename. But actually it can be nil
> if a custom group was defined by just evaling Lisp.
Where is this behaviour documented? I couldn't reproduce it with a
simple experiment.
> * lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
> custom group was defined by eval.
> ---
> lisp/emacs-lisp/package.el | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
> index 3e6acd9b388..f67e99e04b5 100644
> --- a/lisp/emacs-lisp/package.el
> +++ b/lisp/emacs-lisp/package.el
> @@ -4642,6 +4642,7 @@ package-report-bug
> (boundp (car ent))
> (not (eq (custom--standard-value (car ent))
> (default-toplevel-value (car ent))))
> + (car group)
If you are checking for (car group), when do this in the loop instead
of wrapping the entire `dolist'?
> (file-in-directory-p (car group) (package-desc-dir desc)))
> (push (car ent) vars))))
> (dlet ((reporter-prompt-for-summary-p t))
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-10 14:13 ` Philip Kaludercic
@ 2023-07-12 19:26 ` sbaugh
2023-07-12 19:48 ` Philip Kaludercic
2023-07-13 4:54 ` Eli Zaretskii
0 siblings, 2 replies; 16+ messages in thread
From: sbaugh @ 2023-07-12 19:26 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: 64543
[-- Attachment #1: Type: text/plain, Size: 1561 bytes --]
Philip Kaludercic <philipk@posteo.net> writes:
> sbaugh@catern.com writes:
>
> Thanks,
>
>> From: Spencer Baugh <sbaugh@catern.com>
>> Date: Sun, 9 Jul 2023 12:59:50 -0400
>> Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
>> eval
>>
>> Previously we just assumed that the car of an element of
>> custom-current-group-alist was a filename. But actually it can be nil
>> if a custom group was defined by just evaling Lisp.
>
> Where is this behaviour documented? I couldn't reproduce it with a
> simple experiment.
To reproduce:
M-: (defgroup mygroup nil "my group") RET
I don't think it's documented anywhere? custom-current-group-alist is
not documented so this wouldn't be either.
>> * lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
>> custom group was defined by eval.
>> ---
>> lisp/emacs-lisp/package.el | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
>> index 3e6acd9b388..f67e99e04b5 100644
>> --- a/lisp/emacs-lisp/package.el
>> +++ b/lisp/emacs-lisp/package.el
>> @@ -4642,6 +4642,7 @@ package-report-bug
>> (boundp (car ent))
>> (not (eq (custom--standard-value (car ent))
>> (default-toplevel-value (car ent))))
>> + (car group)
>
> If you are checking for (car group), when do this in the loop instead
> of wrapping the entire `dolist'?
Good point. I was just copying the last condition in the and. Lifted
them both out of the loop:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Support-transforming-the-dirname-used-by-uniquify.patch --]
[-- Type: text/x-patch, Size: 5803 bytes --]
From 2873d4c482acfd1ced749d593fd512c408e0a578 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@catern.com>
Date: Sun, 9 Jul 2023 22:21:03 -0400
Subject: [PATCH] Support transforming the dirname used by uniquify
By transforming the dirname, we can add additional information to use
during uniquifying. A basic one: uniquifying buffer names based on
the project name.
* lisp/progmodes/project.el (project-uniquify-dirname-transform): Add.
* lisp/uniquify.el (uniquify-dirname-transform-default)
(uniquify-dirname-transform): Add. (bug#62621)
(uniquify-rationalize-file-buffer-names, uniquify-buffer-file-name):
Use uniquify-dirname-transform.
* test/lisp/uniquify-tests.el (uniquify-home,
uniquify-project-transform): Add tests.
---
lisp/progmodes/project.el | 12 ++++++++++++
lisp/uniquify.el | 26 +++++++++++++++++++++-----
test/lisp/uniquify-tests.el | 33 +++++++++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 5 deletions(-)
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index d482cc24d70..78f9fb410c1 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1835,5 +1835,17 @@ project-switch-project
(let ((project-current-directory-override dir))
(call-interactively command))))
+;;;###autoload
+(defun project-uniquify-dirname-transform (dirname)
+ "Include `project-name' in DIRNAME if in a project."
+ (if-let (proj (project-current nil dirname))
+ (let ((root (project-root proj)))
+ (expand-file-name
+ (file-name-concat
+ (file-name-directory root)
+ (project-name proj)
+ (file-relative-name dirname root))))
+ dirname))
+
(provide 'project)
;;; project.el ends here
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index d1ca455b673..b2f28a10d51 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -168,6 +168,20 @@ uniquify-list-buffers-directory-modes
That means that when `buffer-file-name' is set to nil, `list-buffers-directory'
contains the name of the directory which the buffer is visiting.")
+(defun uniquify-dirname-transform-default (dirname)
+ "Simply return DIRNAME unchanged."
+ dirname)
+
+(defcustom uniquify-dirname-transform #'uniquify-dirname-transform-default
+ "A function to transform the dirname used to uniquify a buffer.
+
+It takes a single argument: the directory of the buffer. It
+should return a string filename (which does not need to actually
+exist in the filesystem) to use for uniquifying the buffer name."
+ :type '(choice (function-item uniquify-dirname-transform-default)
+ function)
+ :group 'uniquify)
+
;;; Utilities
;; uniquify-fix-list data structure
@@ -209,7 +223,8 @@ uniquify-rationalize-file-buffer-names
;; this buffer.
(with-current-buffer newbuf (setq uniquify-managed nil))
(when dirname
- (setq dirname (expand-file-name (directory-file-name dirname)))
+ (setq dirname (funcall uniquify-dirname-transform
+ (expand-file-name (directory-file-name dirname))))
(let ((fix-list (list (uniquify-make-item base dirname newbuf
nil)))
items)
@@ -268,10 +283,11 @@ uniquify-buffer-file-name
(if (memq major-mode uniquify-list-buffers-directory-modes)
list-buffers-directory))))
(when filename
- (directory-file-name
- (file-name-directory
- (expand-file-name
- (directory-file-name filename))))))))
+ (funcall uniquify-dirname-transform
+ (directory-file-name
+ (file-name-directory
+ (expand-file-name
+ (directory-file-name filename)))))))))
(defun uniquify-rerationalize-w/o-cb (fix-list)
"Re-rationalize the buffers in FIX-LIST, but ignoring `current-buffer'."
diff --git a/test/lisp/uniquify-tests.el b/test/lisp/uniquify-tests.el
index abd61fa3504..e533c4b644c 100644
--- a/test/lisp/uniquify-tests.el
+++ b/test/lisp/uniquify-tests.el
@@ -88,6 +88,21 @@ uniquify-dirs
'("a/dir/" "b/dir/")))
(mapc #'kill-buffer bufs)))))
+(ert-deftest uniquify-home ()
+ "uniquify works, albeit confusingly, in the presence of directories named \"~\""
+ (let (bufs)
+ (save-excursion
+ (push (find-file-noselect "~") bufs)
+ (push (find-file-noselect "./~") bufs)
+ (should (equal (mapcar #'buffer-name bufs)
+ '("~<test>" "~<>")))
+ (push (find-file-noselect "~/foo") bufs)
+ (push (find-file-noselect "./~/foo") bufs)
+ (should (equal (mapcar #'buffer-name bufs)
+ '("foo<~>" "foo</nonexistent>" "~<test>" "~<>")))
+ (while bufs
+ (kill-buffer (pop bufs))))))
+
(ert-deftest uniquify-rename-to-dir ()
"Giving a buffer a name which matches a directory doesn't rename the buffer"
(let ((uniquify-buffer-name-style 'forward)
@@ -125,5 +140,23 @@ uniquify-space-prefix
(should (equal (buffer-name) "| foo"))
(kill-buffer)))
+(require 'project)
+(ert-deftest uniquify-project-transform ()
+ "`project-uniquify-dirname-transform' works"
+ (let ((uniquify-dirname-transform #'project-uniquify-dirname-transform)
+ (project-vc-name "foo1/bar")
+ bufs)
+ (save-excursion
+ (should (file-exists-p "../README"))
+ (push (find-file-noselect "../README") bufs)
+ (push (find-file-noselect "other/README") bufs)
+ (should (equal (mapcar #'buffer-name bufs)
+ '("README<other>" "README<bar>")))
+ (push (find-file-noselect "foo2/bar/README") bufs)
+ (should (equal (mapcar #'buffer-name bufs)
+ '("README<foo2/bar>" "README<other>" "README<foo1/bar>")))
+ (while bufs
+ (kill-buffer (pop bufs))))))
+
(provide 'uniquify-tests)
;;; uniquify-tests.el ends here
--
2.41.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-12 19:26 ` sbaugh
@ 2023-07-12 19:48 ` Philip Kaludercic
2023-07-12 19:56 ` Spencer Baugh
2023-07-13 4:54 ` Eli Zaretskii
1 sibling, 1 reply; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-12 19:48 UTC (permalink / raw)
To: sbaugh; +Cc: 64543
sbaugh@catern.com writes:
> Philip Kaludercic <philipk@posteo.net> writes:
>
>> sbaugh@catern.com writes:
>>
>> Thanks,
>>
>>> From: Spencer Baugh <sbaugh@catern.com>
>>> Date: Sun, 9 Jul 2023 12:59:50 -0400
>>> Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
>>> eval
>>>
>>> Previously we just assumed that the car of an element of
>>> custom-current-group-alist was a filename. But actually it can be nil
>>> if a custom group was defined by just evaling Lisp.
>>
>> Where is this behaviour documented? I couldn't reproduce it with a
>> simple experiment.
>
> To reproduce:
> M-: (defgroup mygroup nil "my group") RET
OK, I misunderstood your point, I assumed we were talking about
`defcustom' declarations that were evaluated outside the context of a
file.
> I don't think it's documented anywhere? custom-current-group-alist is
> not documented so this wouldn't be either.
>
>>> * lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
>>> custom group was defined by eval.
>>> ---
>>> lisp/emacs-lisp/package.el | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
>>> index 3e6acd9b388..f67e99e04b5 100644
>>> --- a/lisp/emacs-lisp/package.el
>>> +++ b/lisp/emacs-lisp/package.el
>>> @@ -4642,6 +4642,7 @@ package-report-bug
>>> (boundp (car ent))
>>> (not (eq (custom--standard-value (car ent))
>>> (default-toplevel-value (car ent))))
>>> + (car group)
>>
>> If you are checking for (car group), when do this in the loop instead
>> of wrapping the entire `dolist'?
>
> Good point. I was just copying the last condition in the and. Lifted
> them both out of the loop:
>
> From 2873d4c482acfd1ced749d593fd512c408e0a578 Mon Sep 17 00:00:00 2001
> From: Spencer Baugh <sbaugh@catern.com>
> Date: Sun, 9 Jul 2023 22:21:03 -0400
> Subject: [PATCH] Support transforming the dirname used by uniquify
Wrong patch?
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-12 19:48 ` Philip Kaludercic
@ 2023-07-12 19:56 ` Spencer Baugh
2023-07-14 19:44 ` Philip Kaludercic
0 siblings, 1 reply; 16+ messages in thread
From: Spencer Baugh @ 2023-07-12 19:56 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: sbaugh, 64543
[-- Attachment #1: Type: text/plain, Size: 456 bytes --]
Philip Kaludercic <philipk@posteo.net> writes:
> sbaugh@catern.com writes:
>> Good point. I was just copying the last condition in the and. Lifted
>> them both out of the loop:
>>
>> From 2873d4c482acfd1ced749d593fd512c408e0a578 Mon Sep 17 00:00:00 2001
>> From: Spencer Baugh <sbaugh@catern.com>
>> Date: Sun, 9 Jul 2023 22:21:03 -0400
>> Subject: [PATCH] Support transforming the dirname used by uniquify
>
> Wrong patch?
Oops! Here's the right one:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-package-report-bug-don-t-fail-on-custom-groups-defin.patch --]
[-- Type: text/x-patch, Size: 1901 bytes --]
From fb31777bcc1935de351eaa35c1ed679c66d24a92 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@catern.com>
Date: Sun, 9 Jul 2023 12:59:50 -0400
Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
eval
Previously we just assumed that the car of an element of
custom-current-group-alist was a filename. But actually it can be nil
if a custom group was defined by just evaling Lisp.
* lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
custom group was defined by eval.
---
lisp/emacs-lisp/package.el | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 3e6acd9b388..58ca19f7fe2 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -4637,13 +4637,14 @@ package-report-bug
vars)
(dolist-with-progress-reporter (group custom-current-group-alist)
"Scanning for modified user options..."
- (dolist (ent (get (cdr group) 'custom-group))
- (when (and (custom-variable-p (car ent))
- (boundp (car ent))
- (not (eq (custom--standard-value (car ent))
- (default-toplevel-value (car ent))))
- (file-in-directory-p (car group) (package-desc-dir desc)))
- (push (car ent) vars))))
+ (when (and (car group)
+ (file-in-directory-p (car group) (package-desc-dir desc)))
+ (dolist (ent (get (cdr group) 'custom-group))
+ (when (and (custom-variable-p (car ent))
+ (boundp (car ent))
+ (not (eq (custom--standard-value (car ent))
+ (default-toplevel-value (car ent)))))
+ (push (car ent) vars)))))
(dlet ((reporter-prompt-for-summary-p t))
(reporter-submit-bug-report maint name vars))))
--
2.39.3
^ permalink raw reply related [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-12 19:26 ` sbaugh
2023-07-12 19:48 ` Philip Kaludercic
@ 2023-07-13 4:54 ` Eli Zaretskii
1 sibling, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2023-07-13 4:54 UTC (permalink / raw)
To: sbaugh; +Cc: philipk, 64543
> Cc: 64543@debbugs.gnu.org
> From: sbaugh@catern.com
> Date: Wed, 12 Jul 2023 19:26:13 +0000 (UTC)
>
> +(defun uniquify-dirname-transform-default (dirname)
> + "Simply return DIRNAME unchanged."
> + dirname)
If you don't explain the need for its existence in the doc string,
this function looks weirdly redundant.
> +(defcustom uniquify-dirname-transform #'uniquify-dirname-transform-default
> + "A function to transform the dirname used to uniquify a buffer.
Come to think about it, why not use 'identity as the default value?
Then the above weird function could be deleted.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-12 19:56 ` Spencer Baugh
@ 2023-07-14 19:44 ` Philip Kaludercic
2023-07-15 5:49 ` Eli Zaretskii
0 siblings, 1 reply; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-14 19:44 UTC (permalink / raw)
To: Spencer Baugh; +Cc: sbaugh, 'Eli Zaretskii', 64543
Spencer Baugh <sbaugh@janestreet.com> writes:
> Philip Kaludercic <philipk@posteo.net> writes:
>
>> sbaugh@catern.com writes:
>>> Good point. I was just copying the last condition in the and. Lifted
>>> them both out of the loop:
>>>
>>> From 2873d4c482acfd1ced749d593fd512c408e0a578 Mon Sep 17 00:00:00 2001
>>> From: Spencer Baugh <sbaugh@catern.com>
>>> Date: Sun, 9 Jul 2023 22:21:03 -0400
>>> Subject: [PATCH] Support transforming the dirname used by uniquify
>>
>> Wrong patch?
> Oops! Here's the right one:
>
> From fb31777bcc1935de351eaa35c1ed679c66d24a92 Mon Sep 17 00:00:00 2001
> From: Spencer Baugh <sbaugh@catern.com>
> Date: Sun, 9 Jul 2023 12:59:50 -0400
> Subject: [PATCH] package-report-bug: don't fail on custom groups defined by
> eval
>
> Previously we just assumed that the car of an element of
> custom-current-group-alist was a filename. But actually it can be nil
> if a custom group was defined by just evaling Lisp.
>
> * lisp/emacs-lisp/package.el (package-report-bug): Don't fail when a
> custom group was defined by eval.
> ---
> lisp/emacs-lisp/package.el | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
> index 3e6acd9b388..58ca19f7fe2 100644
> --- a/lisp/emacs-lisp/package.el
> +++ b/lisp/emacs-lisp/package.el
> @@ -4637,13 +4637,14 @@ package-report-bug
> vars)
> (dolist-with-progress-reporter (group custom-current-group-alist)
> "Scanning for modified user options..."
> - (dolist (ent (get (cdr group) 'custom-group))
> - (when (and (custom-variable-p (car ent))
> - (boundp (car ent))
> - (not (eq (custom--standard-value (car ent))
> - (default-toplevel-value (car ent))))
> - (file-in-directory-p (car group) (package-desc-dir desc)))
> - (push (car ent) vars))))
> + (when (and (car group)
> + (file-in-directory-p (car group) (package-desc-dir desc)))
> + (dolist (ent (get (cdr group) 'custom-group))
> + (when (and (custom-variable-p (car ent))
> + (boundp (car ent))
> + (not (eq (custom--standard-value (car ent))
> + (default-toplevel-value (car ent)))))
> + (push (car ent) vars)))))
> (dlet ((reporter-prompt-for-summary-p t))
> (reporter-submit-bug-report maint name vars))))
LGTM.
Eli, would it be OK to push this to emacs-29, as this is a bug in the
existing code? Most of the changes are indentation/whitespace changes
anyway.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-14 19:44 ` Philip Kaludercic
@ 2023-07-15 5:49 ` Eli Zaretskii
2023-07-15 7:40 ` Philip Kaludercic
0 siblings, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2023-07-15 5:49 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: sbaugh, 64543, sbaugh
> From: Philip Kaludercic <philipk@posteo.net>
> Cc: sbaugh@catern.com, 64543@debbugs.gnu.org, "'Eli Zaretskii'" <eliz@gnu.org>
> Date: Fri, 14 Jul 2023 19:44:15 +0000
>
> Eli, would it be OK to push this to emacs-29, as this is a bug in the
> existing code? Most of the changes are indentation/whitespace changes
> anyway.
I don't understand the cases in which this bug happens, and so cannot
make the decision. The entire discussion of this bug never described
such a case, AFAICT. (Also, the commit log message could use some
loving care: what does it mean when it says "Previously"?)
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 5:49 ` Eli Zaretskii
@ 2023-07-15 7:40 ` Philip Kaludercic
2023-07-15 8:57 ` Eli Zaretskii
0 siblings, 1 reply; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-15 7:40 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: sbaugh, 64543, sbaugh
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Philip Kaludercic <philipk@posteo.net>
>> Cc: sbaugh@catern.com, 64543@debbugs.gnu.org, "'Eli Zaretskii'" <eliz@gnu.org>
>> Date: Fri, 14 Jul 2023 19:44:15 +0000
>>
>> Eli, would it be OK to push this to emacs-29, as this is a bug in the
>> existing code? Most of the changes are indentation/whitespace changes
>> anyway.
>
> I don't understand the cases in which this bug happens, and so cannot
> make the decision.
Spencer gave this example:
>> Previously we just assumed that the car of an element of
>> custom-current-group-alist was a filename. But actually it can be nil
>> if a custom group was defined by just evaling Lisp.
>
> Where is this behaviour documented? I couldn't reproduce it with a
> simple experiment.
To reproduce:
M-: (defgroup mygroup nil "my group") RET
The patch would ensure that if groups like these are defined (which
might happen by mistake), then `package-report-bug' will remain robust
and not fail due to a unrelated issue.
> The entire discussion of this bug never described
> such a case, AFAICT. (Also, the commit log message could use some
> loving care: what does it mean when it says "Previously"?)
How about
--8<---------------cut here---------------start------------->8---
* lisp/emacs-lisp/package.el (package-report-bug): Do not assume that
every entry in 'custom-current-group-alist' has a non-nil entry for a
filename.
It is possible for a group to not be associated with any file, e.g. when
a 'defgroup' form is evaluated using 'eval-expression'. (bug#64543)
--8<---------------cut here---------------end--------------->8---
A related discussion might be if `custom-declare-group' could be
improved, by not just consulting `load-file-name', but using
`macroexp-file-name'.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 7:40 ` Philip Kaludercic
@ 2023-07-15 8:57 ` Eli Zaretskii
0 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2023-07-15 8:57 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: sbaugh, 64543, sbaugh
> From: Philip Kaludercic <philipk@posteo.net>
> Cc: sbaugh@janestreet.com, sbaugh@catern.com, 64543@debbugs.gnu.org
> Date: Sat, 15 Jul 2023 07:40:01 +0000
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> Eli, would it be OK to push this to emacs-29, as this is a bug in the
> >> existing code? Most of the changes are indentation/whitespace changes
> >> anyway.
> >
> > I don't understand the cases in which this bug happens, and so cannot
> > make the decision.
>
> Spencer gave this example:
>
> >> Previously we just assumed that the car of an element of
> >> custom-current-group-alist was a filename. But actually it can be nil
> >> if a custom group was defined by just evaling Lisp.
> >
> > Where is this behaviour documented? I couldn't reproduce it with a
> > simple experiment.
>
> To reproduce:
> M-: (defgroup mygroup nil "my group") RET
>
> The patch would ensure that if groups like these are defined (which
> might happen by mistake), then `package-report-bug' will remain robust
> and not fail due to a unrelated issue.
Is this case important enough to make this change so late in the
pretest? Spencer, how did you bump into this situation in Real Life?
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
[not found] <c6bc281e-d6e5-4c5c-8315-157c6b089330@email.android.com>
@ 2023-07-15 9:23 ` Eli Zaretskii
2023-07-15 10:05 ` Philip Kaludercic
0 siblings, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2023-07-15 9:23 UTC (permalink / raw)
To: Spencer Baugh; +Cc: sbaugh, philipk, 64543
> Date: Sat, 15 Jul 2023 09:12:48 +0000 (UTC)
> From: Spencer Baugh <sbaugh@catern.com>
> Cc: Philip Kaludercic <philipk@posteo.net>, sbaugh@janestreet.com,
> 64543@debbugs.gnu.org
>
> On Jul 15, 2023 04:57, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > >> Previously we just assumed that the car of an element of
> > >> custom-current-group-alist was a filename. But actually it can be nil
> > >> if a custom group was defined by just evaling Lisp.
> > >
> > > Where is this behaviour documented? I couldn't reproduce it with a
> > > simple experiment.
> >
> > To reproduce:
> > M-: (defgroup mygroup nil "my group") RET
> >
> > The patch would ensure that if groups like these are defined (which
> > might happen by mistake), then `package-report-bug' will remain robust
> > and not fail due to a unrelated issue.
>
> Is this case important enough to make this change so late in the
> pretest? Spencer, how did you bump into this situation in Real Life?
>
> I evaled a buffer containing a defgroup with C-c C-e (or maybe just a region?)
Why did you do that?
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 9:23 ` Eli Zaretskii
@ 2023-07-15 10:05 ` Philip Kaludercic
2023-07-15 10:23 ` Eli Zaretskii
2023-07-15 17:45 ` sbaugh
0 siblings, 2 replies; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-15 10:05 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Spencer Baugh, 64543, sbaugh
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Sat, 15 Jul 2023 09:12:48 +0000 (UTC)
>> From: Spencer Baugh <sbaugh@catern.com>
>> Cc: Philip Kaludercic <philipk@posteo.net>, sbaugh@janestreet.com,
>> 64543@debbugs.gnu.org
>>
>> On Jul 15, 2023 04:57, Eli Zaretskii <eliz@gnu.org> wrote:
>>
>> > >> Previously we just assumed that the car of an element of
>> > >> custom-current-group-alist was a filename. But actually it can be nil
>> > >> if a custom group was defined by just evaling Lisp.
>> > >
>> > > Where is this behaviour documented? I couldn't reproduce it with a
>> > > simple experiment.
>> >
>> > To reproduce:
>> > M-: (defgroup mygroup nil "my group") RET
>> >
>> > The patch would ensure that if groups like these are defined (which
>> > might happen by mistake), then `package-report-bug' will remain robust
>> > and not fail due to a unrelated issue.
>>
>> Is this case important enough to make this change so late in the
>> pretest? Spencer, how did you bump into this situation in Real Life?
>>
>> I evaled a buffer containing a defgroup with C-c C-e (or maybe just a region?)
>
> Why did you do that?
Evaluating an entire buffer with C-c C-e is not unreasonable, but it
will not bind `load-file-name', which `load-file' would have done, but
there is no binding for that.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 10:05 ` Philip Kaludercic
@ 2023-07-15 10:23 ` Eli Zaretskii
2023-07-15 23:33 ` Philip Kaludercic
2023-07-15 17:45 ` sbaugh
1 sibling, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2023-07-15 10:23 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: sbaugh, 64543, sbaugh
> From: Philip Kaludercic <philipk@posteo.net>
> Cc: Spencer Baugh <sbaugh@catern.com>, sbaugh@janestreet.com,
> 64543@debbugs.gnu.org
> Date: Sat, 15 Jul 2023 10:05:13 +0000
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> I evaled a buffer containing a defgroup with C-c C-e (or maybe just a region?)
> >
> > Why did you do that?
>
> Evaluating an entire buffer with C-c C-e is not unreasonable, but it
> will not bind `load-file-name', which `load-file' would have done, but
> there is no binding for that.
<Shrug> it sounds strange to me.
But okay, please install on emacs-29 with the improved log message,
and thanks.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 10:05 ` Philip Kaludercic
2023-07-15 10:23 ` Eli Zaretskii
@ 2023-07-15 17:45 ` sbaugh
2023-07-16 12:33 ` Philip Kaludercic
1 sibling, 1 reply; 16+ messages in thread
From: sbaugh @ 2023-07-15 17:45 UTC (permalink / raw)
To: Philip Kaludercic; +Cc: sbaugh, Eli Zaretskii, 64543
Philip Kaludercic <philipk@posteo.net> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> Date: Sat, 15 Jul 2023 09:12:48 +0000 (UTC)
>>> From: Spencer Baugh <sbaugh@catern.com>
>>> Cc: Philip Kaludercic <philipk@posteo.net>, sbaugh@janestreet.com,
>>> 64543@debbugs.gnu.org
>>>
>>> On Jul 15, 2023 04:57, Eli Zaretskii <eliz@gnu.org> wrote:
>>>
>>> > >> Previously we just assumed that the car of an element of
>>> > >> custom-current-group-alist was a filename. But actually it
>>> > >> can be nil
>>> > >> if a custom group was defined by just evaling Lisp.
>>> > >
>>> > > Where is this behaviour documented? I couldn't reproduce it with a
>>> > > simple experiment.
>>> >
>>> > To reproduce:
>>> > M-: (defgroup mygroup nil "my group") RET
>>> >
>>> > The patch would ensure that if groups like these are defined (which
>>> > might happen by mistake), then `package-report-bug' will remain robust
>>> > and not fail due to a unrelated issue.
>>>
>>> Is this case important enough to make this change so late in the
>>> pretest? Spencer, how did you bump into this situation in Real Life?
>>>
>>> I evaled a buffer containing a defgroup with C-c C-e (or maybe just
>>> a region?)
>>
>> Why did you do that?
>
> Evaluating an entire buffer with C-c C-e is not unreasonable, but it
> will not bind `load-file-name', which `load-file' would have done, but
> there is no binding for that.
Maybe we should add a binding for load-file? Or maybe C-c C-e should
bind load-file-name if the region is not active?
Btw, just curious: how do others test modifications they make to Lisp
files? I usually make a couple changes to several functions or
variables and then reloading the whole file is easier than going defun
by defun.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 10:23 ` Eli Zaretskii
@ 2023-07-15 23:33 ` Philip Kaludercic
0 siblings, 0 replies; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-15 23:33 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: sbaugh, 64543-done, sbaugh
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Philip Kaludercic <philipk@posteo.net>
>> Cc: Spencer Baugh <sbaugh@catern.com>, sbaugh@janestreet.com,
>> 64543@debbugs.gnu.org
>> Date: Sat, 15 Jul 2023 10:05:13 +0000
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> >> I evaled a buffer containing a defgroup with C-c C-e (or maybe
>> > just a region?)
>> >
>> > Why did you do that?
>>
>> Evaluating an entire buffer with C-c C-e is not unreasonable, but it
>> will not bind `load-file-name', which `load-file' would have done, but
>> there is no binding for that.
>
> <Shrug> it sounds strange to me.
>
> But okay, please install on emacs-29 with the improved log message,
> and thanks.
Done.
^ permalink raw reply [flat|nested] 16+ messages in thread
* bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval
2023-07-15 17:45 ` sbaugh
@ 2023-07-16 12:33 ` Philip Kaludercic
0 siblings, 0 replies; 16+ messages in thread
From: Philip Kaludercic @ 2023-07-16 12:33 UTC (permalink / raw)
To: sbaugh; +Cc: sbaugh, Eli Zaretskii, 64543
sbaugh@catern.com writes:
> Philip Kaludercic <philipk@posteo.net> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>>> Date: Sat, 15 Jul 2023 09:12:48 +0000 (UTC)
>>>> From: Spencer Baugh <sbaugh@catern.com>
>>>> Cc: Philip Kaludercic <philipk@posteo.net>, sbaugh@janestreet.com,
>>>> 64543@debbugs.gnu.org
>>>>
>>>> On Jul 15, 2023 04:57, Eli Zaretskii <eliz@gnu.org> wrote:
>>>>
>>>> > >> Previously we just assumed that the car of an element of
>>>> > >> custom-current-group-alist was a filename. But actually it
>>>> > >> can be nil
>>>> > >> if a custom group was defined by just evaling Lisp.
>>>> > >
>>>> > > Where is this behaviour documented? I couldn't reproduce it with a
>>>> > > simple experiment.
>>>> >
>>>> > To reproduce:
>>>> > M-: (defgroup mygroup nil "my group") RET
>>>> >
>>>> > The patch would ensure that if groups like these are defined (which
>>>> > might happen by mistake), then `package-report-bug' will remain robust
>>>> > and not fail due to a unrelated issue.
>>>>
>>>> Is this case important enough to make this change so late in the
>>>> pretest? Spencer, how did you bump into this situation in Real Life?
>>>>
>>>> I evaled a buffer containing a defgroup with C-c C-e (or maybe just
>>>> a region?)
>>>
>>> Why did you do that?
>>
>> Evaluating an entire buffer with C-c C-e is not unreasonable, but it
>> will not bind `load-file-name', which `load-file' would have done, but
>> there is no binding for that.
>
> Maybe we should add a binding for load-file? Or maybe C-c C-e should
> bind load-file-name if the region is not active?
I am not familiar enough with the intention between distinguishing
evaluation and loading to comment on this, or where the distinction
/should/ matter.
> Btw, just curious: how do others test modifications they make to Lisp
> files? I usually make a couple changes to several functions or
> variables and then reloading the whole file is easier than going defun
> by defun.
I either eval the defuns right after editing them using C-M-x or I'd
infrequently use M-x load-file.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2023-07-16 12:33 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-09 17:08 bug#64543: [PATCH] package-report-bug: don't fail on custom groups defined by eval sbaugh
2023-07-10 14:13 ` Philip Kaludercic
2023-07-12 19:26 ` sbaugh
2023-07-12 19:48 ` Philip Kaludercic
2023-07-12 19:56 ` Spencer Baugh
2023-07-14 19:44 ` Philip Kaludercic
2023-07-15 5:49 ` Eli Zaretskii
2023-07-15 7:40 ` Philip Kaludercic
2023-07-15 8:57 ` Eli Zaretskii
2023-07-13 4:54 ` Eli Zaretskii
[not found] <c6bc281e-d6e5-4c5c-8315-157c6b089330@email.android.com>
2023-07-15 9:23 ` Eli Zaretskii
2023-07-15 10:05 ` Philip Kaludercic
2023-07-15 10:23 ` Eli Zaretskii
2023-07-15 23:33 ` Philip Kaludercic
2023-07-15 17:45 ` sbaugh
2023-07-16 12:33 ` Philip Kaludercic
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).