1

我正在尝试在 Emacs 中创建一个主要模式。在这种模式下,tab 键应该如下工作:

  • 我定义一个数字,例如(setq my-tab-stop 10)
  • 当我按下制表键时,该点移动到可被 整除的下一列my-tab-stop,即
  • 如果current-column等于 0,1,2,..,9,则该点应移至第 10 列,
  • 如果current-column等于 10,11,12,..,19,则该点应移至第 20 列,依此类推..

(注意:不应插入空格或制表符(如中tab-to-tab-stop),仅移动点,但是,如果点移动超出当前行的长度,则应插入空格以使行更长)

如何才能做到这一点?

4

2 回答 2

1

这是代码:

(defvar tabtab-val 10)

(defun tabtab/forward-char (n)
  (let ((space (- (line-end-position) (point))))
    (if (> space tabtab-val)
        (forward-char n)
      (move-end-of-line 1)
      (insert (make-string (- n space) ? )))))

(defun tabtab ()
  (interactive)
  (let ((shift (mod (current-column) tabtab-val)))
    (tabtab/forward-char (- tabtab-val shift))))
于 2013-11-02T11:48:36.370 回答
0

只需将密钥绑定到move-to-tab-stop.

您可以通过以下方式轻松地为 N 列的固定间隔配置制表位列表:

(setq tab-stop-list (number-sequence N MAX N))
于 2013-11-03T05:44:47.147 回答