Browse Source

org-export: Explicit error when using invalid syntax for INCLUDE keywords

* contrib/lisp/org-export.el (org-export-expand-include-keyword):
  Error out when file isn't specified within double quotes.
* testing/lisp/test-org-export.el: Add test.
Nicolas Goaziou 5 years ago
parent
commit
a8c026cb26
2 changed files with 6 additions and 1 deletions
  1. 2 1
      contrib/lisp/org-export.el
  2. 4 0
      testing/lisp/test-org-export.el

+ 2 - 1
contrib/lisp/org-export.el

@@ -2771,7 +2771,7 @@ working directory.  It is used to properly resolve relative
 paths."
   (let ((case-fold-search t))
     (goto-char (point-min))
-    (while (re-search-forward "^[ \t]*#\\+INCLUDE: \\(.*\\)" nil t)
+    (while (re-search-forward "^[ \t]*#\\+INCLUDE: +\\(.*\\)[ \t]*$" nil t)
       (when (eq (org-element-type (save-match-data (org-element-at-point)))
 		'keyword)
 	(beginning-of-line)
@@ -2803,6 +2803,7 @@ paths."
 	  ;; Remove keyword.
 	  (delete-region (point) (progn (forward-line) (point)))
 	  (cond
+	   ((not file) (error "Invalid syntax in INCLUDE keyword"))
 	   ((not (file-readable-p file)) (error "Cannot include file %s" file))
 	   ;; Check if files has already been parsed.  Look after
 	   ;; inclusion lines too, as different parts of the same file

+ 4 - 0
testing/lisp/test-org-export.el

@@ -386,6 +386,10 @@ text
 
 (ert-deftest test-org-export/expand-include ()
   "Test file inclusion in an Org buffer."
+  ;; Error when file isn't specified.
+  (should-error
+   (org-test-with-temp-text "#+INCLUDE: dummy.org"
+     (org-export-expand-include-keyword)))
   ;; Full insertion with recursive inclusion.
   (org-test-with-temp-text
       (format "#+INCLUDE: \"%s/examples/include.org\"" org-test-dir)