emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Add info when reference to remote table is not in the file
@ 2012-04-05 14:07 Sebastien Vauban
  2012-04-06  7:43 ` Bastien
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastien Vauban @ 2012-04-05 14:07 UTC (permalink / raw)
  To: emacs-orgmode-mXXj517/zsQ

2012-04-05  Sebastien Vauban  <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org>

	* org-table.el (org-table-get-remote-range): when a reference to a
	  remote table is not found locally, display a message for 1 second,
	  then go on searching within all known locations

From 432a57390d8a103d440017664b8a594de61281a4 Mon Sep 17 00:00:00 2001
From: Sebastien Vauban <sva-D0wtAvR13HarG/iDocfnWg@public.gmane.org>
Date: Thu, 5 Apr 2012 15:58:27 +0200
Subject: [PATCH] Add info when reference to remote table is not in the file

---
 lisp/org-table.el |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index ae12cee..c336f89 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -4735,6 +4735,8 @@ list of the fields in the rectangle ."
 		 (concat "^[ \t]*#\\+TBLNAME:[ \t]*" (regexp-quote name-or-id) "[ \t]*$")
 		 nil t)
 		(setq buffer (current-buffer) loc (match-beginning 0))
+	      (message "Reference `%s' is not found in the current file" name-or-id)
+	      (sit-for 1)
 	      (setq id-loc (org-id-find name-or-id 'marker))
 	      (unless (and id-loc (markerp id-loc))
 		(error "Can't find remote table \"%s\"" name-or-id))
-- 
1.7.9

Best regards,
  Seb

-- 
Sebastien Vauban

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-05 14:07 [PATCH] Add info when reference to remote table is not in the file Sebastien Vauban
@ 2012-04-06  7:43 ` Bastien
  2012-04-06  8:36   ` Sebastien Vauban
  0 siblings, 1 reply; 9+ messages in thread
From: Bastien @ 2012-04-06  7:43 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: emacs-orgmode

Hi Sébastien,

thanks for the patch.

I wonder if we should trigger an error instead -- why a message?

(I don't like using sit-for, it's often worse than getting an error...)

About the patch itself, thanks for the effort in adding a ChangeLog,
it's close to perfect: just think of starting sentences with a uppercase
letter, and of *including* the emacs ChangeLog in the patch.   See other
commit messages in the git log for reference.

Thanks!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-06  7:43 ` Bastien
@ 2012-04-06  8:36   ` Sebastien Vauban
  2012-04-09 16:01     ` Bastien
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastien Vauban @ 2012-04-06  8:36 UTC (permalink / raw)
  To: emacs-orgmode-mXXj517/zsQ

Hi Bastien,

Bastien wrote:
> thanks for the patch.
>
> I wonder if we should trigger an error instead -- why a message?

Because it's not an error... When a reference (I guess it always must be an
ID, then) is not found locally, Org will search for it in external known
files.

The problem is you see hundreds of messages "Finding ID location...", and you
don't know which reference Org is trying to find...

When you have multiple tables, with multiple references, this is a nightmare
to find which was is wrong.

Just use `TBLNAME' instead of `tblname' for the referenced table (or the
inverse, if you apply the patch you sent me a couple of days ago), and you'll
understand that it's good to know what Org is searching for.

> (I don't like using sit-for, it's often worse than getting an error...)

I don't like it that much either, but, here, it's the only way to see the
message before being flooded by the "Finding ID location..." messages.

Best regards,
  Seb

-- 
Sebastien Vauban

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-06  8:36   ` Sebastien Vauban
@ 2012-04-09 16:01     ` Bastien
  2012-04-19 14:10       ` Sebastien Vauban
  0 siblings, 1 reply; 9+ messages in thread
From: Bastien @ 2012-04-09 16:01 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 545 bytes --]

Hi Sébastien,

"Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes:

>> (I don't like using sit-for, it's often worse than getting an error...)
>
> I don't like it that much either, but, here, it's the only way to see the
> message before being flooded by the "Finding ID location..." messages.

You can also go back to the *Messages* buffer and check from there.

Maybe another option is to silent `org-id-update-id-locations' when
called from `org-id-find'?  Does the attached patch against master
improves the situation for you?

Thanks,


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: silent-org-id-update-id-locations.patch --]
[-- Type: text/x-patch, Size: 1451 bytes --]

diff --git a/lisp/org-id.el b/lisp/org-id.el
index 55e826f..c2b3d86 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -273,7 +273,7 @@ With optional argument MARKERP, return the position as a new marker."
     (when file
       (setq where (org-id-find-id-in-file id file markerp)))
     (unless where
-      (org-id-update-id-locations)
+      (org-id-update-id-locations nil t)
       (setq file (org-id-find-id-file id))
       (when file
 	(setq where (org-id-find-id-in-file id file markerp))))
@@ -403,7 +403,7 @@ and time is the usual three-integer representation of time."
 
 ;; Storing ID locations (files)
 
-(defun org-id-update-id-locations (&optional files)
+(defun org-id-update-id-locations (&optional files silent)
   "Scan relevant files for IDs.
 Store the relation between files and corresponding IDs.
 This will scan all agenda files, all associated archives, and all
@@ -441,8 +441,9 @@ When CHECK is given, prepare detailed information about duplicate IDs."
 	(setq files (delq 'agenda-archives (copy-sequence files))))
       (setq nfiles (length files))
       (while (setq file (pop files))
-	(message "Finding ID locations (%d/%d files): %s"
-		 (- nfiles (length files)) nfiles file)
+	(unless silent
+	  (message "Finding ID locations (%d/%d files): %s"
+		   (- nfiles (length files)) nfiles file))
 	(setq tfile (file-truename file))
 	(when (and (file-exists-p file) (not (member tfile seen)))
 	  (push tfile seen)



[-- Attachment #3: Type: text/plain, Size: 14 bytes --]


-- 
 Bastien

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-09 16:01     ` Bastien
@ 2012-04-19 14:10       ` Sebastien Vauban
  2012-04-19 14:27         ` Sebastien Vauban
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastien Vauban @ 2012-04-19 14:10 UTC (permalink / raw)
  To: emacs-orgmode-mXXj517/zsQ

Hi Bastien,

Bastien wrote:
> "Sebastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes:
>
>>> (I don't like using sit-for, it's often worse than getting an error...)
>>
>> I don't like it that much either, but, here, it's the only way to see the
>> message before being flooded by the "Finding ID location..." messages.
>
> You can also go back to the *Messages* buffer and check from there.
>
> Maybe another option is to silent `org-id-update-id-locations' when
> called from `org-id-find'?  Does the attached patch against master
> improves the situation for you?
>
> Thanks,
>
> diff --git a/lisp/org-id.el b/lisp/org-id.el
> index 55e826f..c2b3d86 100644
> --- a/lisp/org-id.el
> +++ b/lisp/org-id.el
> @@ -273,7 +273,7 @@ With optional argument MARKERP, return the position as a new marker."
>      (when file
>        (setq where (org-id-find-id-in-file id file markerp)))
>      (unless where
> -      (org-id-update-id-locations)
> +      (org-id-update-id-locations nil t)
>        (setq file (org-id-find-id-file id))
>        (when file
>  	(setq where (org-id-find-id-in-file id file markerp))))
> @@ -403,7 +403,7 @@ and time is the usual three-integer representation of time."
>  
>  ;; Storing ID locations (files)
>  
> -(defun org-id-update-id-locations (&optional files)
> +(defun org-id-update-id-locations (&optional files silent)
>    "Scan relevant files for IDs.
>  Store the relation between files and corresponding IDs.
>  This will scan all agenda files, all associated archives, and all
> @@ -441,8 +441,9 @@ When CHECK is given, prepare detailed information about duplicate IDs."
>  	(setq files (delq 'agenda-archives (copy-sequence files))))
>        (setq nfiles (length files))
>        (while (setq file (pop files))
> -	(message "Finding ID locations (%d/%d files): %s"
> -		 (- nfiles (length files)) nfiles file)
> +	(unless silent
> +	  (message "Finding ID locations (%d/%d files): %s"
> +		   (- nfiles (length files)) nfiles file))
>  	(setq tfile (file-truename file))
>  	(when (and (file-exists-p file) (not (member tfile seen)))
>  	  (push tfile seen)

In all cases, this is already an improvement. So, I would definitely check
this in. Thanks.

Now, regarding the flood of messages, and the 1 second wait, it still may be
useful for my case (where vc-backend messages are displayed) as you can see:

--8<---------------cut here---------------start------------->8---
Reference `hours-spent' is not found in the current file
(1 second wait)
Running svn --non-interactive status -v columnview-estimates-ranges-bak.txt in foreground...
Running svn --non-interactive status -v columnview-estimates-ranges-bak.txt...OK = 0
Running svn --non-interactive status -v columnview-reporting-remaining-work.txt in foreground...
Running svn --non-interactive status -v columnview-reporting-remaining-work.txt...OK = 0
Running svn --non-interactive status -v org-quotes.org in foreground...
Running svn --non-interactive status -v org-quotes.org...OK = 0
OVERVIEW
Running svn --non-interactive status -v org-issues.org in foreground...
Running svn --non-interactive status -v org-issues.org...OK = 0
Duplicate ID "mid:i929ov%24dpe%241%40dough%2Egmane%2Eorg", also in file c:/home/sva/src/worg/org-issues.org
Duplicate ID "mid:4C90E885%2E7010409%40sift%2Einfo", also in file c:/home/sva/src/worg/org-issues.org
OVERVIEW
Running svn --non-interactive status -v org-glossary.org in foreground...
Running svn --non-interactive status -v org-glossary.org...OK = 0
Running svn --non-interactive status -v org-faq.org in foreground...
Running svn --non-interactive status -v org-faq.org...OK = 0
OVERVIEW
Running svn --non-interactive status -v org-devel.org in foreground...
Running svn --non-interactive status -v org-devel.org...OK = 0
Running svn --non-interactive status -v org-blog-articles.org in foreground...
Running svn --non-interactive status -v org-blog-articles.org...OK = 0
OVERVIEW
Running svn --non-interactive status -v index.org in foreground...
Running svn --non-interactive status -v index.org...OK = 0
Running svn --non-interactive status -v org-column-view.txt in foreground...
Running svn --non-interactive status -v org-column-view.txt...OK = 0
Running svn --non-interactive status -v columnview.txt in foreground...
Running svn --non-interactive status -v columnview.txt...OK = 0
Running svn --non-interactive status -v columnview-estimates-ranges.txt in foreground...
Running svn --non-interactive status -v columnview-estimates-ranges.txt...OK = 0
Running svn --non-interactive status -v Proposal-Writing-with-Dynamic-Blocks.txt in foreground...
Running svn --non-interactive status -v Proposal-Writing-with-Dynamic-Blocks.txt...OK = 0
Running svn --non-interactive status -v stumpwm.txt in foreground...
Running svn --non-interactive status -v stumpwm.txt...OK = 0
--8<---------------cut here---------------end--------------->8---

But I think the above patch is good enough for the whole community. Let's
commit it, and everybody should be perfectly happy with that -- me included.

Best regards,
  Seb

-- 
Sebastien Vauban

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-19 14:10       ` Sebastien Vauban
@ 2012-04-19 14:27         ` Sebastien Vauban
  2012-04-19 14:29           ` Nicolas Goaziou
                             ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Sebastien Vauban @ 2012-04-19 14:27 UTC (permalink / raw)
  To: emacs-orgmode-mXXj517/zsQ

Hi Bastien,

"Sebastien Vauban" wrote:
>> You can also go back to the *Messages* buffer and check from there.
>>
>> Maybe another option is to silent `org-id-update-id-locations' when called
>> from `org-id-find'? Does the attached patch against master improves the
>> situation for you?
>
> In all cases, this is already an improvement. So, I would definitely check
> this in. Thanks.

That said, I still find we should be able to refer to tables names whose
TBLNAME keyword could be spelled both:

- in downcase version (#+tblname: abc) and
- in uppercase version (#+TBLNAME: xyz).

Best regards,
  Seb

-- 
Sebastien Vauban

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-19 14:27         ` Sebastien Vauban
@ 2012-04-19 14:29           ` Nicolas Goaziou
  2012-04-21 13:43           ` Bastien
  2012-04-23 13:07           ` Bastien
  2 siblings, 0 replies; 9+ messages in thread
From: Nicolas Goaziou @ 2012-04-19 14:29 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: public-emacs-orgmode-mXXj517/zsQ



Hello,

"Sebastien Vauban"
<wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes:

> That said, I still find we should be able to refer to tables names whose
> TBLNAME keyword could be spelled both:
>
> - in downcase version (#+tblname: abc) and
> - in uppercase version (#+TBLNAME: xyz).

More importantly, we should also be able to refer to a table name
through the future-proof #+NAME: keyword, if possible.


Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-19 14:27         ` Sebastien Vauban
  2012-04-19 14:29           ` Nicolas Goaziou
@ 2012-04-21 13:43           ` Bastien
  2012-04-23 13:07           ` Bastien
  2 siblings, 0 replies; 9+ messages in thread
From: Bastien @ 2012-04-21 13:43 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: public-emacs-orgmode-mXXj517/zsQ



"Sebastien Vauban"
<wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes:

> That said, I still find we should be able to refer to tables names whose
> TBLNAME keyword could be spelled both:
>
> - in downcase version (#+tblname: abc) and
> - in uppercase version (#+TBLNAME: xyz).

This should be doable -- please test this patch:
http://patchwork.newartisans.com/patch/1294/

-- 
 Bastien

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Add info when reference to remote table is not in the file
  2012-04-19 14:27         ` Sebastien Vauban
  2012-04-19 14:29           ` Nicolas Goaziou
  2012-04-21 13:43           ` Bastien
@ 2012-04-23 13:07           ` Bastien
  2 siblings, 0 replies; 9+ messages in thread
From: Bastien @ 2012-04-23 13:07 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: emacs-orgmode

Hi Sébastien,

"Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes:

> Hi Bastien,
>
> "Sebastien Vauban" wrote:
>>> You can also go back to the *Messages* buffer and check from there.
>>>
>>> Maybe another option is to silent `org-id-update-id-locations' when called
>>> from `org-id-find'? Does the attached patch against master improves the
>>> situation for you?
>>
>> In all cases, this is already an improvement. So, I would definitely check
>> this in. Thanks.
>
> That said, I still find we should be able to refer to tables names whose
> TBLNAME keyword could be spelled both:
>
> - in downcase version (#+tblname: abc) and
> - in uppercase version (#+TBLNAME: xyz).

I've now pushed a patch for this -- please confirm it works as expected.

Thanks,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-04-23 13:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-05 14:07 [PATCH] Add info when reference to remote table is not in the file Sebastien Vauban
2012-04-06  7:43 ` Bastien
2012-04-06  8:36   ` Sebastien Vauban
2012-04-09 16:01     ` Bastien
2012-04-19 14:10       ` Sebastien Vauban
2012-04-19 14:27         ` Sebastien Vauban
2012-04-19 14:29           ` Nicolas Goaziou
2012-04-21 13:43           ` Bastien
2012-04-23 13:07           ` Bastien

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).