From: "numbchild@gmail.com" <numbchild@gmail.com>
To: Ihor Radchenko <yantar92@gmail.com>
Cc: Org-mode <emacs-orgmode@gnu.org>
Subject: Re: How to detect current in logbook drawer?
Date: Mon, 17 Aug 2020 11:13:06 +0800 [thread overview]
Message-ID: <CAL1eYu+_D2ThLg4r-wxhaXt6mspPRW4r-dE8Zr+QVkBkWLAmjg@mail.gmail.com> (raw)
In-Reply-To: <87o8naghyn.fsf@localhost>
[-- Attachment #1: Type: text/plain, Size: 36855 bytes --]
Now I added `save-match-data` in my org-link-beautify. Thanks for tips.
Indeed. I will try this problem later and update here if got any news.
At last, thanks for your helping. Really thanks. :)
[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 Mon, Aug 17, 2020 at 9:50 AM Ihor Radchenko <yantar92@gmail.com> wrote:
> > I reviewed my org-link-beautify (
> > https://github.com/stardiviner/org-link-beautify) source code, I have
> not
> > use any regexp matching. I guess the function
> > `org-link-beautify--get-element` invoked `(org-element-context)` caused
> > this problem or other similar places. But I use `debug-on-entry` on
> > `org-element-context`. Still have not got stoppoint backtrace.
>
> Judging from source code of `org-element-context`, it does modify match
> data. You can probably send a bug (or patch) fixing this. All is needed
> is to wrap the code into `save-match-data`.
>
> For you package, you can simply wrap all the code in `org-link-beautify`
> into (save-match-data ... ).
>
> > And another step `debug-on-entry` on `org-link-beautify`,
> > `org-agenda-finalize`, `org-activate-links`. I have not got a stoppoint
> > backtrace on any of upper functions when org-agenda initializes. This is
> > weird, because I tested to use `debug-on-entry` on `org-agenda`. It can
> > popup a stoppoint backtrace.
>
> Strange. I had no problem with debugging `org-agenda-finalize` on my
> system.
>
> Best,
> Ihor
>
>
> "numbchild@gmail.com" <numbchild@gmail.com> writes:
>
> > Ihor, thanks for your detailed help.
> > I followed your steps, the `elp` step, I confirmed `org-link-beautify` is
> > invoked and fall into an infinite loop.
> >
> > ```
> > org-link-beautify 11265 58.586412984 0.0052007468
> > ```
> >
> > And another step `debug-on-entry` on `org-link-beautify`,
> > `org-agenda-finalize`, `org-activate-links`. I have not got a stoppoint
> > backtrace on any of upper functions when org-agenda initializes. This is
> > weird, because I tested to use `debug-on-entry` on `org-agenda`. It can
> > popup a stoppoint backtrace.
> >
> > I reviewed my org-link-beautify (
> > https://github.com/stardiviner/org-link-beautify) source code, I have
> not
> > use any regexp matching. I guess the function
> > `org-link-beautify--get-element` invoked `(org-element-context)` caused
> > this problem or other similar places. But I use `debug-on-entry` on
> > `org-element-context`. Still have not got stoppoint backtrace.
> >
> > Need your more help. Sorry for disturbing you....
> >
> > [stardiviner] <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 Sun, Aug 16, 2020 at 2:39 PM Ihor Radchenko <yantar92@gmail.com>
> wrote:
> >
> >> > Your suggestion is very useful, I can see what function is invoked
> many
> >> > times. But still can't understand what's the cause.
> >>
> >> Looking at your CPU profiler report I can see that the slow part is
> >> happening while running org-agenda-finalize when agenda buffer is
> >> already populated. Most of time is taken by calling your function. I
> >> suspect that it is simply called many times (maybe infinite loop?).
> >>
> >> You may check the number of times your function is called using
> >>
> >> (require 'elp)
> >> (elp-instrument-function #'org-link-beautify)
> >> ;; run agenda
> >> ;; M-x elp-results
> >>
> >> Another suggestion would be invoking debug-on-entry for you function,
> >> for org-activate-links, and for org-agenda-finalize.
> >>
> >> Best,
> >> Ihor
> >>
> >>
> >>
> >>
> >> "numbchild@gmail.com" <numbchild@gmail.com> writes:
> >>
> >> > I tried use debug-on-entry on:
> >> > + org-agenda-list(nil)
> >> > - org-agenda-mode()
> >> > + org-agenda-set-mode-name()
> >> > - org-update-dblock
> >> > + org-dblock-write:clocktable
> >> >
> >> > But got no lucky, Then I followed your another suggestion, use
> profiler:
> >> >
> >> > I got a very big message log, (not suitable for paste in email, so I
> >> paste
> >> > it on Gist)
> >> >
> >> > - CPU profiler report: https://www.pastery.net/gststf/
> >> > - Memory profiler report:
> https://www.pastery.net/gststf+qzyxaf/#qzyxaf
> >> >
> >> > The very deepest call stacks seems the output format is not long
> enough,
> >> so
> >> > can't display.
> >> >
> >> > Your suggestion is very useful, I can see what function is invoked
> many
> >> > times. But still can't understand what's the cause.
> >> >
> >> > [stardiviner] <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/
> >> >> >>
> >> >>
> >>
>
[-- Attachment #2: Type: text/html, Size: 51203 bytes --]
next prev parent reply other threads:[~2020-08-17 3:14 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
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 [this message]
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=CAL1eYu+_D2ThLg4r-wxhaXt6mspPRW4r-dE8Zr+QVkBkWLAmjg@mail.gmail.com \
--to=numbchild@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=yantar92@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).