emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to detect current in logbook drawer?


From: address@hidden
Subject: Re: How to detect current in logbook drawer?
Date: Sun, 16 Aug 2020 11:55:16 +0800

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]           <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 Sat, Aug 15, 2020 at 2:02 PM Ihor Radchenko <yantar92@gmail.com> wrote:
>Here is the backtrace of "toggle-debug-on-quit" when I refresh org-agenda
>but has long time suspend.

That looks unreadable for me. Also, debug on quit may not show the
problematic part depending on your luck.

It would be easier to understand your problem if you provided the
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 via email to

[Prev in Thread] Current Thread [Next in Thread]