|
@@ -861,52 +861,52 @@ nil When nil, the command tries to be smart and figure out the
|
|
|
(let* ((beg (min beg0 end0))
|
|
|
(end (max beg0 end0))
|
|
|
re)
|
|
|
- (if (> (count-lines beg end) org-table-convert-region-max-lines)
|
|
|
- (user-error "Region is longer than `org-table-convert-region-max-lines' (%s) lines; not converting"
|
|
|
- org-table-convert-region-max-lines)
|
|
|
- (when (equal separator '(64))
|
|
|
- (setq separator (read-regexp "Regexp for field separator")))
|
|
|
- (goto-char beg)
|
|
|
- (beginning-of-line 1)
|
|
|
- (setq beg (point-marker))
|
|
|
- (goto-char end)
|
|
|
- (if (bolp) (backward-char 1) (end-of-line 1))
|
|
|
- (setq end (point-marker))
|
|
|
- ;; Get the right field separator
|
|
|
- (unless separator
|
|
|
- (goto-char beg)
|
|
|
- (setq separator
|
|
|
- (cond
|
|
|
- ((not (re-search-forward "^[^\n\t]+$" end t)) '(16))
|
|
|
- ((not (re-search-forward "^[^\n,]+$" end t)) '(4))
|
|
|
- (t 1))))
|
|
|
+ (when (> (count-lines beg end) org-table-convert-region-max-lines)
|
|
|
+ (user-error "Region is longer than `org-table-convert-region-max-lines' (%s) lines; not converting"
|
|
|
+ org-table-convert-region-max-lines))
|
|
|
+ (when (equal separator '(64))
|
|
|
+ (setq separator (read-regexp "Regexp for field separator")))
|
|
|
+ (goto-char beg)
|
|
|
+ (beginning-of-line 1)
|
|
|
+ (setq beg (point-marker))
|
|
|
+ (goto-char end)
|
|
|
+ (if (bolp) (backward-char 1) (end-of-line 1))
|
|
|
+ (setq end (point-marker))
|
|
|
+ ;; Get the right field separator
|
|
|
+ (unless separator
|
|
|
(goto-char beg)
|
|
|
- (if (equal separator '(4))
|
|
|
- (while (< (point) end)
|
|
|
- ;; parse the csv stuff
|
|
|
+ (setq separator
|
|
|
(cond
|
|
|
- ((looking-at "^") (insert "| "))
|
|
|
- ((looking-at "[ \t]*$") (replace-match " |") (beginning-of-line 2))
|
|
|
- ((looking-at "[ \t]*\"\\([^\"\n]*\\)\"")
|
|
|
- (replace-match "\\1")
|
|
|
- (if (looking-at "\"") (insert "\"")))
|
|
|
- ((looking-at "[^,\n]+") (goto-char (match-end 0)))
|
|
|
- ((looking-at "[ \t]*,") (replace-match " | "))
|
|
|
- (t (beginning-of-line 2))))
|
|
|
- (setq re (cond
|
|
|
- ((equal separator '(4)) "^\\|\"?[ \t]*,[ \t]*\"?")
|
|
|
- ((equal separator '(16)) "^\\|\t")
|
|
|
- ((integerp separator)
|
|
|
- (if (< separator 1)
|
|
|
- (user-error "Number of spaces in separator must be >= 1")
|
|
|
- (format "^ *\\| *\t *\\| \\{%d,\\}" separator)))
|
|
|
- ((stringp separator)
|
|
|
- (format "^ *\\|%s" separator))
|
|
|
- (t (error "This should not happen"))))
|
|
|
- (while (re-search-forward re end t)
|
|
|
- (replace-match "| " t t)))
|
|
|
- (goto-char beg)
|
|
|
- (org-table-align))))
|
|
|
+ ((not (re-search-forward "^[^\n\t]+$" end t)) '(16))
|
|
|
+ ((not (re-search-forward "^[^\n,]+$" end t)) '(4))
|
|
|
+ (t 1))))
|
|
|
+ (goto-char beg)
|
|
|
+ (if (equal separator '(4))
|
|
|
+ (while (< (point) end)
|
|
|
+ ;; parse the csv stuff
|
|
|
+ (cond
|
|
|
+ ((looking-at "^") (insert "| "))
|
|
|
+ ((looking-at "[ \t]*$") (replace-match " |") (beginning-of-line 2))
|
|
|
+ ((looking-at "[ \t]*\"\\([^\"\n]*\\)\"")
|
|
|
+ (replace-match "\\1")
|
|
|
+ (if (looking-at "\"") (insert "\"")))
|
|
|
+ ((looking-at "[^,\n]+") (goto-char (match-end 0)))
|
|
|
+ ((looking-at "[ \t]*,") (replace-match " | "))
|
|
|
+ (t (beginning-of-line 2))))
|
|
|
+ (setq re (cond
|
|
|
+ ((equal separator '(4)) "^\\|\"?[ \t]*,[ \t]*\"?")
|
|
|
+ ((equal separator '(16)) "^\\|\t")
|
|
|
+ ((integerp separator)
|
|
|
+ (if (< separator 1)
|
|
|
+ (user-error "Number of spaces in separator must be >= 1")
|
|
|
+ (format "^ *\\| *\t *\\| \\{%d,\\}" separator)))
|
|
|
+ ((stringp separator)
|
|
|
+ (format "^ *\\|%s" separator))
|
|
|
+ (t (error "This should not happen"))))
|
|
|
+ (while (re-search-forward re end t)
|
|
|
+ (replace-match "| " t t)))
|
|
|
+ (goto-char beg)
|
|
|
+ (org-table-align)))
|
|
|
|
|
|
;;;###autoload
|
|
|
(defun org-table-import (file separator)
|