通用右对齐功能

时间:2012-06-06 13:06:23

标签: emacs text-alignment

既然我知道如何在Emacs中right-align columns of numeric values,我对这个解决方案有两个问题:

  • 很难记住
  • 不灵活

例如,当第一列中的某些值包含数字时,它不起作用。

不幸的是,它会插入标签。

现在我使用矩形函数( C-x r k )。这让我想到:是否可以使用一个函数来右对齐所选矩形中的所有文本?

1 个答案:

答案 0 :(得分:9)

(defun right-justify-rectangle (start end)
  (interactive "r")
  (apply-on-rectangle (lambda (c0 c1)
                        (move-to-column c1 t)
                        (let ((start (- (point) (- c1 c0)))
                              (end (point)))
                          (when (re-search-backward "\\S-" start t)
                            (transpose-regions start (match-end 0)
                                               (match-end 0) end))))
                      start end))

要避免 Tab ,请自定义变量indent-tabs-mode

编辑:

这是一个更合理地处理indent-tabs-mode的版本:

(defun right-justify-rectangle (start end)
  (interactive "r")
  (let ((indent-tabs-mode nil))
    (apply-on-rectangle (lambda (c0 c1)
                          (move-to-column c1 t)
                          (let ((start (- (point) (- c1 c0)))
                                (end (point)))
                            (when (re-search-backward "\\S-" start t)
                              (transpose-regions start (match-end 0)
                                                 (match-end 0) end))))
                        start end))
  (when indent-tabs-mode (tabify start end)))