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 IBqKIqEQOF+bDwAA0tVLHw (envelope-from ) for ; Sat, 15 Aug 2020 16:43:13 +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 2C13HqEQOF8RIgAAB5/wlQ (envelope-from ) for ; Sat, 15 Aug 2020 16:43:13 +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 AC143940654 for ; Sat, 15 Aug 2020 16:43:12 +0000 (UTC) Received: from localhost ([::1]:36088 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k6zGx-0006UU-8c for larch@yhetil.org; Sat, 15 Aug 2020 12:43:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36692) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k6zGQ-0006UI-Jr for emacs-orgmode@gnu.org; Sat, 15 Aug 2020 12:42:38 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:36918) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k6zGM-0006s4-SM for emacs-orgmode@gnu.org; Sat, 15 Aug 2020 12:42:38 -0400 Received: by mail-pl1-x62c.google.com with SMTP id v5so3334777plo.4 for ; Sat, 15 Aug 2020 09:42:34 -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=UUOVoVBBfskN2x35H0JO9HePgBFIcApMr+r4qBj7aTI=; b=aabdzvbXG1/HrthbpHFtKvdpjIq6yAI6F6VuxvN/CMhHoSBDlqky2+H+5pZYr3Sl0E 7GpKjj7D5iBk28NyTPaZ7yqvNAGMW2F5uH7FbgIS9dg/8FBK6ZOoIAc9od0foQY1wH5n ESQxU3rL8xIpy1qI6tfxuc800uR3AO71Nkz3haCCbBHIeF6YgHzHFwrzCwX46k73FVrk YEnqNPsUg/fC1GzwRLXrh7PNqmeESXlKrxhhtV5eu3EcCFAAMnxee6fW7nyQCWhPbj/o q6nHTVxxSJohjiD447DCk3sMyox/JGkZ9i59RHfArYu86x6rz9noqdOfaKmYW5BsXGyp 1aRw== 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=UUOVoVBBfskN2x35H0JO9HePgBFIcApMr+r4qBj7aTI=; b=JMcfOSdWiGJTjF1LA8xL9XPyJveJxJzspVh0POA9qJOPN/igZn2+/2Ep4Iqdk88jIz Mnblx6YT3opHrFz/jWwE1r2x4qLtnXyrFiqR54wS63Jw+mSzi65BIDcA0DI/jaGcOWyc WWsOAFHdXVE7rzu3JcZYnp2eCzg2CJaPyPELiLwWTwwbCI6GpGD57R9mIxf4a/yyCQu2 jgGY0QAxurcvX74NU4Uszk+hhGbi+aPCRpDbzGnGodBlhXnH/eRa/6T8Y0KQeHBk1Q/7 IZfggU+0axL4xXjqsJyAOBNS9/gTbsjtZ8BGNhed1s2TVJcEcKkzjZq2GM4/nAFK4A9W aRfw== X-Gm-Message-State: AOAM531N2I/6eigAJQF9ZI+M9hT+gKRL3x9nFDJI84ge9htrYvKICB04 7UNpIl2zoyXoqU/HeJT+0Jx4F2BAS8idz5TUFSYVx4/f0mEn X-Google-Smtp-Source: ABdhPJwgLL94YiDEEYumJtZlLHlDs2z0/RhRtCK29Tzqvg+3hBB7UJsi1xYGkaPIwGTdf2K6FXyKC72ZhTBb7pNWxmU= X-Received: by 2002:a67:f941:: with SMTP id u1mr3510648vsq.128.1597468374904; Fri, 14 Aug 2020 22:12:54 -0700 (PDT) MIME-Version: 1.0 References: <877du1olkf.fsf@localhost> In-Reply-To: <877du1olkf.fsf@localhost> From: "numbchild@gmail.com" Date: Sat, 15 Aug 2020 13:12:48 +0800 Message-ID: Subject: Re: How to detect current in logbook drawer? To: Ihor Radchenko Content-Type: multipart/alternative; boundary="00000000000006b2ff05ace39795" Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=numbchild@gmail.com; helo=mail-pl1-x62c.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: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_06_12=1.543, 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 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=aabdzvbX; 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: 1.29 X-TUID: LyOZmEWpQEuI --00000000000006b2ff05ace39795 Content-Type: text/plain; charset="UTF-8" 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/ > --00000000000006b2ff05ace39795 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
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)
=C2=A0 re-search-forward("\= \(\\[\\[\\(\\(?:[^][\\]\\|\\\\\\(?:\\\\\\\\\\)*[][]\\|\\\\+[^][]\\)+...&quo= t; 17651 t)
=C2=A0 (while (re-search-forward org-link-any-re limit t) (l= et* ((start (match-beginning 0)) (end (match-end 0)) (visible-start (or (ma= tch-beginning 3) (match-beginning 2))) (visible-end (or (match-end 3) (matc= h-end 2))) (style (cond ((eq 60 (char-after start)) 'angle) ((eq 91 (ch= ar-after ...)) 'bracket) (t 'plain)))) (if (and (memq style org-hig= hlight-links) (not (string-match-p org-element-paragraph-separate (match-st= ring 0))) (not (and (eq style 'plain) (let (...) (if ... ... ...))))) (= progn (let* ((link-object (save-excursion ... ...)) (link (org-element-prop= erty :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-p= roperties start end properties) (remove-text-properties start end '...)= (let (...) (add-text-properties start visible-start hidden) (add-text-prop= erties visible-start visible-end properties) (add-text-properties visible-e= nd end hidden) (org-rear-nonsticky-at visible-start) (org-rear-nonsticky-at= visible-end))) (let ((f ...)) (if (functionp f) (progn ...))) (throw :exit= t))))))
=C2=A0 (catch :exit (while (re-search-forward org-link-any-re l= imit t) (let* ((start (match-beginning 0)) (end (match-end 0)) (visible-sta= rt (or (match-beginning 3) (match-beginning 2))) (visible-end (or (match-en= d 3) (match-end 2))) (style (cond ((eq 60 ...) 'angle) ((eq 91 ...) = 9;bracket) (t 'plain)))) (if (and (memq style org-highlight-links) (not= (string-match-p org-element-paragraph-separate (match-string 0))) (not (an= d (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 s= tart end properties) (remove-text-properties start end ...) (let ... ... ..= . ... ... ...)) (let (...) (if ... ...)) (throw :exit t)))))) nil)
=C2= =A0 org-activate-links(17651)
=C2=A0 (while (org-activate-links (point-m= ax)) (goto-char (match-end 0)))
=C2=A0 (save-excursion (while (org-activ= ate-links (point-max)) (goto-char (match-end 0))))
=C2=A0 (save-excursio= n (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 (o= rg-agenda-align-tags)) (if org-agenda-with-colors nil (remove-text-properti= es (point-min) (point-max) '(face nil))) (if (and (boundp 'org-over= riding-columns-format) org-overriding-columns-format) (progn (set (make-loc= al-variable 'org-local-columns-format) org-overriding-columns-format)))= (if org-agenda-view-columns-initially (progn (org-agenda-columns))) (if or= g-agenda-fontify-priorities (progn (org-agenda-fontify-priorities))) (if (a= nd org-agenda-dim-blocked-tasks org-blocker-hook) (progn (org-agenda-dim-bl= ocked-tasks))) (org-agenda-mark-clocking-task) (if org-agenda-entry-text-mo= de (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 (e= q org-agenda-show-inherited-tags 'always) (and (listp org-agenda-show-i= nherited-tags) (memq org-agenda-type org-agenda-show-inherited-tags)) (and = (eq org-agenda-show-inherited-tags t) (or (eq org-agenda-use-tag-inheritanc= e 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-p= roperty ... ...)) (progn (put-text-property ... ... ... ...))))))) (setq or= g-agenda-represented-tags nil org-agenda-represented-categories nil) (if or= g-agenda-top-headline-filter (progn (org-agenda-filter-top-headline-apply o= rg-agenda-top-headline-filter))) (if org-agenda-tag-filter (progn (org-agen= da-filter-apply org-agenda-tag-filter 'tag t))) (if (get 'org-agend= a-tag-filter :preset-filter) (progn (org-agenda-filter-apply (get 'org-= agenda-tag-filter :preset-filter) 'tag t))) (if org-agenda-category-fil= ter (progn (org-agenda-filter-apply org-agenda-category-filter 'categor= y))) (if (get 'org-agenda-category-filter :preset-filter) (progn (org-a= genda-filter-apply (get 'org-agenda-category-filter :preset-filter) = 9;category))) (if org-agenda-regexp-filter (progn (org-agenda-filter-apply = org-agenda-regexp-filter 'regexp))) (if (get 'org-agenda-regexp-fil= ter :preset-filter) (progn (org-agenda-filter-apply (get 'org-agenda-re= gexp-filter :preset-filter) 'regexp))) (if org-agenda-effort-filter (pr= ogn (org-agenda-filter-apply org-agenda-effort-filter 'effort))) (if (g= et 'org-agenda-effort-filter :preset-filter) (progn (org-agenda-filter-= apply (get 'org-agenda-effort-filter :preset-filter) 'effort))) (ad= d-hook 'kill-buffer-hook 'org-agenda-reset-markers 'append '= ;local))
=C2=A0 (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-ali= gn-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-variable &= #39;org-local-columns-format) org-overriding-columns-format))) (if org-agen= da-view-columns-initially (progn (org-agenda-columns))) (if org-agenda-font= ify-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 (or= g-agenda-entry-text-hide) (org-agenda-entry-text-show))) (if (and (featurep= 'org-habit) (save-excursion (next-single-property-change (point-min) &= #39;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-agend= a-show-inherited-tags t) (or (eq org-agenda-use-tag-inheritance t) (and (li= stp org-agenda-use-tag-inheritance) (not ...))))) nil (let (mrk) (save-excu= rsion (goto-char (point-min)) (while (equal (forward-line) 0) (if (setq mrk= ...) (progn ...)))))) (setq org-agenda-represented-tags nil org-agenda-rep= resented-categories nil) (if org-agenda-top-headline-filter (progn (org-age= nda-filter-top-headline-apply org-agenda-top-headline-filter))) (if org-age= nda-tag-filter (progn (org-agenda-filter-apply org-agenda-tag-filter 't= ag t))) (if (get 'org-agenda-tag-filter :preset-filter) (progn (org-age= nda-filter-apply (get 'org-agenda-tag-filter :preset-filter) 'tag t= ))) (if org-agenda-category-filter (progn (org-agenda-filter-apply org-agen= da-category-filter 'category))) (if (get 'org-agenda-category-filte= r :preset-filter) (progn (org-agenda-filter-apply (get 'org-agenda-cate= gory-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-filte= r-apply (get 'org-agenda-regexp-filter :preset-filter) 'regexp))) (= if org-agenda-effort-filter (progn (org-agenda-filter-apply org-agenda-effo= rt-filter 'effort))) (if (get 'org-agenda-effort-filter :preset-fil= ter) (progn (org-agenda-filter-apply (get 'org-agenda-effort-filter :pr= eset-filter) 'effort))) (add-hook 'kill-buffer-hook 'org-agenda= -reset-markers 'append 'local)) (run-hooks 'org-agenda-finalize= -hook))
=C2=A0 (if org-agenda-multi nil (let ((inhibit-read-only t)) (sa= ve-excursion (goto-char (point-min)) (save-excursion (while (org-activate-l= inks (point-max)) (goto-char (match-end 0)))) (if (eq org-agenda-remove-tag= s t) nil (org-agenda-align-tags)) (if org-agenda-with-colors nil (remove-te= xt-properties (point-min) (point-max) '(face nil))) (if (and (boundp &#= 39;org-overriding-columns-format) org-overriding-columns-format) (progn (se= t (make-local-variable 'org-local-columns-format) org-overriding-column= s-format))) (if org-agenda-view-columns-initially (progn (org-agenda-column= s))) (if org-agenda-fontify-priorities (progn (org-agenda-fontify-prioritie= s))) (if (and org-agenda-dim-blocked-tasks org-blocker-hook) (progn (org-ag= enda-dim-blocked-tasks))) (org-agenda-mark-clocking-task) (if org-agenda-en= try-text-mode (progn (org-agenda-entry-text-hide) (org-agenda-entry-text-sh= ow))) (if (and (featurep 'org-habit) (save-excursion (next-single-prope= rty-change (point-min) 'org-habit-p))) (progn (org-habit-insert-consist= ency-graphs))) (setq org-agenda-type (org-get-at-bol 'org-agenda-type))= (if (or (eq org-agenda-show-inherited-tags 'always) (and (listp org-ag= enda-show-inherited-tags) (memq org-agenda-type org-agenda-show-inherited-t= ags)) (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-represe= nted-tags nil org-agenda-represented-categories nil) (if org-agenda-top-hea= dline-filter (progn (org-agenda-filter-top-headline-apply org-agenda-top-he= adline-filter))) (if org-agenda-tag-filter (progn (org-agenda-filter-apply = org-agenda-tag-filter 'tag t))) (if (get 'org-agenda-tag-filter :pr= eset-filter) (progn (org-agenda-filter-apply (get 'org-agenda-tag-filte= r :preset-filter) 'tag t))) (if org-agenda-category-filter (progn (org-= agenda-filter-apply org-agenda-category-filter 'category))) (if (get &#= 39;org-agenda-category-filter :preset-filter) (progn (org-agenda-filter-app= ly (get 'org-agenda-category-filter :preset-filter) 'category))) (i= f org-agenda-regexp-filter (progn (org-agenda-filter-apply org-agenda-regex= p-filter 'regexp))) (if (get 'org-agenda-regexp-filter :preset-filt= er) (progn (org-agenda-filter-apply (get 'org-agenda-regexp-filter :pre= set-filter) 'regexp))) (if org-agenda-effort-filter (progn (org-agenda-= filter-apply org-agenda-effort-filter 'effort))) (if (get 'org-agen= da-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-ho= oks 'org-agenda-finalize-hook)))
=C2=A0 org-agenda-finalize()
=C2= =A0 (let* ((span (org-agenda-ndays-to-span (or span org-agenda-span))) (tod= ay (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 ...)) (- s= d (+ ... 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 r= tn 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 ((--dotim= es-limit-- (1- ndays)) (n 0)) (while (< n --dotimes-limit--) (setq day-n= umbers (cons (1+ (car day-numbers)) day-numbers)) (setq n (1+ n)))) (setq d= ay-numbers (nreverse day-numbers)) (setq clocktable-start (car day-numbers)= clocktable-end (1+ (or (org-last day-numbers) 0))) (set (make-local-variab= le '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-agen= da-overriding-header) (insert (concat ... "-agenda" ... ":\n= "))) ((equal org-agenda-overriding-header "") nil) ((stringp= org-agenda-overriding-header) (insert (propertize org-agenda-overriding-he= ader ... ...) "\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 'o= rg-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-n= umbers))))) (setq date (calendar-gregorian-from-absolute d) s (point)) (if = (or (setq todayp (=3D d today)) (and (not start-pos) (=3D d sd))) (setq sta= rt-pos (point)) (if (and start-pos (not end-pos)) (progn (setq end-pos (poi= nt))))) (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 :deadl= ine* org-agenda-entry-types) (progn ...)) (if (member :scheduled* org-agend= a-entry-types) (progn ...)) (if with-hour (progn ... ...)) (if org-agenda-i= nclude-deadlines nil (setq org-agenda-entry-types ...)) (cond (... ...) (or= g-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 dat= e)) (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-a= genda-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-da= te-header t) (put-text-property s (1- (point)) 'org-day-cnt day-cnt) (i= f todayp (progn (put-text-property s ... ... t))) (setq rtnall (org-agenda-= add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn (insert ... &qu= ot;\n"))) (put-text-property s (1- (point)) 'day d) (put-text-prop= erty s (1- (point)) 'org-day-cnt day-cnt)))) (if (and org-agenda-clockr= eport-mode clocktable-start) (progn (let ((org-agenda-files (org-agenda-fil= es nil ...)) (p (copy-sequence org-agenda-clockreport-parameter-plist)) tbl= ) (setq p (org-plist-delete p :block)) (setq p (plist-put p :tstart clockta= ble-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 (poin= t-max)))) nil (goto-char (1- (point-max))) (recenter -1) (if (not (pos-visi= ble-in-window-p (or start-pos 1))) (progn (goto-char (or start-pos 1)) (rec= enter 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-seri= es-cmd org-cmd)) (if (eq org-agenda-show-log-scoped 'clockcheck) (progn= (org-agenda-show-clocking-issues))) (org-agenda-finalize) (setq buffer-rea= d-only t) (message ""))
=C2=A0 (catch 'exit (setq org-agen= da-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 or= g-agenda-start-day)) (if (stringp start-day) (progn (setq start-day (time-t= o-days (org-read-date nil t start-day))))) (org-compile-prefix-format '= agenda) (org-set-sorting-strategy 'agenda) (let* ((span (org-agenda-nda= ys-to-span (or span org-agenda-span))) (today (org-today)) (sd (or start-da= y today)) (ndays (org-agenda-span-to-ndays span sd)) (org-agenda-start-on-w= eekday (and (or (eq ndays 7) (eq ndays 14)) org-agenda-start-on-weekday)) (= thefiles (org-agenda-files nil 'ifmode)) (files thefiles) (start (if (o= r (null org-agenda-start-on-weekday) (< ndays 7)) sd (let* (... ... ...)= (- sd ...)))) (day-numbers (list start)) (day-cnt 0) (inhibit-redisplay (n= ot debug-on-error)) (org-agenda-show-log-scoped org-agenda-show-log) s e rt= n rtnall file date d start-pos end-pos todayp clocktable-start clocktable-e= nd filter) (setq org-agenda-redo-command (list 'org-agenda-list (list &= #39;quote arg) start-day (list 'quote span) with-hour)) (let ((--dotime= s-limit-- (1- ndays)) (n 0)) (while (< n --dotimes-limit--) (setq day-nu= mbers (cons (1+ ...) day-numbers)) (setq n (1+ n)))) (setq day-numbers (nre= verse day-numbers)) (setq clocktable-start (car day-numbers) clocktable-end= (1+ (or (org-last day-numbers) 0))) (set (make-local-variable 'org-sta= rting-day) (car day-numbers)) (set (make-local-variable 'org-arg-loc) a= rg) (set (make-local-variable 'org-agenda-current-span) (org-agenda-nda= ys-to-span span)) (if org-agenda-compact-blocks nil (let* ((d1 (car day-num= bers)) (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-h= eader) (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-properti= es s (1- ...) (list ... ... ... t)) (org-agenda-mark-header-line s)))) (whi= le (setq d (car-safe (prog1 day-numbers (setq day-numbers ...)))) (setq dat= e (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 ...)))) (setq files thefi= les 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 (pr= ogn (let (...) (require ...) (setq rtn ...) (setq rtnall ...)))) (if (or rt= nall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) (insert = (if ... ... ...) "\n") (put-text-property s (1- ...) 'face (o= rg-agenda-get-day-face date)) (put-text-property s (1- ...) 'org-date-l= ine t) (put-text-property s (1- ...) 'org-agenda-date-header t) (put-te= xt-property s (1- ...) 'org-day-cnt day-cnt) (if todayp (progn ...)) (s= etq 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-mod= e clocktable-start) (progn (let ((org-agenda-files ...) (p ...) tbl) (setq = p (org-plist-delete p :block)) (setq p (plist-put p :tstart clocktable-star= t)) (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-buff= er-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-l= og-scoped 'clockcheck) (progn (org-agenda-show-clocking-issues))) (org-= agenda-finalize) (setq buffer-read-only t) (message "")))
=C2= =A0 org-agenda-list(nil nil day nil)
=C2=A0 (let nil (org-agenda-list &#= 39;nil nil 'day nil))
=C2=A0 eval((let nil (org-agenda-list 'nil= nil 'day nil)))
=C2=A0 org-let(nil (org-agenda-list 'nil nil &#= 39;day nil))
=C2=A0 (if series-redo-cmd (eval series-redo-cmd) (org-let = lprops redo-cmd))
=C2=A0 (let* ((p (or (and (looking-at "\\'&qu= ot;) (1- (point))) (point))) (cpa (if (eq all t) nil current-prefix-arg)) (= org-agenda-doing-sticky-redo org-agenda-sticky) (org-agenda-sticky nil) (or= g-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-ag= enda-effort-filter :preset-filter)) (org-agenda-tag-filter-while-redo (or t= ag-filter tag-preset)) (cols org-agenda-columns-active) (line (org-current-= line)) (window-line (- line (org-current-line (window-start)))) (lprops (ge= t 'org-agenda-redo-command 'org-lprops)) (redo-cmd (get-text-proper= ty p 'org-redo-cmd)) (last-args (get-text-property p 'org-last-args= )) (org-agenda-overriding-cmd (get-text-property p 'org-series-cmd)) (o= rg-agenda-overriding-cmd-arguments (if (eq all t) nil (cond ((listp last-ar= gs) (cons (or cpa ...) (cdr last-args))) ((stringp last-args) last-args))))= (series-redo-cmd (get-text-property p 'org-series-redo-cmd))) (put = 9;org-agenda-tag-filter :preset-filter nil) (put 'org-agenda-category-f= ilter :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 serie= s-redo-cmd (eval series-redo-cmd) (org-let lprops redo-cmd)) (setq org-agen= da-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-f= ilter 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-filt= er :preset-filter re-preset) (put 'org-agenda-effort-filter :preset-fil= ter effort-preset) (let ((tag (or tag-filter tag-preset)) (cat (or cat-filt= er 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-f= ilter-apply re 'regexp)))) (and top-hl-filter (org-agenda-filter-top-he= adline-apply top-hl-filter)) (and cols (called-interactively-p 'any) (o= rg-agenda-columns)) (org-goto-line line) (recenter window-line))
=C2=A0 = org-agenda-redo(t)
=C2=A0 (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-ta= il--)))) (org-agenda-redo t))
=C2=A0 org-agenda-redo-all(nil)
=C2=A0 = funcall-interactively(org-agenda-redo-all nil)
=C2=A0 call-interactively= (org-agenda-redo-all nil nil)
=C2=A0 command-execute(org-agenda-redo-all= )
```

<= div dir=3D"ltr">[stardiviner]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 <Hack 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 CDD= D B9EF 3B36=C2=A0 CB99 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.github.io/
<= /div>


On Fri, Aug 14, 2020 at 1:15 PM Ihor Radch= enko <yantar92@gmail.com> w= rote:
> I wan= t 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@gm= ail.com" <numbchild@gmail.com> writes:

> I have a org-mode extension:
> https://gi= thub.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 curre= ntly
> 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]=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/
--00000000000006b2ff05ace39795--