2013-11-02 3 views
1

Emacs에서 주요 모드를 만들려고합니다. 이 모드에서 탭 키는 다음과 같이 작동합니다.Emacs에서 다음 탭으로 탭 이동

  • 숫자를 정의합니다. (setq my-tab-stop 10)
  • 내가 current-column가 0,1,2 동일
  • 경우 my-tab-stop로 나누어 다음 칼럼에 포인트 이동, 즉, ..., 9, 지점 열 (10)로 이동하는 탭의 키를 누르 때, 같은 공백 또는 탭 삽입되어서는 안된다 (:
  • current-column 경우 .., 19 점

(주 .. 그래서 컬럼 (20)으로 이동한다 10,11,12 같다 tab-to-tab-stop), 점만 이동하지만 점이 현재 선의 길이를 초과하면 선을 길게 만들기 위해 공백을 삽입해야합니다.

어떻게이 작업을 수행 할 수 있습니까?

(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

여기에 코드입니다.

당신은 하찮게과 N 열의 고정 간격에 대한 탭 정지 목록을 구성 할 수 있습니다

(setq tab-stop-list (number-sequence N MAX N)) 
+0

감사합니다! 완벽하게 작동 :) –

0

그냥 move-to-tab-stop에 키를 바인딩 :

관련 문제