* 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).