emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [BUG] Org-9.6.x org templates hang on 'clipboard pasted as level 2 s


From: Ihor Radchenko
Subject: Re: [BUG] Org-9.6.x org templates hang on 'clipboard pasted as level 2 subtree'...
Date: Sun, 16 Apr 2023 12:12:34 +0000

Carlo Tambuatco <oraclmaster@gmail.com> writes:

> I restarted emacs with org 9.6.3 and reloaded it uncompiled and
> did M-x toggle-debug-on-error to turn on backtrace on error.
>
> I have also attached a copy of what my org-capture-templates
> variable looks like.
>
> Comparing these backtraces to my org-capture-templates,
> you can see that only some of them fail (the ones corresponding to
> 'd', 'e', 'r', 'Rr', 'Rg', and 'Cc')
>
> They all worked up until Org 9.6. They still work under Org 9.5.5, so
> I don't know what changed.

I tried your templates locally and I am not seeing any problem.

May you try to reproduce starting from emacs -Q?
Or, alternatively, try to use the following version of Org capture, use
C-g to exit, and report the (hopefully) more detailed backtrace.

(defun org-capture (&optional goto keys)
  "Capture something.
\\<org-capture-mode-map>
This will let you select a template from `org-capture-templates', and
then file the newly captured information.  The text is immediately
inserted at the target location, and an indirect buffer is shown where
you can edit it.  Pressing `\\[org-capture-finalize]' brings you back to the \
previous
state of Emacs, so that you can continue your work.

When called interactively with a `\\[universal-argument]' prefix argument \
GOTO, don't
capture anything, just go to the file/headline where the selected
template stores its notes.

With a `\\[universal-argument] \\[universal-argument]' prefix argument, go to \
the last note stored.

When called with a `C-0' (zero) prefix, insert a template at point.

When called with a `C-1' (one) prefix, force prompting for a date when
a datetree entry is made.

ELisp programs can set KEYS to a string associated with a template
in `org-capture-templates'.  In this case, interactive selection
will be bypassed.

If `org-capture-use-agenda-date' is non-nil, capturing from the
agenda will use the date at point as the default date.  Then, a
`C-1' prefix will tell the capture process to use the HH:MM time
of the day at point (if any) or the current HH:MM time."
  (interactive "P")
  (when (and org-capture-use-agenda-date
             (eq major-mode 'org-agenda-mode))
    (setq org-overriding-default-time
          (org-get-cursor-date (equal goto 1))))
  (cond
   ((equal goto '(4))  (org-capture-goto-target keys))
   ((equal goto '(16)) (org-capture-goto-last-stored))
   (t
    (let* ((orig-buf (current-buffer))
           (annotation (if (and (boundp 'org-capture-link-is-already-stored)
                                org-capture-link-is-already-stored)
                           (plist-get org-store-link-plist :annotation)
                         (ignore-errors (org-store-link nil))))
           (entry (or org-capture-entry (org-capture-select-template keys)))
           initial)
      (setq initial (or org-capture-initial
                        (and (org-region-active-p)
                             (buffer-substring (point) (mark)))))
      (when (stringp initial)
        (remove-text-properties 0 (length initial) '(read-only t) initial))
      (when (stringp annotation)
        (remove-text-properties 0 (length annotation)
                                '(read-only t) annotation))
      (cond
       ((equal entry "C")
        (customize-variable 'org-capture-templates))
       ((equal entry "q")
        (user-error "Abort"))
       (t
        (org-capture-set-plist entry)
        (org-capture-get-template)
        (org-capture-put :original-buffer orig-buf
                         :original-file (or (buffer-file-name orig-buf)
                                            (and (featurep 'dired)
                                                 (car (rassq orig-buf
                                                             dired-buffers))))
                         :original-file-nondirectory
                         (and (buffer-file-name orig-buf)
                              (file-name-nondirectory
                               (buffer-file-name orig-buf)))
                         :annotation annotation
                         :initial initial
                         :return-to-wconf (current-window-configuration)
                         :default-time (or org-overriding-default-time
                                           (org-current-time)))
        (org-capture-set-target-location (and (equal goto 0) 'here))
        (condition-case error
            (org-capture-put :template (org-capture-fill-template))
          ((error quit)
           (if (get-buffer "*Capture*") (kill-buffer "*Capture*"))
           (error "Capture abort: %s" (error-message-string error))))

        (setq org-capture-clock-keep (org-capture-get :clock-keep))
            (org-capture-place-template
             (eq (car (org-capture-get :target)) 'function))
        (when (and (derived-mode-p 'org-mode) (org-capture-get :clock-in))
          (condition-case nil
              (progn
                (when (org-clock-is-active)
                  (org-capture-put :interrupted-clock
                                   (copy-marker org-clock-marker)))
                (org-clock-in)
                (setq-local org-capture-clock-was-started
                            (copy-marker org-clock-marker)))
            (error "Could not start the clock in this capture buffer")))
        (when (org-capture-get :immediate-finish)
          (org-capture-finalize))))))))

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>



reply via email to

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