Re: org-goto and org-store-link/org-id-get-create

2021-05-01 Thread Bastien
Bastien  writes:

> Applied in maint with commit 0a8079b4d, thanks a lot!

Er, sorry, I should have explained why I applied it to maint too,
on top of applying it to master three days ago: first of all, this
is a bugfix, and I also want to take the opportunity of releasing
Org 9.4.6 so that more people can test it before Org 9.5.

-- 
 Bastien



Re: org-goto and org-store-link/org-id-get-create

2021-05-01 Thread Bastien
Applied in maint with commit 0a8079b4d, thanks a lot!

Ihor Radchenko  writes:

> Bastien  writes:
>
>> Can you provide a patch for this?
>
> Sure. Attached.

-- 
 Bastien



Re: org-goto and org-store-link/org-id-get-create

2021-04-28 Thread Bastien
Hi Ihor,

applied in master as commit 232d9a060, thanks a lot!

-- 
 Bastien



Re: org-goto and org-store-link/org-id-get-create

2021-04-28 Thread Ihor Radchenko

Bastien  writes:

> Can you provide a patch for this?

Sure. Attached.

>From d914acea52d251e2099681ac9541e4cb42e0953f Mon Sep 17 00:00:00 2001
Message-Id: 
From: Ihor Radchenko 
Date: Wed, 28 Apr 2021 22:51:53 +0800
Subject: [PATCH] Bypass read-only state in org-entry-put

* lisp/org.el (org-entry-put): Ignore read-only state of the buffer.

Fixes bug when ID property is not insered when creating ID in an
indirect read-only org-goto buffer. [1]

[1] https://orgmode.org/list/8ffe2da5-e2cb-f44c-0a46-b19873c0b...@gmx.de/
---
 lisp/org.el | 113 ++--
 1 file changed, 57 insertions(+), 56 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index eb4b2db88..dbc245534 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -12340,62 +12340,63 @@ (defun org-entry-put (pom property value)
 	((not (stringp value)) (error "Properties values should be strings"))
 	((not (org--valid-property-p property))
 	 (user-error "Invalid property name: \"%s\"" property)))
-  (org-with-point-at pom
-(if (or (not (featurep 'org-inlinetask)) (org-inlinetask-in-task-p))
-	(org-back-to-heading-or-point-min t)
-  (org-with-limited-levels (org-back-to-heading-or-point-min t)))
-(let ((beg (point)))
-  (cond
-   ((equal property "TODO")
-	(cond ((not (org-string-nw-p value)) (setq value 'none))
-	  ((not (member value org-todo-keywords-1))
-	   (user-error "\"%s\" is not a valid TODO state" value)))
-	(org-todo value)
-	(org-align-tags))
-   ((equal property "PRIORITY")
-	(org-priority (if (org-string-nw-p value) (string-to-char value) ?\s))
-	(org-align-tags))
-   ((equal property "SCHEDULED")
-	(forward-line)
-	(if (and (looking-at-p org-planning-line-re)
-		 (re-search-forward
-		  org-scheduled-time-regexp (line-end-position) t))
-	(cond ((string= value "earlier") (org-timestamp-change -1 'day))
-		  ((string= value "later") (org-timestamp-change 1 'day))
-		  ((string= value "") (org-schedule '(4)))
-		  (t (org-schedule nil value)))
-	  (if (member value '("earlier" "later" ""))
-	  (call-interactively #'org-schedule)
-	(org-schedule nil value
-   ((equal property "DEADLINE")
-	(forward-line)
-	(if (and (looking-at-p org-planning-line-re)
-		 (re-search-forward
-		  org-deadline-time-regexp (line-end-position) t))
-	(cond ((string= value "earlier") (org-timestamp-change -1 'day))
-		  ((string= value "later") (org-timestamp-change 1 'day))
-		  ((string= value "") (org-deadline '(4)))
-		  (t (org-deadline nil value)))
-	  (if (member value '("earlier" "later" ""))
-	  (call-interactively #'org-deadline)
-	(org-deadline nil value
-   ((member property org-special-properties)
-	(error "The %s property cannot be set with `org-entry-put'" property))
-   (t
-	(let* ((range (org-get-property-block beg 'force))
-	   (end (cdr range))
-	   (case-fold-search t))
-	  (goto-char (car range))
-	  (if (re-search-forward (org-re-property property nil t) end t)
-	  (progn (delete-region (match-beginning 0) (match-end 0))
-		 (goto-char (match-beginning 0)))
-	(goto-char end)
-	(insert "\n")
-	(backward-char))
-	  (insert ":" property ":")
-	  (when value (insert " " value))
-	  (org-indent-line)
-(run-hook-with-args 'org-property-changed-functions property value)))
+  (org-no-read-only
+   (org-with-point-at pom
+ (if (or (not (featurep 'org-inlinetask)) (org-inlinetask-in-task-p))
+	 (org-back-to-heading-or-point-min t)
+   (org-with-limited-levels (org-back-to-heading-or-point-min t)))
+ (let ((beg (point)))
+   (cond
+((equal property "TODO")
+	 (cond ((not (org-string-nw-p value)) (setq value 'none))
+	   ((not (member value org-todo-keywords-1))
+	(user-error "\"%s\" is not a valid TODO state" value)))
+	 (org-todo value)
+	 (org-align-tags))
+((equal property "PRIORITY")
+	 (org-priority (if (org-string-nw-p value) (string-to-char value) ?\s))
+	 (org-align-tags))
+((equal property "SCHEDULED")
+	 (forward-line)
+	 (if (and (looking-at-p org-planning-line-re)
+		  (re-search-forward
+		   org-scheduled-time-regexp (line-end-position) t))
+	 (cond ((string= value "earlier") (org-timestamp-change -1 'day))
+		   ((string= value "later") (org-timestamp-change 1 'day))
+		   ((string= value "") (org-schedule '(4)))
+		   (t (org-schedule nil value)))
+	   (if (member value '("earlier" "later" ""))
+	   (call-interactively #'org-schedule)
+	 (org-schedule nil value
+((equal property "DEADLINE")
+	 (forward-line)
+	 (if (and (looking-at-p org-planning-line-re)
+		  (re-search-forward
+		   org-deadline-time-regexp (line-end-position) t))
+	 (cond ((string= value "earlier") (org-timestamp-change -1 'day))
+		   ((string= value "later") (org-timestamp-change 1 'day))
+		   ((string= value "") (org-deadline '(4)))
+		   (t (org-deadline nil value)))
+	   (if (member value '("earlier" "later" ""))
+	   

Re: org-goto and org-store-link/org-id-get-create

2021-04-27 Thread Bastien
Hi Ihor,

Ihor Radchenko  writes:

> A fix to this particular issue could be using org-no-read-only in
> org-entry-put. Though more functions may suffer from similar issues in
> read-only org buffers.

Can you provide a patch for this?



Re: org-goto and org-store-link/org-id-get-create

2021-01-31 Thread Peter Klenner

>A fix to this particular issue could be using org-no-read-only in
>org-entry-put. Though more functions may suffer from similar issues in
>read-only org buffers.

Brilliant! Wrapping org-entry-put into org-no-read-only fixes the issue
for me.




Re: org-goto and org-store-link/org-id-get-create

2021-01-30 Thread Ihor Radchenko
Peter Klenner  writes:

> Calling either org-store-link or org-id-get-create in an indirect
> org-goto buffer results in an empty ID-property drawer with (setq
> org-id-link-to-org-use-id t).

Confirmed.

This is because org-goto buffer is in read-only state, which is ignored
when inserting empty property drawer, but respected when trying to
insert :ID: property, which is indeed inconsistent.

Currently, the following functions disregard the read-only state in org
buffers: org-store-log-note, org-insert-property-drawer,
org-agenda-undo, org-agenda-todo, org-agenda-add-note,
org-agenda-priority, org-agenda-set-tags, org-agenda-set-property,
org-agenda-set-effort, org-agenda-toggle-archive-tag,
and org-columns-store-format.

A fix to this particular issue could be using org-no-read-only in
org-entry-put. Though more functions may suffer from similar issues in
read-only org buffers.

Best,
Ihor




org-goto and org-store-link/org-id-get-create

2021-01-30 Thread Peter Klenner

Calling either org-store-link or org-id-get-create in an indirect
org-goto buffer results in an empty ID-property drawer with (setq
org-id-link-to-org-use-id t).

There is a recent thread about "Indirect buffers, ~org-store-link~, and
~org-insert-link~"
(https://orgmode.org/list/rhob8q$t26$1...@ciao.gmane.io/) which seems to
have resulted in a fix for org-store-link in indirect buffers. Yet, for
an org-goto buffer the described problem of an empty target remains.

System: Emacs 27.1, Windows 10, org 9.4.4

Thanks in advance for any pointers!