2014-08-28 2 views
2

Давайте предположим, что текстовый файл выглядит так:Emacs отступы в десятичной системе в поплавках

0.00 33.90 -93.9 
    0.00  43.90 -93.9 
    10.00 53.90 -93.9 
    10.00 63.90 -93.9 

-100.00 10.00 -7.0 
-100.00 9.00 -8.0 
100.00 9.00 -9.0 
100.00 63.00 -10.0 

Что бы соответствующие Emacs команды выстраиваться текст так выглядеть следующим образом:

 0.00 33.90 -93.9 
    0.00 43.90 -93.9 
    10.00 53.90 -93.9 
    10.00 63.90 -93.9 

-100.00 10.00  -7.0 
-100.00  9.00  -8.0 
100.00  9.00  -9.0 
100.00 63.00 -10.0 

Поплавки должны выравниваться по вертикали в десятичной точке. Я знаком с align-regexp, но я не знаю, что align-rule-list Я должен использовать.

ответ

4

Следующая функция не работает отлично, но она должна вас начать. Атрибут justify важен для выравнивания в десятичной точке. Но нет необязательного аргумента justify для align-regexp. Чтобы узнать значение атрибутов, обратитесь к справке align-rules-list.

(defun align-numbers (beg end) 
    (interactive "r") 
    (let (indent-tabs-mode 
     (align-rules-list '((temporary 
       (regexp . "\\(*[+-]?[0-9]*\\.\\)") 
       (group . 1) 
       (justify . t) 
       (repeat . t) 
       )))) 
    (align beg end))) 
+0

Thanks; это хороший опыт обучения. Но что вы подразумеваете под «... не работает отлично ...»? Установленные вами правила, похоже, работают нормально. – 2014-08-29 16:30:01

+0

@dangler Причина «не работает отлично» заключается в том, что мне нужно временно установить 'ident-tabs-mode' в' nil'. Когда 'ident-tabs-mode' установлен в' t', я получил странное несоосность. – Tobias

Смежные вопросы