1

私はemacsが初めてで、lispも初めてです

Meta +スペースバーを設定して、テキストを強調表示するためのマークを設定しようとしています(現在のカーソル位置)。オンラインで検索して実験した結果、コマンドにたどり着きました

(global-set-key (kbd "M-SPC") 'push-mark nil nil 1)

上記のコマンドは機能しませんが、「引数の数が正しくありません」というエラーが表示されます。

関数定義を取得し、

    プッシュ マーク &任意の位置 nomsg アクティブ化
ここのelispマニュアルから

    位置:位置の nil は、現在のカーソル位置にデフォルト設定する必要があります
    nomsg:気にしない (と思う)
    activate:明らかにデフォルトでは true ではないので、何かに設定する必要があります。

3 つの値を渡すようにコマンドをフォーマットするにはどうすればよいですか?

エラーは間違いなく、backward-char (入力を渡していない) などの他の関数が正しく機能するため、push-mark 関数呼び出しが原因です。

4

2 に答える 2

2

@philsの発言に少し追加するには:

  1. push-markコマンドではありません: その定義にはinteractive仕様がありません。phils の例(interactive)では無名関数が含まれており、コマンドになっていることに注意してください。

  2. とは異なりpush-markpush-mark-commandはその名前が示すようにコマンドです。の効果が必要な場合は、push-markバインドするpush-mark-commandか、さらに良いですset-mark-command

于 2013-09-22T15:54:09.320 に答える
2

C-hf global-set-key RETあなたが言うように、2global-set-keyつの引数を取ります:(global-set-key KEY COMMAND)

5 つの引数を渡します。(global-set-key (kbd "M-SPC") 'push-mark nil nil 1)

したがって、「引数の数が間違っています」。

名前付き関数のシンボル、または無名関数/ラムダのいずれかを指定できます。

例えば:(global-set-key (kbd "M-SPC") (lambda () (interactive) (push-mark nil nil 1)))

于 2013-09-22T04:42:20.113 に答える