1

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)。ポイントのみが移動します。ただし、ポイントが現在の行の長さを超えて移動する場合は、行を長くするためにスペースを挿入する必要があります)

これはどのように行うことができますか?

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 に答える