org-table: Improve bidirectional reordering in tables

* lisp/org-table.el (org-table-separator-space): New variable.
(org-table-align): Use new variable.
This commit is contained in:
Nicolas Goaziou 2017-12-23 23:37:45 +01:00
parent 4d3e7a2a57
commit a343b0000a
1 changed files with 11 additions and 1 deletions

View File

@ -504,6 +504,12 @@ variable is initialized with `org-table-analyze'.")
(concat "\\(" "@[-0-9I$]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\)")
"Match a reference that needs translation, for reference display.")
(defconst org-table-separator-space
(propertize " " 'display '(space :width 1))
"Space used around fields when aligning the table.
This space serves as a segment separator for the purposes of the
bidirectional reordering.")
(defmacro org-table-save-field (&rest body)
"Save current field; execute BODY; restore field.
Field is restored even in case of abnormal exit."
@ -782,7 +788,11 @@ FIELD is a string. WIDTH is a number. ALIGN is either \"c\",
("r" (make-string spaces ?\s))
("c" (make-string (/ spaces 2) ?\s))))
(suffix (make-string (- spaces (length prefix)) ?\s)))
(concat " " prefix field suffix " ")))
(concat org-table-separator-space
prefix
field
suffix
org-table-separator-space)))
;;;###autoload
(defun org-table-align ()