From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id OJhSBb/ROV8lQQAA0tVLHw (envelope-from ) for ; Mon, 17 Aug 2020 00:39:27 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id fjQvAb/ROV+tMQAAB5/wlQ (envelope-from ) for ; Mon, 17 Aug 2020 00:39:27 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 13705940715 for ; Mon, 17 Aug 2020 00:39:25 +0000 (UTC) Received: from localhost ([::1]:57126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k7TBL-0001zp-N2 for larch@yhetil.org; Sun, 16 Aug 2020 20:39:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43580) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k7TAw-0001zS-LN for emacs-orgmode@gnu.org; Sun, 16 Aug 2020 20:38:58 -0400 Received: from mail-vk1-xa36.google.com ([2607:f8b0:4864:20::a36]:38108) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k7TAr-0000RO-9V for emacs-orgmode@gnu.org; Sun, 16 Aug 2020 20:38:58 -0400 Received: by mail-vk1-xa36.google.com with SMTP id m12so3176399vko.5 for ; Sun, 16 Aug 2020 17:38:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=D7yvnwkKxqYO6ide+OtAbceQ7NKAG8yUOt4hyxb6+B4=; b=I9Z5Ni//lwhs6Vkads42ENzoI/Qgwls2U5CDIPlNN1nb5mUTkOFI6BXcLxx2EcDCKB ha+OEIrd6tDxlN8OPQvLd12jzEdh/EqFQaV3AIO/nFEoOHZ4tPNaAq6OEYbRvoFxQ872 ygZZE/2nKyZGcJPnXS0iPkhTjGBHSzwBHVmGc5NZ/BesCeXZHFvKbk3bX50bTOhxU5vz FixLPe3x1AT7TgLTE4bewtqs1woeukF+rmT7ljCTO0mVxPgp630UO+3SiG9+JUhRMQ5s kJIZxyAsWKPlt7kG2/0h5ErDlqHOoEo5bFg0sVeddkISYcGwF5LTlOESRJzthwgapqXG Ad8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=D7yvnwkKxqYO6ide+OtAbceQ7NKAG8yUOt4hyxb6+B4=; b=lFIUm3O74CSv8G/t/k0QtljZYDCaOoQrQmoul9Y8o9i46g2q+U5fnPC0Ks9ZDeLVgi ZPK47V37vsDrth81uuUPc6G6AQMmjqd2mMzLNvUKuiB+b8u3Mgp2kmp7CRsdqdAwgPWn mYtZn595WvyKatkhE329mvywiWouBAQ2POr1XZgDpDxkc8dsjuoIjEEVENl7JiYYqHPy xiT/jon89fN3svZTEhfH05v9w0OcPLTuRFMnDXlJQh1Tv3AuQ4l07RI3Xa+rb59zpfBR gkQFK4hFtdsUv3vXlD6cEbN1bLNVvcubrIuoEZQm6svEGp3HkPi69qJ8TUfStnnDgs1p ZujQ== X-Gm-Message-State: AOAM532Chc3bWrxdu8cUJW+iYrLNaTqzXvC7GVNX3FpqzZzWJJYxwTzl MzqNY/r9uyLBybJLwXRd3il3HnFlxI6Amz49eg== X-Google-Smtp-Source: ABdhPJx386anWzZ54IQ02JbUnHDc6ArN/HE5WVZo3y+Mj4SIkZ/0GuyzcaG/8oAnYT+7meqmPKzTxb8aoMnsHr5QdrU= X-Received: by 2002:ac5:cce9:: with SMTP id k9mr6879309vkn.17.1597624731596; Sun, 16 Aug 2020 17:38:51 -0700 (PDT) MIME-Version: 1.0 References: <877du1olkf.fsf@localhost> <87v9hktpko.fsf@localhost> <87zh6vgko2.fsf@localhost> In-Reply-To: <87zh6vgko2.fsf@localhost> From: "numbchild@gmail.com" Date: Mon, 17 Aug 2020 08:38:23 +0800 Message-ID: Subject: Re: How to detect current in logbook drawer? To: Ihor Radchenko Content-Type: multipart/alternative; boundary="0000000000009c7c8705ad07fe67" Received-SPF: pass client-ip=2607:f8b0:4864:20::a36; envelope-from=numbchild@gmail.com; helo=mail-vk1-xa36.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Org-mode Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=I9Z5Ni//; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: 0.29 X-TUID: 6OFuEk4wIAwf --0000000000009c7c8705ad07fe67 Content-Type: text/plain; charset="UTF-8" Ihor, thanks for your detailed help. I followed your steps, the `elp` step, I confirmed `org-link-beautify` is invoked and fall into an infinite loop. ``` org-link-beautify 11265 58.586412984 0.0052007468 ``` And another step `debug-on-entry` on `org-link-beautify`, `org-agenda-finalize`, `org-activate-links`. I have not got a stoppoint backtrace on any of upper functions when org-agenda initializes. This is weird, because I tested to use `debug-on-entry` on `org-agenda`. It can popup a stoppoint backtrace. I reviewed my org-link-beautify ( https://github.com/stardiviner/org-link-beautify) source code, I have not use any regexp matching. I guess the function `org-link-beautify--get-element` invoked `(org-element-context)` caused this problem or other similar places. But I use `debug-on-entry` on `org-element-context`. Still have not got stoppoint backtrace. Need your more help. Sorry for disturbing you.... [stardiviner] GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Sun, Aug 16, 2020 at 2:39 PM Ihor Radchenko wrote: > > Your suggestion is very useful, I can see what function is invoked many > > times. But still can't understand what's the cause. > > Looking at your CPU profiler report I can see that the slow part is > happening while running org-agenda-finalize when agenda buffer is > already populated. Most of time is taken by calling your function. I > suspect that it is simply called many times (maybe infinite loop?). > > You may check the number of times your function is called using > > (require 'elp) > (elp-instrument-function #'org-link-beautify) > ;; run agenda > ;; M-x elp-results > > Another suggestion would be invoking debug-on-entry for you function, > for org-activate-links, and for org-agenda-finalize. > > Best, > Ihor > > > > > "numbchild@gmail.com" writes: > > > I tried use debug-on-entry on: > > + org-agenda-list(nil) > > - org-agenda-mode() > > + org-agenda-set-mode-name() > > - org-update-dblock > > + org-dblock-write:clocktable > > > > But got no lucky, Then I followed your another suggestion, use profiler: > > > > I got a very big message log, (not suitable for paste in email, so I > paste > > it on Gist) > > > > - CPU profiler report: https://www.pastery.net/gststf/ > > - Memory profiler report: https://www.pastery.net/gststf+qzyxaf/#qzyxaf > > > > The very deepest call stacks seems the output format is not long enough, > so > > can't display. > > > > Your suggestion is very useful, I can see what function is invoked many > > times. But still can't understand what's the cause. > > > > [stardiviner] GPG key ID: 47C32433 > > IRC(freeenode): stardiviner Twitter: @numbchild > > Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 > > Blog: http://stardiviner.github.io/ > > > > > > On Sat, Aug 15, 2020 at 2:02 PM Ihor Radchenko > wrote: > > > >> >Here is the backtrace of "toggle-debug-on-quit" when I refresh > org-agenda > >> >but has long time suspend. > >> > >> That looks unreadable for me. Also, debug on quit may not show the > >> problematic part depending on your luck. > >> > >> It would be easier to understand your problem if you provided the > >> profiler report (M-x profiler-start ... M-x profiler-report). > >> Then, you could debug-on-entry using the problematic part according to > >> the profiler report. > >> > >> A blind guess - maybe you are modifying match data somewhere in your > >> code. This might cause infinite loop in > >> > >> > (while (org-activate-links (point-max)) (goto-char (match-end 0))) > >> > >> Best, > >> Ihor > >> > >> "numbchild@gmail.com" writes: > >> > >> > Thanks for replying, Ihor. I will look into this regexp. > >> > > >> > Here is the backtrace of "toggle-debug-on-quit" when I refresh > org-agenda > >> > but has long time suspend. > >> > > >> > ``` > >> > Debugger entered--Lisp error: (quit) > >> > > >> > > >> > re-search-forward("\\(\\[\\[\\(\\(?:[^][\\]\\|\\\\\\(?:\\\\\\\\\\)*[][]\\|\\\\+[^][]\\)+..." > >> > 17651 t) > >> > (while (re-search-forward org-link-any-re limit t) (let* ((start > >> > (match-beginning 0)) (end (match-end 0)) (visible-start (or > >> > (match-beginning 3) (match-beginning 2))) (visible-end (or (match-end > 3) > >> > (match-end 2))) (style (cond ((eq 60 (char-after start)) 'angle) ((eq > 91 > >> > (char-after ...)) 'bracket) (t 'plain)))) (if (and (memq style > >> > org-highlight-links) (not (string-match-p > org-element-paragraph-separate > >> > (match-string 0))) (not (and (eq style 'plain) (let (...) (if ... ... > >> > ...))))) (progn (let* ((link-object (save-excursion ... ...)) (link > >> > (org-element-property :raw-link link-object)) (type > (org-element-property > >> > :type link-object)) (path (org-element-property :path link-object)) > >> > (properties (list ... ... ... ... ... ... ... ... ... ... ... t))) > >> > (org-remove-flyspell-overlays-in start end) (org-rear-nonsticky-at > end) > >> (if > >> > (not (eq ... style)) (add-text-properties start end properties) > >> > (remove-text-properties start end '...) (let (...) > (add-text-properties > >> > start visible-start hidden) (add-text-properties visible-start > >> visible-end > >> > properties) (add-text-properties visible-end end hidden) > >> > (org-rear-nonsticky-at visible-start) (org-rear-nonsticky-at > >> visible-end))) > >> > (let ((f ...)) (if (functionp f) (progn ...))) (throw :exit t)))))) > >> > (catch :exit (while (re-search-forward org-link-any-re limit t) > (let* > >> > ((start (match-beginning 0)) (end (match-end 0)) (visible-start (or > >> > (match-beginning 3) (match-beginning 2))) (visible-end (or (match-end > 3) > >> > (match-end 2))) (style (cond ((eq 60 ...) 'angle) ((eq 91 ...) > 'bracket) > >> (t > >> > 'plain)))) (if (and (memq style org-highlight-links) (not > (string-match-p > >> > org-element-paragraph-separate (match-string 0))) (not (and (eq style > >> ...) > >> > (let ... ...)))) (progn (let* ((link-object ...) (link ...) (type ...) > >> > (path ...) (properties ...)) (org-remove-flyspell-overlays-in start > end) > >> > (org-rear-nonsticky-at end) (if (not ...) (add-text-properties start > end > >> > properties) (remove-text-properties start end ...) (let ... ... ... > ... > >> ... > >> > ...)) (let (...) (if ... ...)) (throw :exit t)))))) nil) > >> > org-activate-links(17651) > >> > (while (org-activate-links (point-max)) (goto-char (match-end 0))) > >> > (save-excursion (while (org-activate-links (point-max)) (goto-char > >> > (match-end 0)))) > >> > (save-excursion (goto-char (point-min)) (save-excursion (while > >> > (org-activate-links (point-max)) (goto-char (match-end 0)))) (if (eq > >> > org-agenda-remove-tags t) nil (org-agenda-align-tags)) (if > >> > org-agenda-with-colors nil (remove-text-properties (point-min) > >> (point-max) > >> > '(face nil))) (if (and (boundp 'org-overriding-columns-format) > >> > org-overriding-columns-format) (progn (set (make-local-variable > >> > 'org-local-columns-format) org-overriding-columns-format))) (if > >> > org-agenda-view-columns-initially (progn (org-agenda-columns))) (if > >> > org-agenda-fontify-priorities (progn (org-agenda-fontify-priorities))) > >> (if > >> > (and org-agenda-dim-blocked-tasks org-blocker-hook) (progn > >> > (org-agenda-dim-blocked-tasks))) (org-agenda-mark-clocking-task) (if > >> > org-agenda-entry-text-mode (progn (org-agenda-entry-text-hide) > >> > (org-agenda-entry-text-show))) (if (and (featurep 'org-habit) > >> > (save-excursion (next-single-property-change (point-min) > 'org-habit-p))) > >> > (progn (org-habit-insert-consistency-graphs))) (setq org-agenda-type > >> > (org-get-at-bol 'org-agenda-type)) (if (or (eq > >> > org-agenda-show-inherited-tags 'always) (and (listp > >> > org-agenda-show-inherited-tags) (memq org-agenda-type > >> > org-agenda-show-inherited-tags)) (and (eq > org-agenda-show-inherited-tags > >> t) > >> > (or (eq org-agenda-use-tag-inheritance t) (and (listp > >> > org-agenda-use-tag-inheritance) (not (memq org-agenda-type > >> > org-agenda-use-tag-inheritance)))))) nil (let (mrk) (save-excursion > >> > (goto-char (point-min)) (while (equal (forward-line) 0) (if (setq mrk > >> > (get-text-property ... ...)) (progn (put-text-property ... ... ... > >> > ...))))))) (setq org-agenda-represented-tags nil > >> > org-agenda-represented-categories nil) (if > org-agenda-top-headline-filter > >> > (progn (org-agenda-filter-top-headline-apply > >> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (progn > >> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) (if (get > >> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda-filter-apply > >> (get > >> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if > >> > org-agenda-category-filter (progn (org-agenda-filter-apply > >> > org-agenda-category-filter 'category))) (if (get > >> > 'org-agenda-category-filter :preset-filter) (progn > >> (org-agenda-filter-apply > >> > (get 'org-agenda-category-filter :preset-filter) 'category))) (if > >> > org-agenda-regexp-filter (progn (org-agenda-filter-apply > >> > org-agenda-regexp-filter 'regexp))) (if (get 'org-agenda-regexp-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) (if > >> > org-agenda-effort-filter (progn (org-agenda-filter-apply > >> > org-agenda-effort-filter 'effort))) (if (get 'org-agenda-effort-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-effort-filter :preset-filter) 'effort))) (add-hook > >> > 'kill-buffer-hook 'org-agenda-reset-markers 'append 'local)) > >> > (let ((inhibit-read-only t)) (save-excursion (goto-char (point-min)) > >> > (save-excursion (while (org-activate-links (point-max)) (goto-char > >> > (match-end 0)))) (if (eq org-agenda-remove-tags t) nil > >> > (org-agenda-align-tags)) (if org-agenda-with-colors nil > >> > (remove-text-properties (point-min) (point-max) '(face nil))) (if (and > >> > (boundp 'org-overriding-columns-format) org-overriding-columns-format) > >> > (progn (set (make-local-variable 'org-local-columns-format) > >> > org-overriding-columns-format))) (if org-agenda-view-columns-initially > >> > (progn (org-agenda-columns))) (if org-agenda-fontify-priorities (progn > >> > (org-agenda-fontify-priorities))) (if (and > org-agenda-dim-blocked-tasks > >> > org-blocker-hook) (progn (org-agenda-dim-blocked-tasks))) > >> > (org-agenda-mark-clocking-task) (if org-agenda-entry-text-mode (progn > >> > (org-agenda-entry-text-hide) (org-agenda-entry-text-show))) (if (and > >> > (featurep 'org-habit) (save-excursion (next-single-property-change > >> > (point-min) 'org-habit-p))) (progn > >> (org-habit-insert-consistency-graphs))) > >> > (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) (if (or (eq > >> > org-agenda-show-inherited-tags 'always) (and (listp > >> > org-agenda-show-inherited-tags) (memq org-agenda-type > >> > org-agenda-show-inherited-tags)) (and (eq > org-agenda-show-inherited-tags > >> t) > >> > (or (eq org-agenda-use-tag-inheritance t) (and (listp > >> > org-agenda-use-tag-inheritance) (not ...))))) nil (let (mrk) > >> > (save-excursion (goto-char (point-min)) (while (equal (forward-line) > 0) > >> (if > >> > (setq mrk ...) (progn ...)))))) (setq org-agenda-represented-tags nil > >> > org-agenda-represented-categories nil) (if > org-agenda-top-headline-filter > >> > (progn (org-agenda-filter-top-headline-apply > >> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (progn > >> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) (if (get > >> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda-filter-apply > >> (get > >> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if > >> > org-agenda-category-filter (progn (org-agenda-filter-apply > >> > org-agenda-category-filter 'category))) (if (get > >> > 'org-agenda-category-filter :preset-filter) (progn > >> (org-agenda-filter-apply > >> > (get 'org-agenda-category-filter :preset-filter) 'category))) (if > >> > org-agenda-regexp-filter (progn (org-agenda-filter-apply > >> > org-agenda-regexp-filter 'regexp))) (if (get 'org-agenda-regexp-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) (if > >> > org-agenda-effort-filter (progn (org-agenda-filter-apply > >> > org-agenda-effort-filter 'effort))) (if (get 'org-agenda-effort-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-effort-filter :preset-filter) 'effort))) (add-hook > >> > 'kill-buffer-hook 'org-agenda-reset-markers 'append 'local)) > (run-hooks > >> > 'org-agenda-finalize-hook)) > >> > (if org-agenda-multi nil (let ((inhibit-read-only t)) > (save-excursion > >> > (goto-char (point-min)) (save-excursion (while (org-activate-links > >> > (point-max)) (goto-char (match-end 0)))) (if (eq > org-agenda-remove-tags > >> t) > >> > nil (org-agenda-align-tags)) (if org-agenda-with-colors nil > >> > (remove-text-properties (point-min) (point-max) '(face nil))) (if (and > >> > (boundp 'org-overriding-columns-format) org-overriding-columns-format) > >> > (progn (set (make-local-variable 'org-local-columns-format) > >> > org-overriding-columns-format))) (if org-agenda-view-columns-initially > >> > (progn (org-agenda-columns))) (if org-agenda-fontify-priorities (progn > >> > (org-agenda-fontify-priorities))) (if (and > org-agenda-dim-blocked-tasks > >> > org-blocker-hook) (progn (org-agenda-dim-blocked-tasks))) > >> > (org-agenda-mark-clocking-task) (if org-agenda-entry-text-mode (progn > >> > (org-agenda-entry-text-hide) (org-agenda-entry-text-show))) (if (and > >> > (featurep 'org-habit) (save-excursion (next-single-property-change > >> > (point-min) 'org-habit-p))) (progn > >> (org-habit-insert-consistency-graphs))) > >> > (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) (if (or (eq > >> > org-agenda-show-inherited-tags 'always) (and (listp > >> > org-agenda-show-inherited-tags) (memq org-agenda-type > >> > org-agenda-show-inherited-tags)) (and (eq > org-agenda-show-inherited-tags > >> t) > >> > (or (eq org-agenda-use-tag-inheritance t) (and ... ...)))) nil (let > (mrk) > >> > (save-excursion (goto-char (point-min)) (while (equal ... 0) (if ... > >> > ...))))) (setq org-agenda-represented-tags nil > >> > org-agenda-represented-categories nil) (if > org-agenda-top-headline-filter > >> > (progn (org-agenda-filter-top-headline-apply > >> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (progn > >> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) (if (get > >> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda-filter-apply > >> (get > >> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if > >> > org-agenda-category-filter (progn (org-agenda-filter-apply > >> > org-agenda-category-filter 'category))) (if (get > >> > 'org-agenda-category-filter :preset-filter) (progn > >> (org-agenda-filter-apply > >> > (get 'org-agenda-category-filter :preset-filter) 'category))) (if > >> > org-agenda-regexp-filter (progn (org-agenda-filter-apply > >> > org-agenda-regexp-filter 'regexp))) (if (get 'org-agenda-regexp-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) (if > >> > org-agenda-effort-filter (progn (org-agenda-filter-apply > >> > org-agenda-effort-filter 'effort))) (if (get 'org-agenda-effort-filter > >> > :preset-filter) (progn (org-agenda-filter-apply (get > >> > 'org-agenda-effort-filter :preset-filter) 'effort))) (add-hook > >> > 'kill-buffer-hook 'org-agenda-reset-markers 'append 'local)) > (run-hooks > >> > 'org-agenda-finalize-hook))) > >> > org-agenda-finalize() > >> > (let* ((span (org-agenda-ndays-to-span (or span org-agenda-span))) > >> (today > >> > (org-today)) (sd (or start-day today)) (ndays > (org-agenda-span-to-ndays > >> > span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) (eq ndays > >> 14)) > >> > org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil > 'ifmode)) > >> > (files thefiles) (start (if (or (null org-agenda-start-on-weekday) (< > >> ndays > >> > 7)) sd (let* ((nt ...) (n1 org-agenda-start-on-weekday) (d ...)) (- > sd (+ > >> > ... d))))) (day-numbers (list start)) (day-cnt 0) (inhibit-redisplay > (not > >> > debug-on-error)) (org-agenda-show-log-scoped org-agenda-show-log) s e > rtn > >> > rtnall file date d start-pos end-pos todayp clocktable-start > >> clocktable-end > >> > filter) (setq org-agenda-redo-command (list 'org-agenda-list (list > 'quote > >> > arg) start-day (list 'quote span) with-hour)) (let ((--dotimes-limit-- > >> (1- > >> > ndays)) (n 0)) (while (< n --dotimes-limit--) (setq day-numbers (cons > (1+ > >> > (car day-numbers)) day-numbers)) (setq n (1+ n)))) (setq day-numbers > >> > (nreverse day-numbers)) (setq clocktable-start (car day-numbers) > >> > clocktable-end (1+ (or (org-last day-numbers) 0))) (set > >> > (make-local-variable 'org-starting-day) (car day-numbers)) (set > >> > (make-local-variable 'org-arg-loc) arg) (set (make-local-variable > >> > 'org-agenda-current-span) (org-agenda-ndays-to-span span)) (if > >> > org-agenda-compact-blocks nil (let* ((d1 (car day-numbers)) (d2 > (org-last > >> > day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 (org-days-to-iso-week > >> > d2))) (setq s (point)) (cond ((not org-agenda-overriding-header) > (insert > >> > (concat ... "-agenda" ... ":\n"))) ((equal > org-agenda-overriding-header > >> "") > >> > nil) ((stringp org-agenda-overriding-header) (insert (propertize > >> > org-agenda-overriding-header ... ...) "\n")) (t (user-error "Invalid > >> value > >> > for `org-agenda-overriding-hea..." org-agenda-overriding-header)))) > (if > >> (> > >> > (point) s) (progn (add-text-properties s (1- (point)) (list 'face > >> > 'org-agenda-structure 'org-date-line t)) (org-agenda-mark-header-line > >> s)))) > >> > (while (setq d (car-safe (prog1 day-numbers (setq day-numbers (cdr > >> > day-numbers))))) (setq date (calendar-gregorian-from-absolute d) s > >> (point)) > >> > (if (or (setq todayp (= d today)) (and (not start-pos) (= d sd))) > (setq > >> > start-pos (point)) (if (and start-pos (not end-pos)) (progn (setq > end-pos > >> > (point))))) (setq files thefiles rtnall nil) (while (setq file > (car-safe > >> > (prog1 files (setq files ...)))) (catch 'nextfile > (org-check-agenda-file > >> > file) (let ((org-agenda-entry-types org-agenda-entry-types)) (if > (member > >> > :deadline* org-agenda-entry-types) (progn ...)) (if (member > :scheduled* > >> > org-agenda-entry-types) (progn ...)) (if with-hour (progn ... ...)) > (if > >> > org-agenda-include-deadlines nil (setq org-agenda-entry-types ...)) > (cond > >> > (... ...) (org-agenda-show-log-scoped ...) (t ...))) (setq rtnall > (append > >> > rtnall rtn)))) (if org-agenda-include-diary (progn (let > >> > ((org-agenda-search-headline-for-time t)) (require 'diary-lib) (setq > rtn > >> > (org-get-entries-from-diary date)) (setq rtnall (append rtnall > rtn))))) > >> (if > >> > (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ > day-cnt)) > >> > (insert (if (stringp org-agenda-format-date) (format-time-string > >> > org-agenda-format-date ...) (funcall org-agenda-format-date date)) > "\n") > >> > (put-text-property s (1- (point)) 'face (org-agenda-get-day-face > date)) > >> > (put-text-property s (1- (point)) 'org-date-line t) > (put-text-property s > >> > (1- (point)) 'org-agenda-date-header t) (put-text-property s (1- > (point)) > >> > 'org-day-cnt day-cnt) (if todayp (progn (put-text-property s ... ... > t))) > >> > (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if > >> > rtnall (progn (insert ... "\n"))) (put-text-property s (1- (point)) > 'day > >> d) > >> > (put-text-property s (1- (point)) 'org-day-cnt day-cnt)))) (if (and > >> > org-agenda-clockreport-mode clocktable-start) (progn (let > >> > ((org-agenda-files (org-agenda-files nil ...)) (p (copy-sequence > >> > org-agenda-clockreport-parameter-plist)) tbl) (setq p > (org-plist-delete p > >> > :block)) (setq p (plist-put p :tstart clocktable-start)) (setq p > >> (plist-put > >> > p :tend clocktable-end)) (setq p (plist-put p :scope 'agenda)) (setq > tbl > >> > (apply 'org-clock-get-clocktable p)) (insert tbl)))) (goto-char > >> > (point-min)) (or org-agenda-multi (org-agenda-fit-window-to-buffer)) > (if > >> > (or (not (get-buffer-window org-agenda-buffer-name)) (and > >> > (pos-visible-in-window-p (point-min)) (pos-visible-in-window-p > >> > (point-max)))) nil (goto-char (1- (point-max))) (recenter -1) (if (not > >> > (pos-visible-in-window-p (or start-pos 1))) (progn (goto-char (or > >> start-pos > >> > 1)) (recenter 1)))) (goto-char (or start-pos 1)) (add-text-properties > >> > (point-min) (point-max) (list 'org-agenda-type 'agenda 'org-last-args > >> (list > >> > arg start-day span) 'org-redo-cmd org-agenda-redo-command > 'org-series-cmd > >> > org-cmd)) (if (eq org-agenda-show-log-scoped 'clockcheck) (progn > >> > (org-agenda-show-clocking-issues))) (org-agenda-finalize) (setq > >> > buffer-read-only t) (message "")) > >> > (catch 'exit (setq org-agenda-buffer-name (or > >> org-agenda-buffer-tmp-name > >> > (and org-agenda-doing-sticky-redo org-agenda-buffer-name) (if > >> > org-agenda-sticky (progn (cond (... ...) (org-keys ...) (t "*Org > >> > Agenda(a)*")))) "*Org Agenda*")) (org-agenda-prepare "Day/Week") (setq > >> > start-day (or start-day org-agenda-start-day)) (if (stringp start-day) > >> > (progn (setq start-day (time-to-days (org-read-date nil t > start-day))))) > >> > (org-compile-prefix-format 'agenda) (org-set-sorting-strategy 'agenda) > >> > (let* ((span (org-agenda-ndays-to-span (or span org-agenda-span))) > (today > >> > (org-today)) (sd (or start-day today)) (ndays > (org-agenda-span-to-ndays > >> > span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) (eq ndays > >> 14)) > >> > org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil > 'ifmode)) > >> > (files thefiles) (start (if (or (null org-agenda-start-on-weekday) (< > >> ndays > >> > 7)) sd (let* (... ... ...) (- sd ...)))) (day-numbers (list start)) > >> > (day-cnt 0) (inhibit-redisplay (not debug-on-error)) > >> > (org-agenda-show-log-scoped org-agenda-show-log) s e rtn rtnall file > >> date d > >> > start-pos end-pos todayp clocktable-start clocktable-end filter) (setq > >> > org-agenda-redo-command (list 'org-agenda-list (list 'quote arg) > >> start-day > >> > (list 'quote span) with-hour)) (let ((--dotimes-limit-- (1- ndays)) (n > >> 0)) > >> > (while (< n --dotimes-limit--) (setq day-numbers (cons (1+ ...) > >> > day-numbers)) (setq n (1+ n)))) (setq day-numbers (nreverse > day-numbers)) > >> > (setq clocktable-start (car day-numbers) clocktable-end (1+ (or > (org-last > >> > day-numbers) 0))) (set (make-local-variable 'org-starting-day) (car > >> > day-numbers)) (set (make-local-variable 'org-arg-loc) arg) (set > >> > (make-local-variable 'org-agenda-current-span) > (org-agenda-ndays-to-span > >> > span)) (if org-agenda-compact-blocks nil (let* ((d1 (car day-numbers)) > >> (d2 > >> > (org-last day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 > >> > (org-days-to-iso-week d2))) (setq s (point)) (cond ((not > >> > org-agenda-overriding-header) (insert ...)) ((equal > >> > org-agenda-overriding-header "") nil) ((stringp > >> > org-agenda-overriding-header) (insert ... "\n")) (t (user-error > "Invalid > >> > value for `org-agenda-overriding-hea..." > org-agenda-overriding-header)))) > >> > (if (> (point) s) (progn (add-text-properties s (1- ...) (list ... ... > >> ... > >> > t)) (org-agenda-mark-header-line s)))) (while (setq d (car-safe (prog1 > >> > day-numbers (setq day-numbers ...)))) (setq date > >> > (calendar-gregorian-from-absolute d) s (point)) (if (or (setq todayp > (= d > >> > today)) (and (not start-pos) (= d sd))) (setq start-pos (point)) (if > (and > >> > start-pos (not end-pos)) (progn (setq end-pos ...)))) (setq files > >> thefiles > >> > rtnall nil) (while (setq file (car-safe (prog1 files ...))) (catch > >> > 'nextfile (org-check-agenda-file file) (let (...) (if ... ...) (if ... > >> ...) > >> > (if with-hour ...) (if org-agenda-include-deadlines nil ...) (cond ... > >> ... > >> > ...)) (setq rtnall (append rtnall rtn)))) (if org-agenda-include-diary > >> > (progn (let (...) (require ...) (setq rtn ...) (setq rtnall ...)))) > (if > >> (or > >> > rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) > >> > (insert (if ... ... ...) "\n") (put-text-property s (1- ...) 'face > >> > (org-agenda-get-day-face date)) (put-text-property s (1- ...) > >> > 'org-date-line t) (put-text-property s (1- ...) > 'org-agenda-date-header > >> t) > >> > (put-text-property s (1- ...) 'org-day-cnt day-cnt) (if todayp (progn > >> ...)) > >> > (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if > >> > rtnall (progn ...)) (put-text-property s (1- ...) 'day d) > >> > (put-text-property s (1- ...) 'org-day-cnt day-cnt)))) (if (and > >> > org-agenda-clockreport-mode clocktable-start) (progn (let > >> > ((org-agenda-files ...) (p ...) tbl) (setq p (org-plist-delete p > :block)) > >> > (setq p (plist-put p :tstart clocktable-start)) (setq p (plist-put p > >> :tend > >> > clocktable-end)) (setq p (plist-put p :scope ...)) (setq tbl (apply > ... > >> p)) > >> > (insert tbl)))) (goto-char (point-min)) (or org-agenda-multi > >> > (org-agenda-fit-window-to-buffer)) (if (or (not (get-buffer-window > >> > org-agenda-buffer-name)) (and (pos-visible-in-window-p (point-min)) > >> > (pos-visible-in-window-p (point-max)))) nil (goto-char (1- > (point-max))) > >> > (recenter -1) (if (not (pos-visible-in-window-p (or start-pos 1))) > (progn > >> > (goto-char (or start-pos 1)) (recenter 1)))) (goto-char (or start-pos > 1)) > >> > (add-text-properties (point-min) (point-max) (list 'org-agenda-type > >> 'agenda > >> > 'org-last-args (list arg start-day span) 'org-redo-cmd > >> > org-agenda-redo-command 'org-series-cmd org-cmd)) (if (eq > >> > org-agenda-show-log-scoped 'clockcheck) (progn > >> > (org-agenda-show-clocking-issues))) (org-agenda-finalize) (setq > >> > buffer-read-only t) (message ""))) > >> > org-agenda-list(nil nil day nil) > >> > (let nil (org-agenda-list 'nil nil 'day nil)) > >> > eval((let nil (org-agenda-list 'nil nil 'day nil))) > >> > org-let(nil (org-agenda-list 'nil nil 'day nil)) > >> > (if series-redo-cmd (eval series-redo-cmd) (org-let lprops > redo-cmd)) > >> > (let* ((p (or (and (looking-at "\\'") (1- (point))) (point))) (cpa > (if > >> > (eq all t) nil current-prefix-arg)) (org-agenda-doing-sticky-redo > >> > org-agenda-sticky) (org-agenda-sticky nil) (org-agenda-buffer-name (or > >> > org-agenda-this-buffer-name org-agenda-buffer-name)) > >> (org-agenda-keep-modes > >> > t) (tag-filter org-agenda-tag-filter) (tag-preset (get > >> > 'org-agenda-tag-filter :preset-filter)) (top-hl-filter > >> > org-agenda-top-headline-filter) (cat-filter > org-agenda-category-filter) > >> > (cat-preset (get 'org-agenda-category-filter :preset-filter)) > (re-filter > >> > org-agenda-regexp-filter) (re-preset (get 'org-agenda-regexp-filter > >> > :preset-filter)) (effort-filter org-agenda-effort-filter) > (effort-preset > >> > (get 'org-agenda-effort-filter :preset-filter)) > >> > (org-agenda-tag-filter-while-redo (or tag-filter tag-preset)) (cols > >> > org-agenda-columns-active) (line (org-current-line)) (window-line (- > line > >> > (org-current-line (window-start)))) (lprops (get > 'org-agenda-redo-command > >> > 'org-lprops)) (redo-cmd (get-text-property p 'org-redo-cmd)) > (last-args > >> > (get-text-property p 'org-last-args)) (org-agenda-overriding-cmd > >> > (get-text-property p 'org-series-cmd)) > >> (org-agenda-overriding-cmd-arguments > >> > (if (eq all t) nil (cond ((listp last-args) (cons (or cpa ...) (cdr > >> > last-args))) ((stringp last-args) last-args)))) (series-redo-cmd > >> > (get-text-property p 'org-series-redo-cmd))) (put > 'org-agenda-tag-filter > >> > :preset-filter nil) (put 'org-agenda-category-filter :preset-filter > nil) > >> > (put 'org-agenda-regexp-filter :preset-filter nil) (put > >> > 'org-agenda-effort-filter :preset-filter nil) (and cols > >> (org-columns-quit)) > >> > (message "Rebuilding agenda buffer...") (if series-redo-cmd (eval > >> > series-redo-cmd) (org-let lprops redo-cmd)) (setq org-agenda-undo-list > >> nil > >> > org-agenda-pending-undo-list nil org-agenda-tag-filter tag-filter > >> > org-agenda-category-filter cat-filter org-agenda-regexp-filter > re-filter > >> > org-agenda-effort-filter effort-filter org-agenda-top-headline-filter > >> > top-hl-filter) (message "Rebuilding agenda buffer...done") (put > >> > 'org-agenda-tag-filter :preset-filter tag-preset) (put > >> > 'org-agenda-category-filter :preset-filter cat-preset) (put > >> > 'org-agenda-regexp-filter :preset-filter re-preset) (put > >> > 'org-agenda-effort-filter :preset-filter effort-preset) (let ((tag (or > >> > tag-filter tag-preset)) (cat (or cat-filter cat-preset)) (effort (or > >> > effort-filter effort-preset)) (re (or re-filter re-preset))) (if tag > >> (progn > >> > (org-agenda-filter-apply tag 'tag t))) (if cat (progn > >> > (org-agenda-filter-apply cat 'category))) (if effort (progn > >> > (org-agenda-filter-apply effort 'effort))) (if re (progn > >> > (org-agenda-filter-apply re 'regexp)))) (and top-hl-filter > >> > (org-agenda-filter-top-headline-apply top-hl-filter)) (and cols > >> > (called-interactively-p 'any) (org-agenda-columns)) (org-goto-line > line) > >> > (recenter window-line)) > >> > org-agenda-redo(t) > >> > (if exhaustive (let ((--dolist-tail-- (buffer-list)) buffer) (while > >> > --dolist-tail-- (setq buffer (car --dolist-tail--)) > (save-current-buffer > >> > (set-buffer buffer) (if (derived-mode-p 'org-agenda-mode) (progn > >> > (org-agenda-redo t)))) (setq --dolist-tail-- (cdr --dolist-tail--)))) > >> > (org-agenda-redo t)) > >> > org-agenda-redo-all(nil) > >> > funcall-interactively(org-agenda-redo-all nil) > >> > call-interactively(org-agenda-redo-all nil nil) > >> > command-execute(org-agenda-redo-all) > >> > ``` > >> > > >> > [stardiviner] GPG key ID: 47C32433 > >> > IRC(freeenode): stardiviner Twitter: @numbchild > >> > Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 > >> > Blog: http://stardiviner.github.io/ > >> > > >> > > >> > On Fri, Aug 14, 2020 at 1:15 PM Ihor Radchenko > >> wrote: > >> > > >> >> > I want to get around this problem. So need to know how to detect > >> >> currently > >> >> > in logbook drawer or something else which used to record clocking > >> note, > >> >> > `org-add-note`, etc. > >> >> > >> >> You may try to use `org-logbook-drawer-re'. > >> >> > >> >> > When I toggle org-log-mode and related options in org-agenda > buffer. I > >> >> > found my org-link-beautify will caused long time suspend and no > stop. > >> >> After > >> >> > debug, I found org-link-beautify text-property caused this problem. > >> >> > >> >> Could you provide more details how your text property is causing the > >> >> problem in org-agenda? Which function in agenda is slow? > >> >> > >> >> Best, > >> >> Ihor > >> >> > >> >> > >> >> "numbchild@gmail.com" writes: > >> >> > >> >> > I have a org-mode extension: > >> >> > > >> >> > >> > https://github.com/stardiviner/org-link-beautify/blob/master/org-link-beautify.el#L71 > >> >> > > >> >> > It will beautify links with text-properties. > >> >> > > >> >> > When I toggle org-log-mode and related options in org-agenda > buffer. I > >> >> > found my org-link-beautify will caused long time suspend and no > stop. > >> >> After > >> >> > debug, I found org-link-beautify text-property caused this problem. > >> >> > > >> >> > I want to get around this problem. So need to know how to detect > >> >> currently > >> >> > in logbook drawer or something else which used to record clocking > >> note, > >> >> > `org-add-note`, etc. > >> >> > > >> >> > Or maybe org-agenda upstream can do something to work around this > >> >> > text-properties issue? > >> >> > > >> >> > [stardiviner] GPG key ID: > 47C32433 > >> >> > IRC(freeenode): stardiviner Twitter: > @numbchild > >> >> > Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 > 2433 > >> >> > Blog: http://stardiviner.github.io/ > >> >> > >> > --0000000000009c7c8705ad07fe67 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ihor, thanks for your detailed help.
I followed your = steps, the `elp` step, I confirmed `org-link-beautify` is invoked and fall = into an infinite loop.

```
org-link-beautify =C2=A0= 11265 =C2=A0 =C2=A0 =C2=A0 58.586412984 =C2=A00.0052007468
```
<= div class=3D"gmail_default" style=3D"font-family:trebuchet ms,sans-serif"><= br>
And another step `debug-on-entry` on `org-link-beautify`, `org-age= nda-finalize`, `org-activate-links`. I have not got a stoppoint backtrace o= n any of upper functions when org-agenda initializes. This is weird, becaus= e I tested to use `debug-on-entry` on `org-agenda`. It can popup a stoppoin= t backtrace.

I reviewed my org-link-beautify (https://github.com/stardivin= er/org-link-beautify) source code, I have not use any regexp matching. = I guess the function `org-link-beautify--get-element` invoked `(org-element= -context)` caused this problem or other similar places. But I use `debug-on= -entry` on `org-element-context`. Still have not got stoppoint backtrace.

Need your more help. Sorry for disturbing you....
[stard= iviner]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <Hac= k this world!>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 GPG key ID: 47C32433
IRC= (freeenode): stardiviner =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Twitter:= =C2=A0 @numbchild
Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB9= 9 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.github.io/


On Sun, Aug 16, 2020 at 2:39 PM Ihor Radchenko <yantar92@gmail.com> wrote:
> Your suggestion is very us= eful, I can see what function is invoked many
> times. But still can't understand what's the cause.

Looking at your CPU profiler report I can see that the slow part is
happening while running org-agenda-finalize when agenda buffer is
already populated. Most of time is taken by calling your function. I
suspect that it is simply called many times (maybe infinite loop?).

You may check the number of times your function is called using

(require 'elp)
(elp-instrument-function #'org-link-beautify)
;; run agenda
;; M-x elp-results

Another suggestion would be invoking debug-on-entry for you function,
for org-activate-links, and for org-agenda-finalize.

Best,
Ihor




"numbchild@gm= ail.com" <numbchild@gmail.com> writes:

> I tried use debug-on-entry on:
>=C2=A0 =C2=A0+ org-agenda-list(nil)
>=C2=A0 =C2=A0 =C2=A0- org-agenda-mode()
>=C2=A0 =C2=A0 =C2=A0 =C2=A0+ org-agenda-set-mode-name()
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- org-update-dblock
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0+ org-dblock-write:clocktable<= br> >
> But got no lucky, Then I followed your another suggestion, use profile= r:
>
> I got a very big message log, (not suitable for paste in email, so I p= aste
> it on Gist)
>
> - CPU profiler report: https://www.pastery.net/gststf/
> - Memory profiler report: https://www.pastery.net/= gststf+qzyxaf/#qzyxaf
>
> The very deepest call stacks seems the output format is not long enoug= h, so
> can't display.
>
> Your suggestion is very useful, I can see what function is invoked man= y
> times. But still can't understand what's the cause.
>
> [stardiviner]=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<Hack this wo= rld!>=C2=A0 =C2=A0 =C2=A0 GPG key ID: 47C32433
> IRC(freeenode): stardiviner=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Twitter:=C2=A0 @numbchild
> Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB99 B8C4 B8E5 47C3= 2433
> Blog: http://stardiviner.github.io/
>
>
> On Sat, Aug 15, 2020 at 2:02 PM Ihor Radchenko <yantar92@gmail.com> wrote:
>
>> >Here is the backtrace of "toggle-debug-on-quit" when= I refresh org-agenda
>> >but has long time suspend.
>>
>> That looks unreadable for me. Also, debug on quit may not show the=
>> problematic part depending on your luck.
>>
>> It would be easier to understand your problem if you provided the<= br> >> profiler report (M-x profiler-start ... M-x profiler-report).
>> Then, you could debug-on-entry using the problematic part accordin= g to
>> the profiler report.
>>
>> A blind guess - maybe you are modifying match data somewhere in yo= ur
>> code. This might cause infinite loop in
>>
>> > (while (org-activate-links (point-max)) (goto-char (match-end= 0)))
>>
>> Best,
>> Ihor
>>
>> "num= bchild@gmail.com" <numbchild@gmail.com> writes:
>>
>> > Thanks for replying, Ihor. I will look into this regexp.
>> >
>> > Here is the backtrace of "toggle-debug-on-quit" whe= n I refresh org-agenda
>> > but has long time suspend.
>> >
>> > ```
>> > Debugger entered--Lisp error: (quit)
>> >
>> >
>> re-search-forward("\\(\\[\\[\\(\\(?:[^][\\]\\|\\\\\\(?:\\\\\\= \\\\)*[][]\\|\\\\+[^][]\\)+..."
>> > 17651 t)
>> >=C2=A0 =C2=A0(while (re-search-forward org-link-any-re limit t= ) (let* ((start
>> > (match-beginning 0)) (end (match-end 0)) (visible-start (or >> > (match-beginning 3) (match-beginning 2))) (visible-end (or (m= atch-end 3)
>> > (match-end 2))) (style (cond ((eq 60 (char-after start)) '= ;angle) ((eq 91
>> > (char-after ...)) 'bracket) (t 'plain)))) (if (and (m= emq style
>> > org-highlight-links) (not (string-match-p org-element-paragra= ph-separate
>> > (match-string 0))) (not (and (eq style 'plain) (let (...)= (if ... ...
>> > ...))))) (progn (let* ((link-object (save-excursion ... ...))= (link
>> > (org-element-property :raw-link link-object)) (type (org-elem= ent-property
>> > :type link-object)) (path (org-element-property :path link-ob= ject))
>> > (properties (list ... ... ... ... ... ... ... ... ... ... ...= t)))
>> > (org-remove-flyspell-overlays-in start end) (org-rear-nonstic= ky-at end)
>> (if
>> > (not (eq ... style)) (add-text-properties start end propertie= s)
>> > (remove-text-properties start end '...) (let (...) (add-t= ext-properties
>> > start visible-start hidden) (add-text-properties visible-star= t
>> visible-end
>> > properties) (add-text-properties visible-end end hidden)
>> > (org-rear-nonsticky-at visible-start) (org-rear-nonsticky-at<= br> >> visible-end)))
>> > (let ((f ...)) (if (functionp f) (progn ...))) (throw :exit t= ))))))
>> >=C2=A0 =C2=A0(catch :exit (while (re-search-forward org-link-a= ny-re limit t) (let*
>> > ((start (match-beginning 0)) (end (match-end 0)) (visible-sta= rt (or
>> > (match-beginning 3) (match-beginning 2))) (visible-end (or (m= atch-end 3)
>> > (match-end 2))) (style (cond ((eq 60 ...) 'angle) ((eq 91= ...) 'bracket)
>> (t
>> > 'plain)))) (if (and (memq style org-highlight-links) (not= (string-match-p
>> > org-element-paragraph-separate (match-string 0))) (not (and (= eq style
>> ...)
>> > (let ... ...)))) (progn (let* ((link-object ...) (link ...) (= type ...)
>> > (path ...) (properties ...)) (org-remove-flyspell-overlays-in= start end)
>> > (org-rear-nonsticky-at end) (if (not ...) (add-text-propertie= s start end
>> > properties) (remove-text-properties start end ...) (let ... .= .. ... ...
>> ...
>> > ...)) (let (...) (if ... ...)) (throw :exit t)))))) nil)
>> >=C2=A0 =C2=A0org-activate-links(17651)
>> >=C2=A0 =C2=A0(while (org-activate-links (point-max)) (goto-cha= r (match-end 0)))
>> >=C2=A0 =C2=A0(save-excursion (while (org-activate-links (point= -max)) (goto-char
>> > (match-end 0))))
>> >=C2=A0 =C2=A0(save-excursion (goto-char (point-min)) (save-exc= ursion (while
>> > (org-activate-links (point-max)) (goto-char (match-end 0)))) = (if (eq
>> > org-agenda-remove-tags t) nil (org-agenda-align-tags)) (if >> > org-agenda-with-colors nil (remove-text-properties (point-min= )
>> (point-max)
>> > '(face nil))) (if (and (boundp 'org-overriding-column= s-format)
>> > org-overriding-columns-format) (progn (set (make-local-variab= le
>> > 'org-local-columns-format) org-overriding-columns-format)= )) (if
>> > org-agenda-view-columns-initially (progn (org-agenda-columns)= )) (if
>> > org-agenda-fontify-priorities (progn (org-agenda-fontify-prio= rities)))
>> (if
>> > (and org-agenda-dim-blocked-tasks org-blocker-hook) (progn >> > (org-agenda-dim-blocked-tasks))) (org-agenda-mark-clocking-ta= sk) (if
>> > org-agenda-entry-text-mode (progn (org-agenda-entry-text-hide= )
>> > (org-agenda-entry-text-show))) (if (and (featurep 'org-ha= bit)
>> > (save-excursion (next-single-property-change (point-min) '= ;org-habit-p)))
>> > (progn (org-habit-insert-consistency-graphs))) (setq org-agen= da-type
>> > (org-get-at-bol 'org-agenda-type)) (if (or (eq
>> > org-agenda-show-inherited-tags 'always) (and (listp
>> > org-agenda-show-inherited-tags) (memq org-agenda-type
>> > org-agenda-show-inherited-tags)) (and (eq org-agenda-show-inh= erited-tags
>> t)
>> > (or (eq org-agenda-use-tag-inheritance t) (and (listp
>> > org-agenda-use-tag-inheritance) (not (memq org-agenda-type >> > org-agenda-use-tag-inheritance)))))) nil (let (mrk) (save-exc= ursion
>> > (goto-char (point-min)) (while (equal (forward-line) 0) (if (= setq mrk
>> > (get-text-property ... ...)) (progn (put-text-property ... ..= . ...
>> > ...))))))) (setq org-agenda-represented-tags nil
>> > org-agenda-represented-categories nil) (if org-agenda-top-hea= dline-filter
>> > (progn (org-agenda-filter-top-headline-apply
>> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (= progn
>> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) = (if (get
>> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda= -filter-apply
>> (get
>> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if<= br> >> > org-agenda-category-filter (progn (org-agenda-filter-apply >> > org-agenda-category-filter 'category))) (if (get
>> > 'org-agenda-category-filter :preset-filter) (progn
>> (org-agenda-filter-apply
>> > (get 'org-agenda-category-filter :preset-filter) 'cat= egory))) (if
>> > org-agenda-regexp-filter (progn (org-agenda-filter-apply
>> > org-agenda-regexp-filter 'regexp))) (if (get 'org-age= nda-regexp-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) = (if
>> > org-agenda-effort-filter (progn (org-agenda-filter-apply
>> > org-agenda-effort-filter 'effort))) (if (get 'org-age= nda-effort-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-effort-filter :preset-filter) 'effort))) = (add-hook
>> > 'kill-buffer-hook 'org-agenda-reset-markers 'appe= nd 'local))
>> >=C2=A0 =C2=A0(let ((inhibit-read-only t)) (save-excursion (got= o-char (point-min))
>> > (save-excursion (while (org-activate-links (point-max)) (goto= -char
>> > (match-end 0)))) (if (eq org-agenda-remove-tags t) nil
>> > (org-agenda-align-tags)) (if org-agenda-with-colors nil
>> > (remove-text-properties (point-min) (point-max) '(face ni= l))) (if (and
>> > (boundp 'org-overriding-columns-format) org-overriding-co= lumns-format)
>> > (progn (set (make-local-variable 'org-local-columns-forma= t)
>> > org-overriding-columns-format))) (if org-agenda-view-columns-= initially
>> > (progn (org-agenda-columns))) (if org-agenda-fontify-prioriti= es (progn
>> > (org-agenda-fontify-priorities))) (if (and org-agenda-dim-blo= cked-tasks
>> > org-blocker-hook) (progn (org-agenda-dim-blocked-tasks)))
>> > (org-agenda-mark-clocking-task) (if org-agenda-entry-text-mod= e (progn
>> > (org-agenda-entry-text-hide) (org-agenda-entry-text-show))) (= if (and
>> > (featurep 'org-habit) (save-excursion (next-single-proper= ty-change
>> > (point-min) 'org-habit-p))) (progn
>> (org-habit-insert-consistency-graphs)))
>> > (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) = (if (or (eq
>> > org-agenda-show-inherited-tags 'always) (and (listp
>> > org-agenda-show-inherited-tags) (memq org-agenda-type
>> > org-agenda-show-inherited-tags)) (and (eq org-agenda-show-inh= erited-tags
>> t)
>> > (or (eq org-agenda-use-tag-inheritance t) (and (listp
>> > org-agenda-use-tag-inheritance) (not ...))))) nil (let (mrk)<= br> >> > (save-excursion (goto-char (point-min)) (while (equal (forwar= d-line) 0)
>> (if
>> > (setq mrk ...) (progn ...)))))) (setq org-agenda-represented-= tags nil
>> > org-agenda-represented-categories nil) (if org-agenda-top-hea= dline-filter
>> > (progn (org-agenda-filter-top-headline-apply
>> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (= progn
>> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) = (if (get
>> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda= -filter-apply
>> (get
>> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if<= br> >> > org-agenda-category-filter (progn (org-agenda-filter-apply >> > org-agenda-category-filter 'category))) (if (get
>> > 'org-agenda-category-filter :preset-filter) (progn
>> (org-agenda-filter-apply
>> > (get 'org-agenda-category-filter :preset-filter) 'cat= egory))) (if
>> > org-agenda-regexp-filter (progn (org-agenda-filter-apply
>> > org-agenda-regexp-filter 'regexp))) (if (get 'org-age= nda-regexp-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) = (if
>> > org-agenda-effort-filter (progn (org-agenda-filter-apply
>> > org-agenda-effort-filter 'effort))) (if (get 'org-age= nda-effort-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-effort-filter :preset-filter) 'effort))) = (add-hook
>> > 'kill-buffer-hook 'org-agenda-reset-markers 'appe= nd 'local)) (run-hooks
>> > 'org-agenda-finalize-hook))
>> >=C2=A0 =C2=A0(if org-agenda-multi nil (let ((inhibit-read-only= t)) (save-excursion
>> > (goto-char (point-min)) (save-excursion (while (org-activate-= links
>> > (point-max)) (goto-char (match-end 0)))) (if (eq org-agenda-r= emove-tags
>> t)
>> > nil (org-agenda-align-tags)) (if org-agenda-with-colors nil >> > (remove-text-properties (point-min) (point-max) '(face ni= l))) (if (and
>> > (boundp 'org-overriding-columns-format) org-overriding-co= lumns-format)
>> > (progn (set (make-local-variable 'org-local-columns-forma= t)
>> > org-overriding-columns-format))) (if org-agenda-view-columns-= initially
>> > (progn (org-agenda-columns))) (if org-agenda-fontify-prioriti= es (progn
>> > (org-agenda-fontify-priorities))) (if (and org-agenda-dim-blo= cked-tasks
>> > org-blocker-hook) (progn (org-agenda-dim-blocked-tasks)))
>> > (org-agenda-mark-clocking-task) (if org-agenda-entry-text-mod= e (progn
>> > (org-agenda-entry-text-hide) (org-agenda-entry-text-show))) (= if (and
>> > (featurep 'org-habit) (save-excursion (next-single-proper= ty-change
>> > (point-min) 'org-habit-p))) (progn
>> (org-habit-insert-consistency-graphs)))
>> > (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) = (if (or (eq
>> > org-agenda-show-inherited-tags 'always) (and (listp
>> > org-agenda-show-inherited-tags) (memq org-agenda-type
>> > org-agenda-show-inherited-tags)) (and (eq org-agenda-show-inh= erited-tags
>> t)
>> > (or (eq org-agenda-use-tag-inheritance t) (and ... ...)))) ni= l (let (mrk)
>> > (save-excursion (goto-char (point-min)) (while (equal ... 0) = (if ...
>> > ...))))) (setq org-agenda-represented-tags nil
>> > org-agenda-represented-categories nil) (if org-agenda-top-hea= dline-filter
>> > (progn (org-agenda-filter-top-headline-apply
>> > org-agenda-top-headline-filter))) (if org-agenda-tag-filter (= progn
>> > (org-agenda-filter-apply org-agenda-tag-filter 'tag t))) = (if (get
>> > 'org-agenda-tag-filter :preset-filter) (progn (org-agenda= -filter-apply
>> (get
>> > 'org-agenda-tag-filter :preset-filter) 'tag t))) (if<= br> >> > org-agenda-category-filter (progn (org-agenda-filter-apply >> > org-agenda-category-filter 'category))) (if (get
>> > 'org-agenda-category-filter :preset-filter) (progn
>> (org-agenda-filter-apply
>> > (get 'org-agenda-category-filter :preset-filter) 'cat= egory))) (if
>> > org-agenda-regexp-filter (progn (org-agenda-filter-apply
>> > org-agenda-regexp-filter 'regexp))) (if (get 'org-age= nda-regexp-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-regexp-filter :preset-filter) 'regexp))) = (if
>> > org-agenda-effort-filter (progn (org-agenda-filter-apply
>> > org-agenda-effort-filter 'effort))) (if (get 'org-age= nda-effort-filter
>> > :preset-filter) (progn (org-agenda-filter-apply (get
>> > 'org-agenda-effort-filter :preset-filter) 'effort))) = (add-hook
>> > 'kill-buffer-hook 'org-agenda-reset-markers 'appe= nd 'local)) (run-hooks
>> > 'org-agenda-finalize-hook)))
>> >=C2=A0 =C2=A0org-agenda-finalize()
>> >=C2=A0 =C2=A0(let* ((span (org-agenda-ndays-to-span (or span o= rg-agenda-span)))
>> (today
>> > (org-today)) (sd (or start-day today)) (ndays (org-agenda-spa= n-to-ndays
>> > span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) = (eq ndays
>> 14))
>> > org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil= 'ifmode))
>> > (files thefiles) (start (if (or (null org-agenda-start-on-wee= kday) (<
>> ndays
>> > 7)) sd (let* ((nt ...) (n1 org-agenda-start-on-weekday) (d ..= .)) (- sd (+
>> > ... d))))) (day-numbers (list start)) (day-cnt 0) (inhibit-re= display (not
>> > debug-on-error)) (org-agenda-show-log-scoped org-agenda-show-= log) s e rtn
>> > rtnall file date d start-pos end-pos todayp clocktable-start<= br> >> clocktable-end
>> > filter) (setq org-agenda-redo-command (list 'org-agenda-l= ist (list 'quote
>> > arg) start-day (list 'quote span) with-hour)) (let ((--do= times-limit--
>> (1-
>> > ndays)) (n 0)) (while (< n --dotimes-limit--) (setq day-nu= mbers (cons (1+
>> > (car day-numbers)) day-numbers)) (setq n (1+ n)))) (setq day-= numbers
>> > (nreverse day-numbers)) (setq clocktable-start (car day-numbe= rs)
>> > clocktable-end (1+ (or (org-last day-numbers) 0))) (set
>> > (make-local-variable 'org-starting-day) (car day-numbers)= ) (set
>> > (make-local-variable 'org-arg-loc) arg) (set (make-local-= variable
>> > 'org-agenda-current-span) (org-agenda-ndays-to-span span)= ) (if
>> > org-agenda-compact-blocks nil (let* ((d1 (car day-numbers)) (= d2 (org-last
>> > day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 (org-days-to= -iso-week
>> > d2))) (setq s (point)) (cond ((not org-agenda-overriding-head= er) (insert
>> > (concat ... "-agenda" ... ":\n"))) ((equa= l org-agenda-overriding-header
>> "")
>> > nil) ((stringp org-agenda-overriding-header) (insert (propert= ize
>> > org-agenda-overriding-header ... ...) "\n")) (t (us= er-error "Invalid
>> value
>> > for `org-agenda-overriding-hea..." org-agenda-overriding= -header)))) (if
>> (>
>> > (point) s) (progn (add-text-properties s (1- (point)) (list &= #39;face
>> > 'org-agenda-structure 'org-date-line t)) (org-agenda-= mark-header-line
>> s))))
>> > (while (setq d (car-safe (prog1 day-numbers (setq day-numbers= (cdr
>> > day-numbers))))) (setq date (calendar-gregorian-from-absolute= d) s
>> (point))
>> > (if (or (setq todayp (=3D d today)) (and (not start-pos) (=3D= d sd))) (setq
>> > start-pos (point)) (if (and start-pos (not end-pos)) (progn (= setq end-pos
>> > (point))))) (setq files thefiles rtnall nil) (while (setq fil= e (car-safe
>> > (prog1 files (setq files ...)))) (catch 'nextfile (org-ch= eck-agenda-file
>> > file) (let ((org-agenda-entry-types org-agenda-entry-types)) = (if (member
>> > :deadline* org-agenda-entry-types) (progn ...)) (if (member := scheduled*
>> > org-agenda-entry-types) (progn ...)) (if with-hour (progn ...= ...)) (if
>> > org-agenda-include-deadlines nil (setq org-agenda-entry-types= ...)) (cond
>> > (... ...) (org-agenda-show-log-scoped ...) (t ...))) (setq rt= nall (append
>> > rtnall rtn)))) (if org-agenda-include-diary (progn (let
>> > ((org-agenda-search-headline-for-time t)) (require 'diary= -lib) (setq rtn
>> > (org-get-entries-from-diary date)) (setq rtnall (append rtnal= l rtn)))))
>> (if
>> > (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1= + day-cnt))
>> > (insert (if (stringp org-agenda-format-date) (format-time-str= ing
>> > org-agenda-format-date ...) (funcall org-agenda-format-date d= ate)) "\n")
>> > (put-text-property s (1- (point)) 'face (org-agenda-get-d= ay-face date))
>> > (put-text-property s (1- (point)) 'org-date-line t) (put-= text-property s
>> > (1- (point)) 'org-agenda-date-header t) (put-text-propert= y s (1- (point))
>> > 'org-day-cnt day-cnt) (if todayp (progn (put-text-propert= y s ... ... t)))
>> > (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays tod= ayp)) (if
>> > rtnall (progn (insert ... "\n"))) (put-text-propert= y s (1- (point)) 'day
>> d)
>> > (put-text-property s (1- (point)) 'org-day-cnt day-cnt)))= ) (if (and
>> > org-agenda-clockreport-mode clocktable-start) (progn (let
>> > ((org-agenda-files (org-agenda-files nil ...)) (p (copy-seque= nce
>> > org-agenda-clockreport-parameter-plist)) tbl) (setq p (org-pl= ist-delete p
>> > :block)) (setq p (plist-put p :tstart clocktable-start)) (set= q p
>> (plist-put
>> > p :tend clocktable-end)) (setq p (plist-put p :scope 'age= nda)) (setq tbl
>> > (apply 'org-clock-get-clocktable p)) (insert tbl)))) (got= o-char
>> > (point-min)) (or org-agenda-multi (org-agenda-fit-window-to-b= uffer)) (if
>> > (or (not (get-buffer-window org-agenda-buffer-name)) (and
>> > (pos-visible-in-window-p (point-min)) (pos-visible-in-window-= p
>> > (point-max)))) nil (goto-char (1- (point-max))) (recenter -1)= (if (not
>> > (pos-visible-in-window-p (or start-pos 1))) (progn (goto-char= (or
>> start-pos
>> > 1)) (recenter 1)))) (goto-char (or start-pos 1)) (add-text-pr= operties
>> > (point-min) (point-max) (list 'org-agenda-type 'agend= a 'org-last-args
>> (list
>> > arg start-day span) 'org-redo-cmd org-agenda-redo-command= 'org-series-cmd
>> > org-cmd)) (if (eq org-agenda-show-log-scoped 'clockcheck)= (progn
>> > (org-agenda-show-clocking-issues))) (org-agenda-finalize) (se= tq
>> > buffer-read-only t) (message ""))
>> >=C2=A0 =C2=A0(catch 'exit (setq org-agenda-buffer-name (or=
>> org-agenda-buffer-tmp-name
>> > (and org-agenda-doing-sticky-redo org-agenda-buffer-name) (if=
>> > org-agenda-sticky (progn (cond (... ...) (org-keys ...) (t &q= uot;*Org
>> > Agenda(a)*")))) "*Org Agenda*")) (org-agenda-p= repare "Day/Week") (setq
>> > start-day (or start-day org-agenda-start-day)) (if (stringp s= tart-day)
>> > (progn (setq start-day (time-to-days (org-read-date nil t sta= rt-day)))))
>> > (org-compile-prefix-format 'agenda) (org-set-sorting-stra= tegy 'agenda)
>> > (let* ((span (org-agenda-ndays-to-span (or span org-agenda-sp= an))) (today
>> > (org-today)) (sd (or start-day today)) (ndays (org-agenda-spa= n-to-ndays
>> > span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) = (eq ndays
>> 14))
>> > org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil= 'ifmode))
>> > (files thefiles) (start (if (or (null org-agenda-start-on-wee= kday) (<
>> ndays
>> > 7)) sd (let* (... ... ...) (- sd ...)))) (day-numbers (list s= tart))
>> > (day-cnt 0) (inhibit-redisplay (not debug-on-error))
>> > (org-agenda-show-log-scoped org-agenda-show-log) s e rtn rtna= ll file
>> date d
>> > start-pos end-pos todayp clocktable-start clocktable-end filt= er) (setq
>> > org-agenda-redo-command (list 'org-agenda-list (list '= ;quote arg)
>> start-day
>> > (list 'quote span) with-hour)) (let ((--dotimes-limit-- (= 1- ndays)) (n
>> 0))
>> > (while (< n --dotimes-limit--) (setq day-numbers (cons (1+= ...)
>> > day-numbers)) (setq n (1+ n)))) (setq day-numbers (nreverse d= ay-numbers))
>> > (setq clocktable-start (car day-numbers) clocktable-end (1+ (= or (org-last
>> > day-numbers) 0))) (set (make-local-variable 'org-starting= -day) (car
>> > day-numbers)) (set (make-local-variable 'org-arg-loc) arg= ) (set
>> > (make-local-variable 'org-agenda-current-span) (org-agend= a-ndays-to-span
>> > span)) (if org-agenda-compact-blocks nil (let* ((d1 (car day-= numbers))
>> (d2
>> > (org-last day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 >> > (org-days-to-iso-week d2))) (setq s (point)) (cond ((not
>> > org-agenda-overriding-header) (insert ...)) ((equal
>> > org-agenda-overriding-header "") nil) ((stringp
>> > org-agenda-overriding-header) (insert ... "\n")) (t= (user-error "Invalid
>> > value for `org-agenda-overriding-hea..." org-agenda-over= riding-header))))
>> > (if (> (point) s) (progn (add-text-properties s (1- ...) (= list ... ...
>> ...
>> > t)) (org-agenda-mark-header-line s)))) (while (setq d (car-sa= fe (prog1
>> > day-numbers (setq day-numbers ...)))) (setq date
>> > (calendar-gregorian-from-absolute d) s (point)) (if (or (setq= todayp (=3D d
>> > today)) (and (not start-pos) (=3D d sd))) (setq start-pos (po= int)) (if (and
>> > start-pos (not end-pos)) (progn (setq end-pos ...)))) (setq f= iles
>> thefiles
>> > rtnall nil) (while (setq file (car-safe (prog1 files ...))) (= catch
>> > 'nextfile (org-check-agenda-file file) (let (...) (if ...= ...) (if ...
>> ...)
>> > (if with-hour ...) (if org-agenda-include-deadlines nil ...) = (cond ...
>> ...
>> > ...)) (setq rtnall (append rtnall rtn)))) (if org-agenda-incl= ude-diary
>> > (progn (let (...) (require ...) (setq rtn ...) (setq rtnall .= ..)))) (if
>> (or
>> > rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ da= y-cnt))
>> > (insert (if ... ... ...) "\n") (put-text-property s= (1- ...) 'face
>> > (org-agenda-get-day-face date)) (put-text-property s (1- ...)=
>> > 'org-date-line t) (put-text-property s (1- ...) 'org-= agenda-date-header
>> t)
>> > (put-text-property s (1- ...) 'org-day-cnt day-cnt) (if t= odayp (progn
>> ...))
>> > (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays tod= ayp)) (if
>> > rtnall (progn ...)) (put-text-property s (1- ...) 'day d)=
>> > (put-text-property s (1- ...) 'org-day-cnt day-cnt)))) (i= f (and
>> > org-agenda-clockreport-mode clocktable-start) (progn (let
>> > ((org-agenda-files ...) (p ...) tbl) (setq p (org-plist-delet= e p :block))
>> > (setq p (plist-put p :tstart clocktable-start)) (setq p (plis= t-put p
>> :tend
>> > clocktable-end)) (setq p (plist-put p :scope ...)) (setq tbl = (apply ...
>> p))
>> > (insert tbl)))) (goto-char (point-min)) (or org-agenda-multi<= br> >> > (org-agenda-fit-window-to-buffer)) (if (or (not (get-buffer-w= indow
>> > org-agenda-buffer-name)) (and (pos-visible-in-window-p (point= -min))
>> > (pos-visible-in-window-p (point-max)))) nil (goto-char (1- (p= oint-max)))
>> > (recenter -1) (if (not (pos-visible-in-window-p (or start-pos= 1))) (progn
>> > (goto-char (or start-pos 1)) (recenter 1)))) (goto-char (or s= tart-pos 1))
>> > (add-text-properties (point-min) (point-max) (list 'org-a= genda-type
>> 'agenda
>> > 'org-last-args (list arg start-day span) 'org-redo-cm= d
>> > org-agenda-redo-command 'org-series-cmd org-cmd)) (if (eq=
>> > org-agenda-show-log-scoped 'clockcheck) (progn
>> > (org-agenda-show-clocking-issues))) (org-agenda-finalize) (se= tq
>> > buffer-read-only t) (message "")))
>> >=C2=A0 =C2=A0org-agenda-list(nil nil day nil)
>> >=C2=A0 =C2=A0(let nil (org-agenda-list 'nil nil 'day n= il))
>> >=C2=A0 =C2=A0eval((let nil (org-agenda-list 'nil nil '= day nil)))
>> >=C2=A0 =C2=A0org-let(nil (org-agenda-list 'nil nil 'da= y nil))
>> >=C2=A0 =C2=A0(if series-redo-cmd (eval series-redo-cmd) (org-l= et lprops redo-cmd))
>> >=C2=A0 =C2=A0(let* ((p (or (and (looking-at "\\'"= ;) (1- (point))) (point))) (cpa (if
>> > (eq all t) nil current-prefix-arg)) (org-agenda-doing-sticky-= redo
>> > org-agenda-sticky) (org-agenda-sticky nil) (org-agenda-buffer= -name (or
>> > org-agenda-this-buffer-name org-agenda-buffer-name))
>> (org-agenda-keep-modes
>> > t) (tag-filter org-agenda-tag-filter) (tag-preset (get
>> > 'org-agenda-tag-filter :preset-filter)) (top-hl-filter >> > org-agenda-top-headline-filter) (cat-filter org-agenda-catego= ry-filter)
>> > (cat-preset (get 'org-agenda-category-filter :preset-filt= er)) (re-filter
>> > org-agenda-regexp-filter) (re-preset (get 'org-agenda-reg= exp-filter
>> > :preset-filter)) (effort-filter org-agenda-effort-filter) (ef= fort-preset
>> > (get 'org-agenda-effort-filter :preset-filter))
>> > (org-agenda-tag-filter-while-redo (or tag-filter tag-preset))= (cols
>> > org-agenda-columns-active) (line (org-current-line)) (window-= line (- line
>> > (org-current-line (window-start)))) (lprops (get 'org-age= nda-redo-command
>> > 'org-lprops)) (redo-cmd (get-text-property p 'org-red= o-cmd)) (last-args
>> > (get-text-property p 'org-last-args)) (org-agenda-overrid= ing-cmd
>> > (get-text-property p 'org-series-cmd))
>> (org-agenda-overriding-cmd-arguments
>> > (if (eq all t) nil (cond ((listp last-args) (cons (or cpa ...= ) (cdr
>> > last-args))) ((stringp last-args) last-args)))) (series-redo-= cmd
>> > (get-text-property p 'org-series-redo-cmd))) (put 'or= g-agenda-tag-filter
>> > :preset-filter nil) (put 'org-agenda-category-filter :pre= set-filter nil)
>> > (put 'org-agenda-regexp-filter :preset-filter nil) (put >> > 'org-agenda-effort-filter :preset-filter nil) (and cols >> (org-columns-quit))
>> > (message "Rebuilding agenda buffer...") (if series-= redo-cmd (eval
>> > series-redo-cmd) (org-let lprops redo-cmd)) (setq org-agenda-= undo-list
>> nil
>> > org-agenda-pending-undo-list nil org-agenda-tag-filter tag-fi= lter
>> > org-agenda-category-filter cat-filter org-agenda-regexp-filte= r re-filter
>> > org-agenda-effort-filter effort-filter org-agenda-top-headlin= e-filter
>> > top-hl-filter) (message "Rebuilding agenda buffer...done= ") (put
>> > 'org-agenda-tag-filter :preset-filter tag-preset) (put >> > 'org-agenda-category-filter :preset-filter cat-preset) (p= ut
>> > 'org-agenda-regexp-filter :preset-filter re-preset) (put<= br> >> > 'org-agenda-effort-filter :preset-filter effort-preset) (= let ((tag (or
>> > tag-filter tag-preset)) (cat (or cat-filter cat-preset)) (eff= ort (or
>> > effort-filter effort-preset)) (re (or re-filter re-preset))) = (if tag
>> (progn
>> > (org-agenda-filter-apply tag 'tag t))) (if cat (progn
>> > (org-agenda-filter-apply cat 'category))) (if effort (pro= gn
>> > (org-agenda-filter-apply effort 'effort))) (if re (progn<= br> >> > (org-agenda-filter-apply re 'regexp)))) (and top-hl-filte= r
>> > (org-agenda-filter-top-headline-apply top-hl-filter)) (and co= ls
>> > (called-interactively-p 'any) (org-agenda-columns)) (org-= goto-line line)
>> > (recenter window-line))
>> >=C2=A0 =C2=A0org-agenda-redo(t)
>> >=C2=A0 =C2=A0(if exhaustive (let ((--dolist-tail-- (buffer-lis= t)) buffer) (while
>> > --dolist-tail-- (setq buffer (car --dolist-tail--)) (save-cur= rent-buffer
>> > (set-buffer buffer) (if (derived-mode-p 'org-agenda-mode)= (progn
>> > (org-agenda-redo t)))) (setq --dolist-tail-- (cdr --dolist-ta= il--))))
>> > (org-agenda-redo t))
>> >=C2=A0 =C2=A0org-agenda-redo-all(nil)
>> >=C2=A0 =C2=A0funcall-interactively(org-agenda-redo-all nil) >> >=C2=A0 =C2=A0call-interactively(org-agenda-redo-all nil nil) >> >=C2=A0 =C2=A0command-execute(org-agenda-redo-all)
>> > ```
>> >
>> > [stardiviner]=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<Hac= k this world!>=C2=A0 =C2=A0 =C2=A0 GPG key ID: 47C32433
>> > IRC(freeenode): stardiviner=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Twitter:=C2=A0 @numbchild
>> > Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB99 B8C4 = B8E5 47C3 2433
>> > Blog: http://stardiviner.github.io/
>> >
>> >
>> > On Fri, Aug 14, 2020 at 1:15 PM Ihor Radchenko <yantar92@gmail.com> >> wrote:
>> >
>> >> > I want to get around this problem. So need to know h= ow to detect
>> >> currently
>> >> > in logbook drawer or something else which used to re= cord clocking
>> note,
>> >> > `org-add-note`, etc.
>> >>
>> >> You may try to use `org-logbook-drawer-re'.
>> >>
>> >> > When I toggle org-log-mode and related options in or= g-agenda buffer. I
>> >> > found my org-link-beautify will caused long time sus= pend and no stop.
>> >> After
>> >> > debug, I found org-link-beautify text-property cause= d this problem.
>> >>
>> >> Could you provide more details how your text property is = causing the
>> >> problem in org-agenda? Which function in agenda is slow?<= br> >> >>
>> >> Best,
>> >> Ihor
>> >>
>> >>
>> >> "numbchild@gmail.com" <numbchild@gmail.com> writes:
>> >>
>> >> > I have a org-mode extension:
>> >> >
>> >>
>> https:= //github.com/stardiviner/org-link-beautify/blob/master/org-link-beautify.el= #L71
>> >> >
>> >> > It will beautify links with text-properties.
>> >> >
>> >> > When I toggle org-log-mode and related options in or= g-agenda buffer. I
>> >> > found my org-link-beautify will caused long time sus= pend and no stop.
>> >> After
>> >> > debug, I found org-link-beautify text-property cause= d this problem.
>> >> >
>> >> > I want to get around this problem. So need to know h= ow to detect
>> >> currently
>> >> > in logbook drawer or something else which used to re= cord clocking
>> note,
>> >> > `org-add-note`, etc.
>> >> >
>> >> > Or maybe org-agenda upstream can do something to wor= k around this
>> >> > text-properties issue?
>> >> >
>> >> > [stardiviner]=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0<Hack this world!>=C2=A0 =C2=A0 =C2=A0 GPG key ID: 47C32433
>> >> > IRC(freeenode): stardiviner=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Twitter:=C2=A0 @numbchi= ld
>> >> > Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 C= B99 B8C4 B8E5 47C3 2433
>> >> > Blog: http://stardiviner.github.io/
>> >>
>>
--0000000000009c7c8705ad07fe67--