org-modeの表で <NN>
と桁幅指定しても、
日本語がある桁では幅の計算がうまく行かない問題。
ELFで話題に出たので、
パッチの形にしてみた。7.8.06用。
diff -r 4db0de28f0ba lisp/org-table.el --- a/lisp/org-table.el Sat Mar 24 15:29:00 2012 +0900 +++ b/lisp/org-table.el Sat Mar 24 15:41:58 2012 +0900 @@ -762,12 +762,19 @@ 'help-echo (concat "Clipped table field, use C-c ` to edit. Full value is:\n" (org-no-properties (copy-sequence xx)))) (setq f1 (min fmax (or (string-match org-bracket-link-regexp xx) fmax))) + + ;; Calculate c and f1 again to fit to display-width + (let*((xs (org-no-properties xx)) + (s0 (format (format "%%.%ds" (- f1 2)) xs)) + (s1 (format (format "%%.%ds" f1) xs))) + (setq c (length s0) f1 (length s1))) (unless (> f1 1) (error "Cannot narrow field starting with wide link \"%s\"" (match-string 0 xx))) (add-text-properties f1 (length xx) (list 'org-cwidth t) xx) - (add-text-properties (- f1 2) f1 - (list 'display org-narrow-column-arrow) + (setq space (make-string (max 0 (- fmax (string-width (substring xx 0 c)) 2)) ? )) + (add-text-properties c f1 + (list 'display (concat org-narrow-column-arrow space)) xx))))) ;; Get the maximum width for each column (push (apply 'max (or fmax 1) 1 (mapcar 'org-string-width column))