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 iF1HAGbiOV+2YAAA0tVLHw (envelope-from ) for ; Mon, 17 Aug 2020 01:50:30 +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 0C/NN2XiOV9WYwAAB5/wlQ (envelope-from ) for ; Mon, 17 Aug 2020 01:50:29 +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 DFE429403C5 for ; Mon, 17 Aug 2020 01:50:28 +0000 (UTC) Received: from localhost ([::1]:45820 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k7UI6-0005Fj-FP for larch@yhetil.org; Sun, 16 Aug 2020 21:50:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54256) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k7UHk-0005FJ-4V for emacs-orgmode@gnu.org; Sun, 16 Aug 2020 21:50:04 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]:34879) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k7UHg-0007Ph-WD for emacs-orgmode@gnu.org; Sun, 16 Aug 2020 21:50:03 -0400 Received: by mail-pj1-x102f.google.com with SMTP id t6so6938082pjr.0 for ; Sun, 16 Aug 2020 18:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=5MUJp+Et24kNtcCdZsUKKnl3lLGG54zTPrs2wzoN6dM=; b=bAWJ6fSQHu06/nPsjp23yP2g54yujX7dwTdKPtPtSelHX+3WSO6Q5POGQuFw2WxBVb Cy3aQ3/HtWXPwwtPZ/Kfhj3kvb7phSdGLktFoAHiQIT21eCvfplwTCMnD4kd8PXx7l6k 6lgDZjkbLkmrwkYsny5T/fJ8EUXc6vYU4g/Kf8Lnvf1mxREtWjPG3NHwxYItPCPX5hoC jrU5M794fwmLpVuSlpBW5znva6RYJA0m5NOCZR2sT5FmXtTsXK4ns2EhlTUy9lNHTjm9 PYnGaoCSjJxQEwEYh9vFo8guhvY5HYiFBBQf+oyZvBct3IC78cEIPEvuwGZSDbdeAJfE hXJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=5MUJp+Et24kNtcCdZsUKKnl3lLGG54zTPrs2wzoN6dM=; b=COzkCmAx9lRmHuHNZjBEssF7INMbQnKsHWjpM8/CGYdUwh7XQys7zk5NsOTSZabz8p jDWu0WMNpMnnylJRT253gIet1zjJb04PUmfnG4Dlk84GZYk7TIXyg0IuaBhgODnfU9Di RmV0ZdI/BGx1UfdikJZUXY4NIb/0ixOyh6QKpkF/Nd7Le5pY1lZkJkm8aDGJuxFqhugv JZc8UsXv66kLDIwmXkS7Lqq4D7/1Ko2iV9MxItAiKvFNLThU8qGWiSlcAvvo9JBXrORP x11nPXg7FED7+GeZf0yNXEpFPjyTJSrWEn+dbNqzvQx76ysfjl2J5DVmcz+0fMyfXbS2 WWGw== X-Gm-Message-State: AOAM530PIZzilWlJ4G+swxmsxBWtbn3rAWS3KR9z284/+Jt3bw62x57e Hbghf7OyQFiZz0FFIAF50DU= X-Google-Smtp-Source: ABdhPJzHb35rgYYLsxs12SJPP3HDFVTKsBq/GuFlcNXoKGOY1TO3VSipn1BX12t+LgemF2E1xTQJhA== X-Received: by 2002:a17:90a:b292:: with SMTP id c18mr10669389pjr.207.1597628998738; Sun, 16 Aug 2020 18:49:58 -0700 (PDT) Received: from localhost ([38.75.136.209]) by smtp.gmail.com with ESMTPSA id b20sm16963264pfp.140.2020.08.16.18.49.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2020 18:49:57 -0700 (PDT) From: Ihor Radchenko To: "numbchild@gmail.com" Subject: Re: How to detect current in logbook drawer? In-Reply-To: References: <877du1olkf.fsf@localhost> <87v9hktpko.fsf@localhost> <87zh6vgko2.fsf@localhost> Date: Mon, 17 Aug 2020 09:49:04 +0800 Message-ID: <87o8naghyn.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=yantar92@gmail.com; helo=mail-pj1-x102f.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: -7 X-Spam_score: -0.8 X-Spam_bar: / X-Spam_report: (-0.8 / 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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=no 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=bAWJ6fSQ; 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.21 X-TUID: B4eYEXuhWCOl > 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. Judging from source code of `org-element-context`, it does modify match data. You can probably send a bug (or patch) fixing this. All is needed is to wrap the code into `save-match-data`. For you package, you can simply wrap all the code in `org-link-beautify` into (save-match-data ... ). > 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. Strange. I had no problem with debugging `org-agenda-finalize` on my system. Best, Ihor "numbchild@gmail.com" writes: > 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/ >> >> >> >> >> >>