emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@gmail.com>
To: "numbchild@gmail.com" <numbchild@gmail.com>
Cc: Org-mode <emacs-orgmode@gnu.org>
Subject: Re: How to detect current in logbook drawer?
Date: Sat, 15 Aug 2020 14:01:43 +0800	[thread overview]
Message-ID: <87v9hktpko.fsf@localhost> (raw)
In-Reply-To: <CAL1eYuKgdcOXzsvQaAAg5fUBp6qfKPiJeT5xU78kTcO0gG8_rQ@mail.gmail.com>

>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" <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]           <Hack this world!>      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 <yantar92@gmail.com> 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" <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]           <Hack this world!>      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/
>>


  reply	other threads:[~2020-08-15 15:26 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-14  4:46 How to detect current in logbook drawer? numbchild
2020-08-14  5:14 ` Ihor Radchenko
2020-08-15  5:12   ` numbchild
2020-08-15  6:01     ` Ihor Radchenko [this message]
2020-08-16  3:55       ` numbchild
2020-08-16  6:38         ` Ihor Radchenko
2020-08-17  0:38           ` numbchild
2020-08-17  0:46             ` numbchild
2020-08-17  1:49             ` Ihor Radchenko
2020-08-17  3:13               ` numbchild
2020-08-16  3:57       ` numbchild
2020-08-15  5:34   ` numbchild
2020-08-15  6:06     ` Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v9hktpko.fsf@localhost \
    --to=yantar92@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=numbchild@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).