我正在尝试在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
中所示),只有点移动,但是,如果点移动超出当前行的长度,则应插入空格以使行更长)
如何做到这一点?
答案 0 :(得分: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))))
答案 1 :(得分:0)
只需将密钥绑定到move-to-tab-stop
。
您可以通过以下方式轻松配置N列固定间隔的制表位列表:
(setq tab-stop-list (number-sequence N MAX N))