2013-11-02 3 views
1

Я пытаюсь создать основной режим в Emacs. В этом режиме ключ табуляции должен работать следующим образом:Переместить точку на следующую вкладку-стоп в Emacs

  • Я определяю число, например. (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), только точка перемещается, однако, если точка перемещается за пределы текущей линии, следует добавить пробелы, чтобы линия была длинной)

Как это можно сделать?

ответ

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)))) 
+0

Спасибо! Работает отлично :) –

0

Просто привязать ключ к move-to-tab-stop.

Вы можете тривиальное настроить список стоп вкладки для фиксированных интервалов N столбцов с:

(setq tab-stop-list (number-sequence N MAX N)) 
Смежные вопросы