emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [PATCH] Improve message when file to include is missing


From: Sebastien Vauban
Subject: Re: [O] [PATCH] Improve message when file to include is missing
Date: Tue, 18 Feb 2014 15:55:24 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (windows-nt)

Hello Nicolas,

Nicolas Goaziou wrote:
> "Sebastien Vauban" writes:
>
>> When a SETUPFILE is missing, there is an error or message generated, but
>> we don't know in which file the bad reference is -- when all those files
>> are loaded during the agenda generation.
>>
>> Hence, a better message, specifying where to go and look for the bad
>> link.
>
> What if `buffer-file-name' returns nil? Sure, the problem won't happen
> during agenda generation, but `org-file-contents' is used elsewhere.
>
> Also, it is better to use:
>
>   (buffer-file-name (buffer-base-buffer))
>
> since the current buffer may be an indirect one.

This should answer your (fruitful) comments.

Best regards,
  Seb

-- 
Sebastien Vauban


>From 804fff53730f0da2e1b41b7b9f070e8e23c8974b Mon Sep 17 00:00:00 2001
From: "Sebastien Vauban" <address@hidden>
Date: Tue, 18 Feb 2014 15:49:57 +0100
Subject: [PATCH] Improve message when file to include is missing

* org.el (org-file-contents): Improve message when linked file does not exist.

---
 lisp/org.el |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index dfb0517..138e735 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5230,14 +5230,18 @@ Support for group tags is controlled by the option
 
 (defun org-file-contents (file &optional noerror)
   "Return the contents of FILE, as a string."
-  (if (or (not file) (not (file-readable-p file)))
-      (if (not noerror)
-         (error "Cannot read file \"%s\"" file)
-       (message "Cannot read file \"%s\"" file)
-       "")
-    (with-temp-buffer
-      (insert-file-contents file)
-      (buffer-string))))
+  (let* ((from-file (buffer-file-name (buffer-base-buffer)))
+        (info-from-file
+         (if from-file
+             (concat " (referenced in file \"" from-file "\")")
+           "")))
+    (if (or (not file) (not (file-readable-p file)))
+       (if (not noerror)
+           (error "Cannot read file \"%s\"%s" file info-from-file)
+         (message "Cannot read file \"%s\"%s" file info-from-file))
+      (with-temp-buffer
+       (insert-file-contents file)
+       (buffer-string)))))
 
 (defun org-extract-log-state-settings (x)
   "Extract the log state setting from a TODO keyword string.
-- 
1.7.9




reply via email to

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