* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
@ 2022-01-28 15:03 Lars Ingebrigtsen
2023-09-09 22:23 ` Mauro Aranda
0 siblings, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2022-01-28 15:03 UTC (permalink / raw)
To: 53606
`M-x customize-option RET bibtex-biblatex-entry-alist RET'
takes a very long time -- more than 20 seconds on this laptop. It's a
long alist, but it shouldn't take that long.
In GNU Emacs 29.0.50 (build 9, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.16.0)
of 2022-01-24 built on giant
Repository revision: 77b72f77b3a5d13fc6e71746dee2cf68305057e2
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Debian GNU/Linux bookworm/sid
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2022-01-28 15:03 bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist Lars Ingebrigtsen
@ 2023-09-09 22:23 ` Mauro Aranda
2023-09-09 22:51 ` Mauro Aranda
0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-09 22:23 UTC (permalink / raw)
To: 53606; +Cc: Lars Ingebrigtsen
Lars Ingebrigtsen <larsi@gnus.org> writes:
> `M-x customize-option RET bibtex-biblatex-entry-alist RET'
>
> takes a very long time -- more than 20 seconds on this laptop. It's a
> long alist, but it shouldn't take that long.
I don't have any concrete ideas on how to speed it up on the Widget
library side. But looking at the defcustom for
bibtex-biblatex-entry-alist I noted two things that can help to create
the Customize buffer more quickly:
1) It uses a custom widget derived from the lazy widget, but doesn't
provide a :tag. That makes it look awful and giving it a proper :tag
reduced
the buffer creation time somewhat in my testings.
2) More importantly, the bibtex-entry-alist widget looks like this:
(define-widget 'bibtex-entry-alist 'lazy
"Format of `bibtex-BibTeX-entry-alist' and friends."
:type '(repeat (group (string :tag "Entry type")
(string :tag "Documentation")
(repeat :tag "Required fields"
(group (string :tag "Field")
(option (choice :tag "Comment"
:value nil
(const nil) string))
(option (choice :tag "Init"
:value nil
(const nil)
string function))
(option (choice :tag
"Alternative" :value nil
(const nil)
integer))))
(repeat :tag "Crossref fields"
(group (string :tag "Field")
(option (choice :tag "Comment"
:value nil
(const nil) string))
(option (choice :tag "Init"
:value nil
(const nil)
string function))
(option (choice :tag
"Alternative" :value nil
(const nil)
integer))))
(repeat :tag "Optional fields"
(group (string :tag "Field")
(option (choice :tag "Comment"
:value nil
(const nil) string))
(option (choice :tag "Init"
:value nil
(const nil)
string function))
(option (choice :tag
"Alternative" :value nil
(const nil)
integer)))))))
Why combine option and choice? That's redundant, specially since the
choice widget allows for the nil value. Removing the `option's and just
leaving the `choice's should be equivalent in functionality, and in my
testings reduced the creation time to the half.
I ran customize-option 5 times and got:
With `option':
(172.526219636 69 6.120602505999997)
Without `option':
(86.260726994 42 3.5430049540000113)
This is without native compilation.
Based on the above results and since there's no lost in functionality, I
propose to make the changes to the bibtex-entry-alist widget. It is a
net gain in speed, and it might make the wait bearable.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-09 22:23 ` Mauro Aranda
@ 2023-09-09 22:51 ` Mauro Aranda
2023-09-10 5:01 ` Eli Zaretskii
0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-09 22:51 UTC (permalink / raw)
To: 53606
On 9/9/23 19:23, Mauro Aranda wrote:
> Based on the above results and since there's no lost in functionality, I
> propose to make the changes to the bibtex-entry-alist widget. It is a
> net gain in speed, and it might make the wait bearable.
Hmm, spoke too soon :-(. Using option is not as redundant as I
thought it was. Using `choice's alone would set all the values that
are nil in the group like so: ("author" nil nil nil), while using it
with `option' allows for setting it as: ("author")
So that's something to consider.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-09 22:51 ` Mauro Aranda
@ 2023-09-10 5:01 ` Eli Zaretskii
2023-09-10 9:49 ` Mauro Aranda
0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2023-09-10 5:01 UTC (permalink / raw)
To: Mauro Aranda; +Cc: 53606
> Date: Sat, 9 Sep 2023 19:51:23 -0300
> From: Mauro Aranda <maurooaranda@gmail.com>
>
> On 9/9/23 19:23, Mauro Aranda wrote:
> > Based on the above results and since there's no lost in functionality, I
> > propose to make the changes to the bibtex-entry-alist widget. It is a
> > net gain in speed, and it might make the wait bearable.
>
> Hmm, spoke too soon :-(. Using option is not as redundant as I
> thought it was. Using `choice's alone would set all the values that
> are nil in the group like so: ("author" nil nil nil), while using it
> with `option' allows for setting it as: ("author")
>
> So that's something to consider.
Thanks for looking into this issue.
Could you please profile this slow operation and post the completely
unfolded profile? I think we should try to understand what exactly
takes so much time in this case.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-10 5:01 ` Eli Zaretskii
@ 2023-09-10 9:49 ` Mauro Aranda
2023-09-10 10:43 ` Eli Zaretskii
0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-10 9:49 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 53606
[-- Attachment #1: Type: text/plain, Size: 42644 bytes --]
On 10/9/23 02:01, Eli Zaretskii wrote:
>> Date: Sat, 9 Sep 2023 19:51:23 -0300
>> From: Mauro Aranda <maurooaranda@gmail.com>
>>
>> On 9/9/23 19:23, Mauro Aranda wrote:
>> > Based on the above results and since there's no lost in
functionality, I
>> > propose to make the changes to the bibtex-entry-alist widget. It is a
>> > net gain in speed, and it might make the wait bearable.
>>
>> Hmm, spoke too soon :-(. Using option is not as redundant as I
>> thought it was. Using `choice's alone would set all the values that
>> are nil in the group like so: ("author" nil nil nil), while using it
>> with `option' allows for setting it as: ("author")
>>
>> So that's something to consider.
>
> Thanks for looking into this issue.
>
> Could you please profile this slow operation and post the completely
> unfolded profile? I think we should try to understand what exactly
> takes so much time in this case.
Here it is. I also attach the result of C-x C-w in the report buffer,
just in case.
25262 97% - call-interactively
25262 97% - funcall-interactively
25262 97% - eval-last-sexp
25262 97% - elisp--eval-last-sexp
25262 97% - eval
25262 97% - progn
25262 97% - progn
25258 97% - customize-option
25246 97% - custom-buffer-create
25246 97% - custom-buffer-create-internal
24870 96% - mapcar
24854 95% - #<compiled -0x17c1d5ffa7b0b3ca>
24854 95% - widget-create
24854 95% - widget-apply
24854 95% - widget-default-create
24854 95% - widget-apply
24854 95% - custom-variable-value-create
24842 95% - widget-create-child-and-convert
24842 95% - widget-apply
24842 95% - widget-default-create
24838 95% - widget-apply
24834 95% - widget-type-value-create
24834 95% - widget-create-child-value
24834 95% - widget-apply
24834 95% - widget-default-create
24834 95% - widget-apply
24834 95% -
widget-editable-list-value-create
24834 95% -
widget-editable-list-entry-create
24690 95% - widget-create-child-value
24690 95% - widget-apply
24690 95% - widget-default-create
24682 95% - widget-apply
24682 95% -
widget-group-value-create
24670 95% -
widget-create-child-value
24670 95% - widget-apply
24670 95% -
widget-default-create
24334 93% - widget-apply
15974 61% -
widget-checklist-value-create
15970 61% -
widget-checklist-add-item
7107 27% -
widget-create-child
7099 27% - widget-apply
7099 27% -
widget-default-create
4187 16% delete-char
2120 8% - widget-apply
2120 8% -
widget-choice-value-create
2112 8% -
widget-create-child-value
2108 8% -
widget-apply
2108 8% -
widget-default-create
1428 5%
delete-char
308 1% princ
4 0% re-search-forward
4 0% widget-put
4 0% -
widget-inline-p
4 0% widget-get
12 0% -
substitute-command-keys
4 0% -
generate-new-buffer
4 0% get-buffer-create
4 0% make-closure
12 0% -
widget-specify-button
12 0% -
widget-apply
8 0% -
widget-default-button-face-get
4 0% widget-get
4 0% -
widget-apply
4 0% -
widget-default-button-face-get
4 0% - widget-apply
4 0% - widget-default-button-face-get
4 0% -
widget-apply
4 0% -
widget-default-button-face-get
4 0% -
widget-apply
4 0% -
widget-default-button-face-get
4 0% -
widget-apply
4 0%
- widget-default-button-face-get
4 0%
- widget-apply
4
0% -
widget-default-button-face-get
4
0% - widget-apply
4
0% -
widget-default-button-face-get
4 0% widget-get
8 0% re-search-forward
4 0% undo-auto--undoable-change
4 0% widget-get
4 0% widget-put
4 0% widget-get-indirect
4 0% - widget-copy
4 0% - widget-apply
4 0% -
widget-types-copy
4 0% - mapcar
4 0% -
widget-copy
4 0% widget-apply
4027 15% - apply
4027 15% -
widget-create-child-and-convert
4007 15% - widget-apply
4007 15% -
widget-default-create
2712 10% delete-char
743 2% -
widget-apply
739 2% -
widget-toggle-value-create
492 1% -
widget-image-insert
492 1% -
insert-image
4 0% - add-text-properties
4 0% undo-auto--undoable-change
207 0% -
widget-image-find
199 0% -
find-image
152 0% - apply
152 0% - create-image
148 0% -
image-type
148 0% -
image-type-from-file-header
68 0% -
insert-file-contents-literally
64 0% -
insert-file-contents
4 0% -
after-insert-file-set-coding
4 0% find-new-buffer-file-coding-system
60 0% file-readable-p
4 0% image-type-from-buffer
4 0% -
#<compiled -0x1c8e7723716d5d9f>
4 0% kill-buffer
4 0% set-buffer-multibyte
4 0% image-compute-scaling-factor
43 0% - image-search-load-path
31 0% file-readable-p
8 0% expand-file-name
4 0% image--set-property
28 0% -
substitute-command-keys
12 0% -
#<compiled -0x1c8e7723a0f1519f>
12 0% - kill-buffer
8 0% - replace-buffer-in-windows
4 0% window-normalize-buffer
4 0% -
unrecord-window-buffer
4 0% -
assq-delete-all
4 0% assoc-delete-all
8 0% -
generate-new-buffer
8 0% get-buffer-create
8 0% widget-get
4 0% -
widget-value
4 0% widget-apply
24 0% -
widget-specify-button
8 0% widget-get
4 0% make-overlay
4 0% overlay-put
4 0% functionp
20 0% re-search-forward
4 0% -
widget-clear-undo
4 0% buffer-disable-undo
16 0% - apply
16 0% -
widget-convert
12 0% -
widget-value-convert-widget
12 0% widget-get
2492 9% -
widget-create-child-value
2492 9% - widget-apply
2492 9% -
widget-default-create
1300 5% delete-char
956 3% - widget-apply
956 3% -
widget-choice-value-create
956 3% -
widget-create-child-value
956 3% -
widget-apply
948 3% -
widget-default-create
628 2%
delete-char
80 0% - widget-apply
80 0% widget-field-value-create
52 0% princ
8 0% re-search-forward
8 0% -
#<compiled 0x66e1b40451af649>
8 0% - widget-sexp-value-to-internal
4 0%
string-match
4 0% - pp-to-string
4 0% -
#<compiled -0x1c8e7722b2c0b59f>
4 0% kill-buffer
16 0% -
substitute-command-keys
8 0% -
#<compiled -0x1c8e77397563719f>
8 0% -
kill-buffer
8 0% -
replace-buffer-in-windows
8 0% -
unrecord-window-buffer
4 0% window-prev-buffers
4 0% - window-normalize-window
4 0% window-live-p
4 0% -
generate-new-buffer
4 0% get-buffer-create
8 0% -
widget-specify-button
4 0% widget-get
4 0% -
widget-apply
4 0% -
widget-default-mouse-face-get
4 0% widget-get
4 0% re-search-forward
4 0% -
widget-clear-undo
4 0% buffer-disable-undo
1864 7% delete-char
8 0% re-search-forward
4 0% - widget-apply
4 0% -
widget-default-deactivate
4 0% -
widget-specify-inactive
4 0% make-overlay
4 0% widget--should-indent-p
4 0% widget-get
7848 30% -
widget-editable-list-value-create
7828 30% -
widget-editable-list-entry-create
4112 15% -
widget-create-child-value
4088 15% - widget-apply
4088 15% -
widget-default-create
3576 13% - widget-apply
3576 13% -
widget-group-value-create
2864 11% -
widget-create-child-value
2848 10% -
widget-apply
2840 10% -
widget-default-create
2084 8%
delete-char
8 0% re-search-forward
8 0% -
widget-copy
4 0% widget-apply
4 0% widget-get
4 0% widget-put
696 2% insert-char
8 0% -
widget-match-inline
4 0% -
widget-inline-p
4 0% widget-get
4 0% -
widget-apply
4 0% -
widget-checklist-match-inline
4 0% - widget-match-inline
4 0% - widget-inline-p
4 0% -
widget-apply
4 0% widget-choice-inline-bubbles-p
4 0% widget--should-indent-p
348 1% delete-char
4 0% -
undo-auto--undoable-change
4 0% undo-auto--boundary-ensure-timer
20 0% - widget-copy
20 0% - widget-apply
20 0% -
widget-types-copy
20 0% - mapcar
20 0% -
widget-copy
20 0% -
widget-apply
12 0% -
widget-types-copy
12 0% - mapcar
12 0% - widget-copy
12 0% -
widget-apply
12 0% -
widget-types-copy
12 0% -
mapcar
12 0% -
widget-copy
12 0% -
widget-apply
8 0%
- widget-types-copy
8 0%
- mapcar
8
0% - widget-copy
8 0% widget-apply
4 0% widget-get
2472 9% - apply
2472 9% -
widget-create-child-and-convert
2468 9% - widget-apply
2468 9% -
widget-default-create
1784 6% delete-char
336 1% -
widget-apply
336 1% -
widget-push-button-value-create
8 0% -
substitute-command-keys
4 0% buffer-string
12 0% -
widget-specify-button
8 0% -
widget-apply
8 0% -
widget-default-mouse-face-get
8 0% -
widget-apply
8 0% - widget-default-mouse-face-get
8 0% - widget-apply
4 0% -
widget-default-mouse-face-get
4 0% -
widget-apply
4 0% -
widget-default-mouse-face-get
4 0% widget-get
4 0% widget-get
4 0% re-search-forward
4 0% widget-get
932 3% delete-char
152 0% insert-char
16 0% -
widget-match-inline
16 0% - widget-apply
8 0% -
widget-group-match
8 0% -
widget-group-match-inline
4 0% -
widget-match-inline
4 0% widget-apply
8 0% -
widget-editable-list-match
8 0% -
widget-editable-list-match-inline
8 0% -
widget-match-inline
8 0% -
widget-apply
8 0% -
widget-group-match
8 0% -
widget-group-match-inline
8 0% -
widget-match-inline
8 0% - widget-apply
8 0% - widget-checklist-match-inline
4 0% -
widget-match-inline
4 0% -
widget-inline-p
4 0% -
widget-apply
4 0% -
widget-choice-inline-bubbles-p
4 0% widget-get
4 0% -
widget-checklist-match-up
4 0% -
widget-match-inline
4 0% -
widget-apply
4 0% -
widget-choice-match
4 0% -
widget-apply
4 0% widget-restricted-sexp-match
388 1% widget-field-value-create
124 0% -
widget-editable-list-format-handler
116 0% - apply
116 0% -
widget-create-child-and-convert
116 0% - widget-apply
116 0% -
widget-default-create
96 0% delete-char
20 0% - widget-apply
20 0% widget-push-button-value-create
8 0% insert-char
264 1% delete-char
4 0% -
widget-specify-sample
4 0% widget-apply
4 0% -
undo-auto--undoable-change
4 0% undo-auto--boundary-ensure-timer
4 0% -
substitute-command-keys
4 0% - #<compiled
-0x1c8e77201f7fa59f>
4 0% - kill-buffer
4 0% -
replace-buffer-in-windows
4 0% -
unrecord-window-buffer
4 0% window-prev-buffers
12 0% insert-char
4 0% delete-char
92 0% - apply
92 0% -
widget-create-child-and-convert
92 0% - widget-apply
92 0% - widget-default-create
64 0% delete-char
16 0% - widget-apply
16 0% widget-push-button-value-create
40 0% delete-char
4 0% custom-magic-value-create
8 0% -
widget-add-documentation-string-button
8 0% - apply
8 0% - widget-create-child-and-convert
8 0% - widget-apply
8 0% - widget-default-create
4 0% delete-char
4 0% - widget-apply
4 0% widget-documentation-string-value-create
4 0% - custom-add-parent-links
4 0% - mapatoms
4 0% - #<compiled 0x2608cc6bf83bc8>
4 0% - widget-create-child-and-convert
4 0% - widget-apply
4 0% - widget-default-create
4 0% delete-char
16 0% - #<compiled -0xf2f5b00c7bd4f2d>
16 0% - widget-apply
16 0% - widget-default-value-inline
16 0% - widget-value
16 0% - widget-apply
16 0% - widget-editable-list-value-get
16 0% - mapcar
16 0% - #<compiled -0xf2f5b00c7bd4f2d>
16 0% - widget-apply
16 0% - widget-default-value-inline
16 0% - widget-value
16 0% - widget-apply
8 0% - widget-editable-list-value-get
8 0% - mapcar
8 0% - #<compiled
-0xf2f5b00c7bd4f2d>
8 0% - widget-apply
8 0% - widget-default-value-inline
8 0% - widget-value
8 0% - widget-apply
8 0% -
widget-editable-list-value-get
8 0% - mapcar
4 0% - #<compiled
-0xf2f5b00c7bd4f2d>
4 0% - widget-apply
4 0% -
widget-default-value-inline
4 0% widget-get
8 0% - widget-checklist-value-get
4 0% - widget-apply
4 0% - widget-child-value-inline
4 0% - widget-apply
4 0% - widget-default-value-inline
4 0% - widget-value
4 0% widget-apply
4 0% - widget-value
4 0% widget-apply
368 1% widget-setup
8 0% - mapc
8 0% - custom-magic-reset
8 0% - widget-value-set
8 0% - widget-apply
8 0% - widget-default-value-set
8 0% - widget-apply
4 0% - widget-default-delete
4 0% - widget-apply
4 0% - widget-children-value-delete
4 0% - mapc
4 0% - widget-delete
4 0% - widget-apply
4 0% widget-default-delete
4 0% - widget-default-create
4 0% - widget-apply
4 0% - custom-magic-value-create
4 0% - widget-create-child-and-convert
4 0% - widget-apply
4 0% - widget-default-create
4 0% delete-char
8 0% - byte-code
8 0% - require
8 0% - load-with-code-conversion
8 0% - eval-buffer
8 0% read
4 0% read
4 0% - profiler-stop
4 0% profiler-cpu-log
635 2% Automatic GC
4 0% - ...
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-apply
4 0% - #<compiled 0x66e1b40451af649>
4 0% - widget-sexp-value-to-internal
4 0% pp-to-string
[-- Attachment #2: profiler-data --]
[-- Type: text/plain, Size: 50567 bytes --]
[profiler-profile "28.1" cpu #s(hash-table size 217 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([read eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil] 8 [pp-to-string widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget] 4 [read customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 4 [widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn progn eval] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [file-readable-p image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 60 [re-search-forward widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 8 [delete-char widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 2084 [widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 460 [widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 348 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 1784 [insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 60 [image-type-from-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 2712 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 748 [widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 504 [file-readable-p image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 31 [delete-char widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 1428 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 332 [substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 744 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 696 [delete-char widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4187 [delete-char widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 1864 [widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-get widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 180 [delete-char widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 628 [delete-char widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create] 264 [delete-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 932 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-apply widget-specify-sample widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-inline-p widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 1300 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 388 [widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 328 [get-buffer-create generate-new-buffer substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [image--set-property find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 12 [insert-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 152 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 160 [undo-auto--undoable-change widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 488 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 308 [widget-get widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [make-overlay widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 64 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 368 [image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 8 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 160 [widget--should-indent-p widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [make-overlay widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 204 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 52 [widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 96 [buffer-string substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [overlay-put widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [re-search-forward widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 20 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 80 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create] 12 [widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply] 60 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 8 [image-compute-scaling-factor create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create] 12 [widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline] 4 [window-normalize-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e7723a0f1519f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-value-convert-widget widget-convert apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 12 [widget-convert apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [re-search-forward widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [kill-buffer "#<compiled -0x1c8e7723716d5d9f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [delete-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply] 40 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply] 4 [functionp widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [string-match widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 20 [widget-get widget-specify-button widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 16 [widget-get widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-put widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create] 4 [expand-file-name image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [find-new-buffer-file-coding-system after-insert-file-set-coding insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply] 4 [widget--should-indent-p widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-get widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [re-search-forward widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [kill-buffer "#<compiled -0x1c8e7722b2c0b59f>" pp-to-string widget-sexp-value-to-internal "#<compiled 0x66e1b40451af649>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [widget-get widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create] 4 [widget-apply widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-restricted-sexp-match widget-apply widget-choice-match widget-apply widget-match-inline widget-checklist-match-up widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply] 4 [widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-default-button-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy] 8 [widget-put widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-get-indirect widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [undo-auto--undoable-change add-text-properties insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [make-closure substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77201f7fa59f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [kill-buffer "#<compiled -0x1c8e772031488f9f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-get widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-default-button-face-get] 4 [widget-put widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [re-search-forward widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77397563719f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [insert-char widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 8 [widget-get widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [widget-apply widget-value widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [assoc-delete-all assq-delete-all unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77395de7999f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [set-buffer-multibyte image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 4 [delete-char widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create] 4 [window-live-p window-normalize-window unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8e77234165359f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [custom-magic-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert apply widget-add-documentation-string-button custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create customize-option] 4 [widget-documentation-string-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-add-documentation-string-button custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create] 4 [widget-get widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline] 4 [mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get] 4 [widget-apply widget-value widget-default-value-inline widget-apply widget-child-value-inline widget-apply widget-checklist-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value] 4 [widget-apply widget-value widget-checklist-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf2f5b00c7bd4f2d>" mapcar] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert "#<compiled 0x2608cc6bf83bc8>" mapatoms custom-add-parent-links custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled -0x17c1d5ffa7b0b3ca>" mapcar custom-buffer-create-internal custom-buffer-create] 4 [widget-default-delete widget-apply widget-delete mapc widget-children-value-delete widget-apply widget-default-delete widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option] 4 [delete-char widget-default-create widget-apply widget-create-child-and-convert custom-magic-value-create widget-apply widget-default-create widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option] 4 [widget-setup custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil] 368 [Automatic\ GC nil] 635 [profiler-cpu-log profiler-stop progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 4)) (25853 36556 160586 303000) nil]
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-10 9:49 ` Mauro Aranda
@ 2023-09-10 10:43 ` Eli Zaretskii
2023-09-10 10:50 ` Ihor Radchenko
2023-09-10 12:41 ` Mauro Aranda
0 siblings, 2 replies; 12+ messages in thread
From: Eli Zaretskii @ 2023-09-10 10:43 UTC (permalink / raw)
To: Mauro Aranda; +Cc: 53606
> Date: Sun, 10 Sep 2023 06:49:29 -0300
> Cc: 53606@debbugs.gnu.org
> From: Mauro Aranda <maurooaranda@gmail.com>
>
> On 10/9/23 02:01, Eli Zaretskii wrote:
> > Could you please profile this slow operation and post the completely
> > unfolded profile? I think we should try to understand what exactly
> > takes so much time in this case.
>
> Here it is. I also attach the result of C-x C-w in the report buffer,
> just in case.
So the hot spot seems to be widget-checklist-add-item, is that right?
And inside that widget-create-child and widget-apply?
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-10 10:43 ` Eli Zaretskii
@ 2023-09-10 10:50 ` Ihor Radchenko
2023-09-10 12:41 ` Mauro Aranda
1 sibling, 0 replies; 12+ messages in thread
From: Ihor Radchenko @ 2023-09-10 10:50 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 53606, Mauro Aranda
Eli Zaretskii <eliz@gnu.org> writes:
>> Here it is. I also attach the result of C-x C-w in the report buffer,
>> just in case.
>
> So the hot spot seems to be widget-checklist-add-item, is that right?
> And inside that widget-create-child and widget-apply?
No, I think. Reverse call tree shows
17747 68% - delete-char
14911 57% + widget-default-create
1864 7% + widget-checklist-add-item
972 3% + widget-editable-list-entry-create
3320 12% + widget-default-create
which likely corresponds to ";; Parse % escapes in format." code,
present in `widget-default-create', `widget-checklist-add-item', and
`widget-editable-list-entry-create'.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-10 10:43 ` Eli Zaretskii
2023-09-10 10:50 ` Ihor Radchenko
@ 2023-09-10 12:41 ` Mauro Aranda
2023-09-18 11:07 ` Mauro Aranda
1 sibling, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-10 12:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 53606
On 10/9/23 07:43, Eli Zaretskii wrote:
>> Date: Sun, 10 Sep 2023 06:49:29 -0300
>> Cc: 53606@debbugs.gnu.org
>> From: Mauro Aranda <maurooaranda@gmail.com>
>>
>> On 10/9/23 02:01, Eli Zaretskii wrote:
>> > Could you please profile this slow operation and post the completely
>> > unfolded profile? I think we should try to understand what exactly
>> > takes so much time in this case.
>>
>> Here it is. I also attach the result of C-x C-w in the report buffer,
>> just in case.
>
> So the hot spot seems to be widget-checklist-add-item, is that right?
I think so. The checklist widgets were my first suspects, since
creating them is rather slow.
> And inside that widget-create-child and widget-apply?
I don't think those functions could be the bottleneck. Most likely it
is the widget-default-create function that those functions end up
calling. So yes, widget-default-create in general, and
widget-checklist-value-create in particular should be investigated for
speeding them up, but I don't have any ideas at the moment.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-10 12:41 ` Mauro Aranda
@ 2023-09-18 11:07 ` Mauro Aranda
2023-12-21 11:51 ` Ihor Radchenko
0 siblings, 1 reply; 12+ messages in thread
From: Mauro Aranda @ 2023-09-18 11:07 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Ihor Radchenko, 53606
[-- Attachment #1: Type: text/plain, Size: 2315 bytes --]
On 10/9/23 09:41, Mauro Aranda wrote:
> On 10/9/23 07:43, Eli Zaretskii wrote:
> >> Date: Sun, 10 Sep 2023 06:49:29 -0300
> >> Cc: 53606@debbugs.gnu.org
> >> From: Mauro Aranda <maurooaranda@gmail.com>
> >>
> >> On 10/9/23 02:01, Eli Zaretskii wrote:
> >> > Could you please profile this slow operation and post the
completely
> >> > unfolded profile? I think we should try to understand what exactly
> >> > takes so much time in this case.
> >>
> >> Here it is. I also attach the result of C-x C-w in the report buffer,
> >> just in case.
> >
> > So the hot spot seems to be widget-checklist-add-item, is that right?
>
> I think so. The checklist widgets were my first suspects, since
> creating them is rather slow.
>
> > And inside that widget-create-child and widget-apply?
>
> I don't think those functions could be the bottleneck. Most likely it
> is the widget-default-create function that those functions end up
> calling. So yes, widget-default-create in general, and
> widget-checklist-value-create in particular should be investigated for
> speeding them up, but I don't have any ideas at the moment.
I focused on the format handling, since there's no need to insert the
escape formats in the buffer. So I rearranged the 4 functions that
handle the format to avoid it and here are the figures I got, when
running:
(benchmark-run 5
(customize-option 'bibtex-biblatex-entry-alist))
From master, inserting either :format or :entry-format:
(130.200276352 291 3.1221133909999996)
Without inserting it:
(38.244185927000004 266 2.795578699)
| How? | Total elapsed time (5 repetitions) | Avg |
Times faster |
|----------------------+------------------------------------+-------+--------------|
| inserting format | 130.20 | 26.04
| 1 |
| not inserting format | 38.24 | 7.65
| 3.4 |
All data is without native compilation. I'd appreciate if someone could
at least run it once with native compilation, with and without my patch.
I attach a patch with the changes, and the new profiler report, but I'm
inclined to leave it as it is if the patch gets accepted.
[-- Attachment #2: 0001-Speed-up-widget-creation-Bug-53606.patch --]
[-- Type: text/x-patch, Size: 13513 bytes --]
From a413d93c6215710c669912e3ed7d5e02857b5635 Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Sun, 17 Sep 2023 21:00:02 -0300
Subject: [PATCH] Speed up widget creation (Bug#53606)
* lisp/wid-edit.el (widget-default-create, widget-checklist-add-item)
(widget-radio-add-item, widget-editable-list-entry-create): Don't
insert format escapes into the buffer, only to delete them after.
This avoids calls to delete-char and makes widget creation about 3
times faster.
---
lisp/wid-edit.el | 252 +++++++++++++++++++++++++----------------------
1 file changed, 136 insertions(+), 116 deletions(-)
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 74412414113..e9ad4f3855e 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1670,78 +1670,85 @@ widget-default-completions
(defun widget-default-create (widget)
"Create WIDGET at point in the current buffer."
(widget-specify-insert
- (let ((from (point))
- button-begin button-end
- sample-begin sample-end
- doc-begin doc-end
- value-pos)
- (insert (widget-get widget :format))
- (goto-char from)
+ (let ((str (widget-get widget :format))
+ (onext 0) (next 0)
+ button-begin button-end
+ sample-begin sample-end
+ doc-begin doc-end
+ value-pos)
;; Parse escapes in format.
- (while (re-search-forward "%\\(.\\)" nil t)
- (let ((escape (char-after (match-beginning 1))))
- (delete-char -2)
- (cond ((eq escape ?%)
- (insert ?%))
- ((eq escape ?\[)
- (setq button-begin (point))
- (insert (widget-get-indirect widget :button-prefix)))
- ((eq escape ?\])
- (insert (widget-get-indirect widget :button-suffix))
- (setq button-end (point)))
- ((eq escape ?\{)
- (setq sample-begin (point)))
- ((eq escape ?\})
- (setq sample-end (point)))
- ((eq escape ?n)
- (when (widget-get widget :indent)
- (insert ?\n)
- (insert-char ?\s (widget-get widget :indent))))
- ((eq escape ?t)
- (let ((image (widget-get widget :tag-glyph))
- (tag (substitute-command-keys
- (widget-get widget :tag))))
- (cond (image
- (widget-image-insert widget (or tag "image") image))
- (tag
- (insert tag))
- (t
- (princ (widget-get widget :value)
- (current-buffer))))))
- ((eq escape ?d)
- (let ((doc (widget-get widget :doc)))
- (when doc
- (setq doc-begin (point))
- (insert (substitute-command-keys doc))
- (while (eq (preceding-char) ?\n)
- (delete-char -1))
- (insert ?\n)
- (setq doc-end (point)))))
- ((eq escape ?h)
- (widget-add-documentation-string-button widget))
- ((eq escape ?v)
- (if (and button-begin (not button-end))
- (widget-apply widget :value-create)
- (setq value-pos (point))))
- (t
- (widget-apply widget :format-handler escape)))))
+ (while (string-match "%\\(.\\)" str next)
+ (setq next (match-end 1))
+ ;; If we skipped some literal text, insert it.
+ (when (/= (- next onext) 2)
+ (insert (substring str onext (- next 2))))
+ (let ((escape (string-to-char (match-string 1 str))))
+ (cond ((eq escape ?%)
+ (insert ?%))
+ ((eq escape ?\[)
+ (setq button-begin (point))
+ (insert (widget-get-indirect widget :button-prefix)))
+ ((eq escape ?\])
+ (insert (widget-get-indirect widget :button-suffix))
+ (setq button-end (point)))
+ ((eq escape ?\{)
+ (setq sample-begin (point)))
+ ((eq escape ?\})
+ (setq sample-end (point)))
+ ((eq escape ?n)
+ (when (widget-get widget :indent)
+ (insert ?\n)
+ (insert-char ?\s (widget-get widget :indent))))
+ ((eq escape ?t)
+ (let ((image (widget-get widget :tag-glyph))
+ (tag (substitute-command-keys
+ (widget-get widget :tag))))
+ (cond (image
+ (widget-image-insert widget
+ (or tag "image") image))
+ (tag
+ (insert tag))
+ (t
+ (princ (widget-get widget :value)
+ (current-buffer))))))
+ ((eq escape ?d)
+ (let ((doc (widget-get widget :doc)))
+ (when doc
+ (setq doc-begin (point))
+ (insert (substitute-command-keys doc))
+ (while (eq (preceding-char) ?\n)
+ (delete-char -1))
+ (insert ?\n)
+ (setq doc-end (point)))))
+ ((eq escape ?h)
+ (widget-add-documentation-string-button widget))
+ ((eq escape ?v)
+ (if (and button-begin (not button-end))
+ (widget-apply widget :value-create)
+ (setq value-pos (point))))
+ (t
+ (widget-apply widget :format-handler escape))))
+ (setq onext next))
+ ;; Insert remaining literal text, if any.
+ (when (> (length str) next)
+ (insert (substring str next)))
;; Specify button, sample, and doc, and insert value.
(and button-begin button-end
- (widget-specify-button widget button-begin button-end))
+ (widget-specify-button widget button-begin button-end))
(and sample-begin sample-end
- (widget-specify-sample widget sample-begin sample-end))
+ (widget-specify-sample widget sample-begin sample-end))
(and doc-begin doc-end
- (widget-specify-doc widget doc-begin doc-end))
+ (widget-specify-doc widget doc-begin doc-end))
(when value-pos
(goto-char value-pos)
(widget-apply widget :value-create)))
(let ((from (point-min-marker))
- (to (point-max-marker)))
+ (to (point-max-marker)))
(set-marker-insertion-type from t)
(set-marker-insertion-type to nil)
(widget-put widget :from from)
- (widget-put widget :to to)))
- (widget-clear-undo))
+ (widget-put widget :to to))
+ (widget-clear-undo)))
(defun widget-default-format-handler (_widget escape)
(error "Unknown escape `%c'" escape))
@@ -2464,14 +2471,15 @@ widget-checklist-add-item
(buttons (widget-get widget :buttons))
(button-args (or (widget-get type :sibling-args)
(widget-get widget :button-args)))
- (from (point))
+ (str (widget-get widget :entry-format))
+ (onext 0) (next 0)
child button)
- (insert (widget-get widget :entry-format))
- (goto-char from)
;; Parse % escapes in format.
- (while (re-search-forward "%\\([bv%]\\)" nil t)
- (let ((escape (char-after (match-beginning 1))))
- (delete-char -2)
+ (while (string-match "%\\([bv%]\\)" str next)
+ (setq next (match-end 1))
+ (when (/= (- next onext) 2)
+ (insert (substring str onext (- next 2))))
+ (let ((escape (string-to-char (match-string 1 str))))
(cond ((eq escape ?%)
(insert ?%))
((eq escape ?b)
@@ -2492,7 +2500,10 @@ widget-checklist-add-item
(widget-create-child-value
widget type (car (cdr chosen)))))))
(t
- (error "Unknown escape `%c'" escape)))))
+ (error "Unknown escape `%c'" escape))))
+ (setq onext next))
+ (when (> (length str) next)
+ (insert (substring str next)))
;; Update properties.
(and button child (widget-put child :button button))
(and button (widget-put widget :buttons (cons button buttons)))
@@ -2646,16 +2657,17 @@ widget-radio-add-item
(buttons (widget-get widget :buttons))
(button-args (or (widget-get type :sibling-args)
(widget-get widget :button-args)))
- (from (point))
+ (str (widget-get widget :entry-format))
+ (onext 0) (next 0)
(chosen (and (null (widget-get widget :choice))
(widget-apply type :match value)))
child button)
- (insert (widget-get widget :entry-format))
- (goto-char from)
;; Parse % escapes in format.
- (while (re-search-forward "%\\([bv%]\\)" nil t)
- (let ((escape (char-after (match-beginning 1))))
- (delete-char -2)
+ (while (string-match "%\\([bv%]\\)" str next)
+ (setq next (match-end 1))
+ (when (/= (- next onext) 2)
+ (insert (substring str onext (- next 2))))
+ (let ((escape (string-to-char (match-string 1 str))))
(cond ((eq escape ?%)
(insert ?%))
((eq escape ?b)
@@ -2671,7 +2683,10 @@ widget-radio-add-item
(unless chosen
(widget-apply child :deactivate)))
(t
- (error "Unknown escape `%c'" escape)))))
+ (error "Unknown escape `%c'" escape))))
+ (setq onext next))
+ (when (> (length str) next)
+ (insert (substring str next)))
;; Update properties.
(when chosen
(widget-put widget :choice type))
@@ -2948,51 +2963,56 @@ widget-editable-list-entry-create
;; Create a new entry to the list.
(let ((type (nth 0 (widget-get widget :args)))
;; (widget-push-button-gui widget-editable-list-gui)
+ (str (widget-get widget :entry-format))
+ (onext 0) (next 0)
child delete insert)
(widget-specify-insert
- (save-excursion
- (and (widget--should-indent-p)
- (widget-get widget :indent)
- (insert-char ?\s (widget-get widget :indent)))
- (insert (widget-get widget :entry-format)))
- ;; Parse % escapes in format.
- (while (re-search-forward "%\\(.\\)" nil t)
- (let ((escape (char-after (match-beginning 1))))
- (delete-char -2)
- (cond ((eq escape ?%)
- (insert ?%))
- ((eq escape ?i)
- (setq insert (apply 'widget-create-child-and-convert
- widget 'insert-button
- (widget-get widget :insert-button-args))))
- ((eq escape ?d)
- (setq delete (apply 'widget-create-child-and-convert
- widget 'delete-button
- (widget-get widget :delete-button-args))))
- ((eq escape ?v)
- (if conv
- (setq child (widget-create-child-value
- widget type value))
- (setq child (widget-create-child-value
- widget type (widget-default-get type)))))
- (t
- (error "Unknown escape `%c'" escape)))))
- (let ((buttons (widget-get widget :buttons)))
- (if insert (push insert buttons))
- (if delete (push delete buttons))
- (widget-put widget :buttons buttons))
- ;; After creating the entry, we must check if we should indent the
- ;; following entry. This is necessary, for example, to keep the correct
- ;; indentation of editable lists inside group widgets.
- (and (widget--should-indent-p t)
+ (and (widget--should-indent-p)
(widget-get widget :indent)
- (insert-char ?\s (widget-get widget :indent)))
- (let ((entry-from (point-min-marker))
- (entry-to (point-max-marker)))
- (set-marker-insertion-type entry-from t)
- (set-marker-insertion-type entry-to nil)
- (widget-put child :entry-from entry-from)
- (widget-put child :entry-to entry-to)))
+ (insert-char ?\s (widget-get widget :indent))))
+ ;; Parse % escapes in format.
+ (while (string-match "%\\(.\\)" str next)
+ (setq next (match-end 1))
+ (when (/= (- next onext) 2)
+ (insert (substring str onext (- next 2))))
+ (let ((escape (string-to-char (match-string 1 str))))
+ (cond ((eq escape ?%)
+ (insert ?%))
+ ((eq escape ?i)
+ (setq insert (apply 'widget-create-child-and-convert
+ widget 'insert-button
+ (widget-get widget :insert-button-args))))
+ ((eq escape ?d)
+ (setq delete (apply 'widget-create-child-and-convert
+ widget 'delete-button
+ (widget-get widget :delete-button-args))))
+ ((eq escape ?v)
+ (if conv
+ (setq child (widget-create-child-value
+ widget type value))
+ (setq child (widget-create-child-value
+ widget type (widget-default-get type)))))
+ (t
+ (error "Unknown escape `%c'" escape))))
+ (setq onext next))
+ (when (> (length str) next)
+ (insert (substring str next)))
+ (let ((buttons (widget-get widget :buttons)))
+ (if insert (push insert buttons))
+ (if delete (push delete buttons))
+ (widget-put widget :buttons buttons))
+ ;; After creating the entry, we must check if we should indent the
+ ;; following entry. This is necessary, for example, to keep the correct
+ ;; indentation of editable lists inside group widgets.
+ (and (widget--should-indent-p t)
+ (widget-get widget :indent)
+ (insert-char ?\s (widget-get widget :indent)))
+ (let ((entry-from (point-min-marker))
+ (entry-to (point-max-marker)))
+ (set-marker-insertion-type entry-from t)
+ (set-marker-insertion-type entry-to nil)
+ (widget-put child :entry-from entry-from)
+ (widget-put child :entry-to entry-to))
(if insert (widget-put insert :widget child))
(if delete (widget-put delete :widget child))
child))
--
2.34.1
[-- Attachment #3: profiler-data-no-inserting --]
[-- Type: text/plain, Size: 39601 bytes --]
[profiler-profile "28.1" cpu #s(hash-table size 145 test equal rehash-size 1.5 rehash-threshold 0.8125 data ([read eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil] 4 [macroexp--all-forms "#<compiled -0x60853496ded3bb1>" macroexp--expand-all macroexp--all-forms "#<compiled -0x60853496ded3bb1>" macroexp--expand-all macroexpand--all-toplevel internal-macroexpand-for-load eval-buffer load-with-code-conversion require byte-code customize-option progn progn eval] 4 [read customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil nil nil] 8 [widget-get widget-value-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert mapcar widget-types-convert-widget widget-convert widget-type-match] 4 [make-overlay widget-specify-button widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 468 [insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 24 [widget-get-indirect widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [expand-file-name image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 16 [buffer-disable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 8 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 168 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 136 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 316 [widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 1371 [widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [insert-char widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 176 [insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 460 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 656 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 308 [widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 424 [add-text-properties insert-image widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [string-match widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [kill-buffer "#<compiled -0x1c8af3864116699f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 4 [match-string widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 8 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 340 [widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 376 [undo-auto--undoable-change widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 324 [kill-buffer "#<compiled -0x1c8af3841881059f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [featurep widget-image-insert widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 308 [widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 12 [looking-at image-type-from-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [undo-auto--boundary-ensure-timer undo-auto--undoable-change widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [widget-get widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [princ widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 80 [widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [file-readable-p image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply] 32 [append insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [get-buffer-create generate-new-buffer image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create] 4 [match-string widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-copy widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply] 76 [string-match widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [plist-get coding-system-type find-new-buffer-file-coding-system after-insert-file-set-coding insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply] 4 [insert-char widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply] 8 [framep-on-display display-graphic-p widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [file-readable-p image-search-load-path find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 36 [widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [kill-buffer "#<compiled -0x1c8af385edddb39f>" substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 8 [buffer-enable-undo widget-clear-undo widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 ["#<compiled -0x189981ea312f002d>" widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [string-match widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 4 [widget-field-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 60 [insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 20 [widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy mapcar widget-types-copy widget-apply widget-copy widget-create-child-value widget-editable-list-entry-create] 8 [make-overlay widget-specify-inactive widget-default-deactivate widget-apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-put widget-specify-button widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [plist-get widget-convert apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [string-match widget-sexp-value-to-internal "#<compiled 0x6b91569ed400009>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [window-normalize-window unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af383ee9b4b9f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert] 4 [widget-apply widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply] 4 ["#<compiled -0x189981ea312f002d>" widget-apply widget-value widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-format-handler widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 8 [window-list-1 replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af383bd92779f>" image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply] 4 [window-width image-compute-scaling-factor create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [format-decode insert-file-contents insert-file-contents-literally image-type-from-file-header image-type create-image apply find-image widget-image-find widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item] 4 [generate-new-buffer pp-to-string widget-sexp-value-to-internal "#<compiled 0x6b91569ed400009>" widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply] 4 [widget-get widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 8 [widget-apply widget-create-child-value widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply] 4 [widget-get widget-get-indirect widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget--should-indent-p widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 8 [widget-get widget-default-button-face-get widget-apply widget-default-button-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-specify-button widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [get-buffer-create generate-new-buffer substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 4 [widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create] 4 [append widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [set-window-prev-buffers unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af38232c5e59f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create] 4 [widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply] 4 [string-match widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [generate-new-buffer-name generate-new-buffer substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply] 4 [widget-get-indirect widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [assq-delete-all unrecord-window-buffer replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af3b0cfaee19f>" substitute-command-keys widget-push-button-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [append widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af38369e8019f>" substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [string-match widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get widget-apply widget-default-mouse-face-get] 4 [widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create] 4 [substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-get widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af3b035efeb9f>" substitute-command-keys widget-toggle-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [string-to-char widget-default-create widget-apply widget-create-child-and-convert apply widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [buffer-string substitute-command-keys widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value] 4 [widget-get widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create] 4 [widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline widget-editable-list-match-inline widget-editable-list-match widget-apply widget-match-inline widget-group-match-inline widget-group-match widget-apply widget-match-inline] 4 [replace-buffer-in-windows kill-buffer "#<compiled -0x1c8af385ec61d99f>" substitute-command-keys widget-default-create widget-apply widget-create-child-value widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-type-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply] 4 [widget-get widget-choice-inline-bubbles-p widget-apply widget-inline-p widget-choice-value-create widget-apply widget-default-create widget-apply widget-create-child widget-checklist-add-item widget-checklist-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create] 8 [undo-auto--undoable-change insert-char widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-group-value-create widget-apply widget-default-create] 4 [widget-apply widget-choice-match widget-apply widget-match-inline widget-checklist-match-inline widget-apply widget-match-inline widget-group-value-create widget-apply widget-default-create widget-apply widget-create-child-value widget-editable-list-entry-create widget-editable-list-value-create widget-apply widget-default-create] 4 [custom-magic-value-create widget-apply widget-default-create widget-apply widget-create-child-and-convert custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn] 4 [widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>"] 12 [widget-get widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline] 4 [mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get widget-apply widget-value widget-default-value-inline widget-apply "#<compiled -0xf214aae4a43c62d>" mapcar widget-editable-list-value-get] 4 ["#<compiled 0x1c52983bfc51a7>" mapatoms custom-add-parent-links custom-variable-value-create widget-apply widget-default-create widget-apply widget-create "#<compiled 0x200e28cd8396fcf>" mapcar custom-buffer-create-internal custom-buffer-create customize-option progn progn eval] 4 [widget-default-delete widget-apply widget-default-value-set widget-apply widget-value-set custom-magic-reset mapc custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively] 4 [widget-setup custom-buffer-create-internal custom-buffer-create customize-option progn progn eval elisp--eval-last-sexp eval-last-sexp funcall-interactively call-interactively command-execute nil nil nil nil] 364 [Automatic\ GC nil] 541)) (25864 11653 301113 472000) nil]
[-- Attachment #4: profiler-results-no-inserting --]
[-- Type: text/plain, Size: 29129 bytes --]
6967 92% - command-execute
6967 92% - call-interactively
6967 92% - funcall-interactively
6967 92% - eval-last-sexp
6967 92% - elisp--eval-last-sexp
6967 92% - eval
6967 92% - progn
6967 92% - progn
6967 92% - customize-option
6951 92% - custom-buffer-create
6951 92% - custom-buffer-create-internal
6583 87% - mapcar
6583 87% - #<compiled 0x200e28cd8396fcf>
6583 87% - widget-create
6583 87% - widget-apply
6583 87% - widget-default-create
6583 87% - widget-apply
6583 87% - custom-variable-value-create
6579 87% - widget-create-child-and-convert
6579 87% - widget-apply
6579 87% - widget-default-create
6575 87% - widget-apply
6571 87% - widget-type-value-create
6571 87% - widget-create-child-value
6571 87% - widget-apply
6571 87% - widget-default-create
6571 87% - widget-apply
6571 87% - widget-editable-list-value-create
6571 87% - widget-editable-list-entry-create
6559 87% - widget-create-child-value
6559 87% - widget-apply
6559 87% - widget-default-create
6555 87% - widget-apply
6555 87% - widget-group-value-create
6535 86% - widget-create-child-value
6535 86% - widget-apply
6535 86% - widget-default-create
6459 85% - widget-apply
6459 85% - widget-editable-list-value-create
6459 85% - widget-editable-list-entry-create
6459 85% - widget-create-child-value
6451 85% - widget-apply
6451 85% - widget-default-create
6451 85% - widget-apply
6451 85% - widget-group-value-create
6439 85% - widget-create-child-value
6435 85% - widget-apply
6435 85% - widget-default-create
6115 81% - widget-apply
4075 54% - widget-checklist-value-create
4071 54% - widget-checklist-add-item
2163 28% - widget-create-child
2159 28% - widget-apply
2159 28% - widget-default-create
724 9% - widget-apply
724 9% - widget-choice-value-create
712 9% - widget-create-child-value
712 9% - widget-apply
708 9% - widget-default-create
324 4% princ
4 0% undo-auto--undoable-change
4 0% substitute-command-keys
12 0% - widget-inline-p
12 0% - widget-apply
12 0% - widget-choice-inline-bubbles-p
8 0% widget-get
32 0% - substitute-command-keys
12 0% - #<compiled -0x1c8af385edddb39f>
12 0% - kill-buffer
4 0% replace-buffer-in-windows
8 0% - generate-new-buffer
4 0% generate-new-buffer-name
4 0% buffer-string
20 0% - widget-specify-button
20 0% - widget-apply
8 0% - widget-default-mouse-face-get
8 0% - widget-apply
8 0% - widget-default-mouse-face-get
8 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% - widget-apply
4 0% - widget-default-mouse-face-get
4 0% widget-get
4 0% - widget-default-button-face-get
4 0% - widget-apply
4 0% - widget-default-button-face-get
4 0% widget-get
8 0% string-match
4 0% widget-get-indirect
4 0% widget-get
776 10% - widget-create-child-value
768 10% - widget-apply
764 10% - widget-default-create
284 3% - widget-apply
284 3% - widget-choice-value-create
284 3% - widget-create-child-value
284 3% - widget-apply
276 3% - widget-default-create
80 1% princ
60 0% - widget-apply
60 0% widget-field-value-create
8 0% - #<compiled 0x6b91569ed400009>
8 0% - widget-sexp-value-to-internal
4 0% string-match
4 0% - pp-to-string
4 0% generate-new-buffer
4 0% string-match
4 0% widget-get
4 0% - substitute-command-keys
4 0% - #<compiled -0x1c8af385ec61d99f>
4 0% - kill-buffer
4 0% replace-buffer-in-windows
4 0% #<compiled -0x189981ea312f002d>
8 0% widget-get
684 9% - apply
684 9% - widget-create-child-and-convert
680 9% - widget-apply
680 9% - widget-default-create
652 8% - widget-apply
652 8% - widget-toggle-value-create
468 6% - widget-image-insert
464 6% - insert-image
4 0% add-text-properties
4 0% featurep
156 2% - widget-image-find
148 1% - find-image
92 1% - apply
92 1% - create-image
88 1% - image-type
88 1% - image-type-from-file-header
36 0% - insert-file-contents-literally
32 0% - insert-file-contents
4 0% - after-insert-file-set-coding
4 0% - find-new-buffer-file-coding-system
4 0% - coding-system-type
4 0% plist-get
4 0% format-decode
4 0% append
32 0% file-readable-p
12 0% - #<compiled -0x1c8af3841881059f>
12 0% - kill-buffer
8 0% - replace-buffer-in-windows
4 0% - unrecord-window-buffer
4 0% window-normalize-window
4 0% window-list-1
4 0% - image-type-from-buffer
4 0% looking-at
4 0% - generate-new-buffer
4 0% get-buffer-create
4 0% - image-compute-scaling-factor
4 0% window-width
56 0% - image-search-load-path
36 0% file-readable-p
16 0% expand-file-name
4 0% - display-graphic-p
4 0% framep-on-display
16 0% - substitute-command-keys
8 0% - #<compiled -0x1c8af38232c5e59f>
8 0% - kill-buffer
8 0% - replace-buffer-in-windows
4 0% - unrecord-window-buffer
4 0% set-window-prev-buffers
4 0% - generate-new-buffer
4 0% get-buffer-create
4 0% - widget-value
4 0% - widget-apply
4 0% #<compiled -0x189981ea312f002d>
4 0% append
8 0% - widget-specify-button
4 0% widget-put
4 0% - widget-clear-undo
4 0% buffer-disable-undo
4 0% - widget-get-indirect
4 0% widget-get
4 0% string-match
4 0% string-to-char
4 0% widget-get
8 0% - widget-apply
8 0% - widget-default-deactivate
8 0% - widget-specify-inactive
4 0% widget-get
4 0% make-overlay
8 0% widget--should-indent-p
4 0% match-string
4 0% string-match
1704 22% - widget-editable-list-value-create
1692 22% - widget-editable-list-entry-create
832 11% - widget-create-child-value
832 11% - widget-apply
832 11% - widget-default-create
664 8% - widget-apply
664 8% - widget-group-value-create
656 8% insert-char
4 0% widget-create-child-value
340 4% - apply
340 4% - widget-create-child-and-convert
336 4% - widget-apply
336 4% - widget-default-create
320 4% - widget-apply
320 4% - widget-push-button-value-create
12 0% - substitute-command-keys
4 0% - #<compiled -0x1c8af3b0cfaee19f>
4 0% - kill-buffer
4 0% - replace-buffer-in-windows
4 0% - unrecord-window-buffer
4 0% assq-delete-all
4 0% widget-get-indirect
4 0% - apply
4 0% - widget-convert
4 0% plist-get
176 2% insert-char
4 0% - undo-auto--undoable-change
4 0% undo-auto--boundary-ensure-timer
12 0% - widget-match-inline
12 0% - widget-apply
12 0% - widget-group-match
12 0% - widget-group-match-inline
8 0% - widget-match-inline
8 0% - widget-apply
8 0% - widget-editable-list-match
8 0% - widget-editable-list-match-inline
8 0% - widget-match-inline
8 0% - widget-apply
8 0% - widget-group-match
8 0% - widget-group-match-inline
8 0% - widget-match-inline
8 0% - widget-apply
8 0% - widget-checklist-match-inline
8 0% - widget-match-inline
4 0% widget-apply
316 4% widget-field-value-create
20 0% - widget-editable-list-format-handler
12 0% - apply
12 0% - widget-create-child-and-convert
12 0% - widget-apply
12 0% - widget-default-create
12 0% - widget-apply
12 0% - widget-push-button-value-create
4 0% substitute-command-keys
8 0% insert-char
4 0% - substitute-command-keys
4 0% - #<compiled -0x1c8af3864116699f>
4 0% kill-buffer
4 0% match-string
4 0% - widget-clear-undo
4 0% buffer-enable-undo
4 0% - widget-copy
4 0% widget-apply
8 0% - widget-match-inline
8 0% - widget-apply
4 0% - widget-editable-list-match
4 0% - widget-editable-list-match-inline
4 0% append
4 0% - widget-checklist-match-inline
4 0% - widget-match-inline
4 0% - widget-apply
4 0% - widget-choice-match
4 0% widget-apply
4 0% - insert-char
4 0% undo-auto--undoable-change
8 0% - widget-copy
8 0% - widget-apply
8 0% - widget-types-copy
8 0% - mapcar
8 0% - widget-copy
8 0% - widget-apply
8 0% - widget-types-copy
8 0% - mapcar
8 0% - widget-copy
8 0% - widget-apply
8 0% - widget-types-copy
8 0% - mapcar
8 0% - widget-copy
8 0% widget-apply
20 0% insert-char
8 0% - apply
8 0% - widget-create-child-and-convert
8 0% - widget-apply
8 0% - widget-default-create
4 0% string-match
4 0% - widget-apply
4 0% widget-push-button-value-create
4 0% custom-magic-value-create
4 0% - widget-specify-button
4 0% make-overlay
4 0% - custom-add-parent-links
4 0% - mapatoms
4 0% #<compiled 0x1c52983bfc51a7>
364 4% widget-setup
4 0% - mapc
4 0% - custom-magic-reset
4 0% - widget-value-set
4 0% - widget-apply
4 0% - widget-default-value-set
4 0% - widget-apply
4 0% widget-default-delete
8 0% - byte-code
8 0% - require
8 0% - load-with-code-conversion
8 0% - eval-buffer
4 0% read
4 0% - internal-macroexpand-for-load
4 0% - macroexpand--all-toplevel
4 0% - macroexp--expand-all
4 0% - #<compiled -0x60853496ded3bb1>
4 0% - macroexp--all-forms
4 0% - macroexp--expand-all
4 0% - #<compiled -0x60853496ded3bb1>
4 0% macroexp--all-forms
8 0% read
541 7% Automatic GC
24 0% - ...
20 0% - widget-editable-list-value-get
20 0% - mapcar
20 0% - #<compiled -0xf214aae4a43c62d>
20 0% - widget-apply
20 0% - widget-default-value-inline
20 0% - widget-value
20 0% - widget-apply
20 0% - widget-editable-list-value-get
20 0% - mapcar
20 0% - #<compiled -0xf214aae4a43c62d>
20 0% - widget-apply
20 0% - widget-default-value-inline
20 0% - widget-value
20 0% - widget-apply
20 0% - widget-editable-list-value-get
20 0% - mapcar
16 0% - #<compiled -0xf214aae4a43c62d>
16 0% - widget-apply
4 0% - widget-default-value-inline
4 0% widget-get
4 0% - widget-type-match
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-types-convert-widget
4 0% - mapcar
4 0% - widget-convert
4 0% - widget-value-convert-widget
4 0% widget-get
^ permalink raw reply related [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-09-18 11:07 ` Mauro Aranda
@ 2023-12-21 11:51 ` Ihor Radchenko
2024-11-17 22:51 ` Roland Winkler
0 siblings, 1 reply; 12+ messages in thread
From: Ihor Radchenko @ 2023-12-21 11:51 UTC (permalink / raw)
To: Mauro Aranda; +Cc: Eli Zaretskii, 53606
Mauro Aranda <maurooaranda@gmail.com> writes:
> I focused on the format handling, since there's no need to insert the
> escape formats in the buffer. So I rearranged the 4 functions that
> handle the format to avoid it and here are the figures I got, when
> running:
> (benchmark-run 5
> (customize-option 'bibtex-biblatex-entry-alist))
>
> From master, inserting either :format or :entry-format:
> (130.200276352 291 3.1221133909999996)
>
> Without inserting it:
> (38.244185927000004 266 2.795578699)
> ...
> All data is without native compilation. I'd appreciate if someone could
> at least run it once with native compilation, with and without my patch.
I do not see much difference with native compilation:
- without the patch :: (134.779200699 247 4.294675525)
- with the patch :: (39.828912859 249 3.881637917)
But your patch is still making things faster.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2023-12-21 11:51 ` Ihor Radchenko
@ 2024-11-17 22:51 ` Roland Winkler
2024-11-18 12:15 ` Eli Zaretskii
0 siblings, 1 reply; 12+ messages in thread
From: Roland Winkler @ 2024-11-17 22:51 UTC (permalink / raw)
To: 53606
I looked at this old bug again (while working on BibTeX mode), and I
noticed that one piece of information was missing in this thread that
could be helpful:
Lars filed this report against Emacs 29. Back then, I had still access
to emacs 25.1 and 27.1. On the same machine emacs 25.1 needed about 2s,
whereas 27.1 needed 20s to initialize the customize buffer for
bibtex-biblatex-entry-alist. So it seems something in the customize or
widget library was changed that resulted in the slowdown. Nothing
changed on the side of BibTeX mode back then.
I just filed bug #74409 that is also about the customize buffer for
bibtex-biblatex-entry-alist. It is likewise about a problem that exists
only with more recent versions of emacs. But I do not know whether
these problems are truly related, or some symptoms just happen to be
similar.
^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist
2024-11-17 22:51 ` Roland Winkler
@ 2024-11-18 12:15 ` Eli Zaretskii
0 siblings, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2024-11-18 12:15 UTC (permalink / raw)
To: Roland Winkler; +Cc: 53606
> From: Roland Winkler <winkler@gnu.org>
> Date: Sun, 17 Nov 2024 16:51:07 -0600
>
> I looked at this old bug again (while working on BibTeX mode), and I
> noticed that one piece of information was missing in this thread that
> could be helpful:
>
> Lars filed this report against Emacs 29. Back then, I had still access
> to emacs 25.1 and 27.1. On the same machine emacs 25.1 needed about 2s,
> whereas 27.1 needed 20s to initialize the customize buffer for
> bibtex-biblatex-entry-alist. So it seems something in the customize or
> widget library was changed that resulted in the slowdown. Nothing
> changed on the side of BibTeX mode back then.
Running the recipe after "M-x profiler-start RET RET" might show which
part(s) of the code take most of the time.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-11-18 12:15 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-28 15:03 bug#53606: 29.0.50; Very slow Customize buffer for bibtex-biblatex-entry-alist Lars Ingebrigtsen
2023-09-09 22:23 ` Mauro Aranda
2023-09-09 22:51 ` Mauro Aranda
2023-09-10 5:01 ` Eli Zaretskii
2023-09-10 9:49 ` Mauro Aranda
2023-09-10 10:43 ` Eli Zaretskii
2023-09-10 10:50 ` Ihor Radchenko
2023-09-10 12:41 ` Mauro Aranda
2023-09-18 11:07 ` Mauro Aranda
2023-12-21 11:51 ` Ihor Radchenko
2024-11-17 22:51 ` Roland Winkler
2024-11-18 12:15 ` Eli Zaretskii
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).