瀏覽代碼

org-table.el: Throw an error when importing a non-csv/tsv/txt file

* lisp/org-table.el (org-table-import): Throw an error when
interactively trying to import a non-csv/tsv/txt file.

Reported-by: swedebugia <swedebugia@riseup.net>
See https://orgmode.org/list/20200912135043.0354bac4@parabola/
Bastien Guerry 4 年之前
父節點
當前提交
9c31cba002
共有 1 個文件被更改,包括 11 次插入8 次删除
  1. 11 8
      lisp/org-table.el

+ 11 - 8
lisp/org-table.el

@@ -921,19 +921,22 @@ nil      When nil, the command tries to be smart and figure out the
 The command tries to be smart and figure out the separator in the
 The command tries to be smart and figure out the separator in the
 following way:
 following way:
 
 
-  - when each line contains a TAB, assume TAB-separated material
-  - when each line contains a comma, assume CSV material
-  - else, assume one or more SPACE characters as separator.
+- when each line contains a TAB, assume TAB-separated material;
+- when each line contains a comma, assume CSV material;
+- else, assume one or more SPACE characters as separator.
 
 
 When non-nil, SEPARATOR specifies the field separator in the
 When non-nil, SEPARATOR specifies the field separator in the
 lines.  It can have the following values:
 lines.  It can have the following values:
 
 
-(4)     Use the comma as a field separator
-(16)    Use a TAB as field separator
-(64)    Prompt for a regular expression as field separator
-integer When a number, use that many spaces, or a TAB, as field separator
-regexp  When a regular expression, use it to match the separator."
+- (4)     Use the comma as a field separator.
+- (16)    Use a TAB as field separator.
+- (64)    Prompt for a regular expression as field separator.
+- integer When a number, use that many spaces, or a TAB, as field separator.
+- regexp  When a regular expression, use it to match the separator."
   (interactive "f\nP")
   (interactive "f\nP")
+  (when (and (called-interactively-p 'any)
+	     (not (string-match-p "\.\\(?:[tc]sv\\|txt\\)$" file)))
+    (user-error "Cannot import such file"))
   (unless (bolp) (insert "\n"))
   (unless (bolp) (insert "\n"))
   (let ((beg (point))
   (let ((beg (point))
 	(pm (point-max)))
 	(pm (point-max)))