tbanelwebmin <tbanelweb...@free.fr> writes: > I found a way to ensure full backward compatibility. I keep the same > signature. When a table is given as a string parameter, it is inserted > into a temporary buffer, which is then parsed. Overall, the resulting > speed is quite satisfactory.
Awwww, you didn't like my ELEMENT suggestion. > I also made the function more tolerant to ill-formed tables: missing > "|" or excess of spaces at the end of a row are now gracefully > accepted. Great! > (while (not (re-search-forward "\\=\\s-*\n" end t)) (re-search-forward "\\=..." ...) -> (looking-at "..." ...) Note that Org does not use \\s- but the simpler [ \t]. Also, the regexp assumes the table end with a newline character, which may not be the case. > (unless (re-search-forward "\\=\\s-*\\([^|\n]*\\)\\(|?\\)" end > t) > (user-error "Malformed table at char %s" (point))) This cannot happen. The regexp above matches anything, i.e., the empty string. > (goto-char (match-end 1)) > (skip-chars-backward " \t" (match-beginning 1)) > (push > (buffer-substring-no-properties (match-beginning 1) (point)) > row) > (goto-char (match-end 2))) > (push (nreverse row) table))) > (nreverse table))))) I applied your suggestion, with a few simplifications. Hopefully, it squeezed a bit more the execution time. Let me know! > The new implementation can be more than 100 times faster. This enhances > responsiveness of Babel or Gnuplot blocks handling thousands long > tables. Looks good. However, we didn't change the signature, so I didn't add this to ORG-NEWS. It is in the commit message, tho. Thank you!