2012-07-25 38 views
3

是否有可能在Emacs改造这个:如何在Emacs中居中文本?

<!-- inclusion du code JavaScript --> 
<!-- inclusion des feuilles de style --> 
<!-- definition du ZHO    --> 

到这个(近似):

<!-- inclusion du code JavaScript --> 
<!-- inclusion des feuilles de style --> 
<!--  definition du ZHO  --> 

回答

3

我已将下面的点作为交互式命令连接起来。 @ nicolasdudebout的算法或多或少的声音,除了需要“硬”move-to-column来选择矩形。

选择您感兴趣的(没有箭头)的矩形,然后运行:

(defun center-rectangle (beg end) 
    (interactive "*r") 
    (kill-rectangle beg end) 
    (with-temp-buffer 
    (yank-rectangle) 
    (setq fill-column (current-column)) 
    (center-region (point-min) (point-max)) 
    (goto-char (point-max)) 
    (move-to-column fill-column t) 
    (kill-rectangle (point-min) (point))) 
    (goto-char beg) 
    (yank-rectangle)) 
+0

没有工作,矩形保持原样。 – ychaouche 2012-07-26 09:02:25

+1

这是行不通的。选择***不包括*** < - - '或' - >'的矩形。 – 2012-07-26 12:52:11

3

您设置变量fill-column到NR。列。在

  1. (setq填充柱100)
  2. 剪切 '< ---' 和 ' - >':

    然后调用(center-line)

    这里是你如何能做到每一行

  3. 你打电话(中心线)
  4. 呼叫字符串矩形上的第1列,并插入“< ---”
  5. 呼叫上最后一列字符串矩形,插入“--->”

为了在最后一步上的最后一列到达[3],可以做(goto-char (point-min)),然后(结束线) ,然后致电(indent-line-to COL)

+1

不是什么OP要求,因为这不会调整评论分隔符内的间距。 – geoffspear 2012-07-25 14:12:38

+0

哦,对不起。在nxml模式下,我不知道... – alinsoar 2012-07-25 14:14:42

2

您可以使用矩形构建一个函数或宏。 这将做到以下几点:

  • 切矩形包含文本仅
  • 将其粘贴在临时缓冲区
  • 设置fill-column来列数和使用center-line(见alinsoar的答案)
  • 将结果切成长方形
  • 将其拉回原始缓冲区中的矩形
+0

如何将填充列设置为列数? – ychaouche 2012-07-26 09:03:47

+0

由于event_jr在做,所以你可以使用'(setq fill-column(current-column))',因为当前列在延长时位于矩形的末端。 – 2012-07-26 12:59:21

1

set-justification-center。正如你所期望的那样,还有set-justification-right。这些功能包括在不恰当的位置思考的换行符,所以它可能会打破段落线。