1

私はフォワードワードをvimのようにカスタマイズします-'w'はこれに従います、これはMSfがテキストを選択しなくなったことを除いて正常に機能します。
だから、私は関数を書きます:

(defun forward-to-word-with-selection (arg)
  (interactive "p")
  (if (not (eq last-command 'forward-to-word-with-selection))
      (progn (message "Mark Set")
             (set-mark-command))
    (forward-to-word arg)))

(global-set-key (kbd "M-F") 'forward-to-word-with-selection)

しかし、私は厄介なエラーが発生しました:

ここに画像の説明を入力してください

次に、この関数を段階的に実行します(Cc Ceを使用すると、elispの初心者なので、他のより良いデバッグアプローチがうまくいきます)。このエラーは(set-mark-command)によるものです。

4

2 に答える 2

2

自分でマークを操作したくありません。インタラクティブに「^」を指定するだけです。Emacs で修正するためのパッチでバグを報告しましたが、独自のラッパーを定義できます。

(defun forward-to-word-w (arg)
  "wrapper to work with shift-select-mode"
  (interactive "^p")
  (forward-to-word arg))
于 2012-08-19T01:45:29.723 に答える
1

set-mark-command前置引数の生の形式を含む引数を取ります。これC-@が、与える前置引数のタイプに応じて異なる動作をする方法です。

おそらく、コード内でこの関数を呼び出したくないでしょう。おそらくpush-mark.

于 2012-08-18T17:34:41.343 に答える