3

ローカル マークとグローバル マークを組み合わせる方法はありますか? 私がやろうとしているのは、pop-global-markset-mark-commandに共通のキーバインディングを持つことです。何かのようなもの; 「ローカル マークをポップしてみてください。残りのマークがない場合は、グローバル マークをポップしてみてください」.

これは、関数間のジャンプが同じファイルの内部または外部にあるかどうかに応じて、C-u C-SPCまたはを押す必要があるかどうかを考えずに、コードを元に戻すために必要です。C-x C-SPC

4

2 に答える 2

2

まず第一にset-mark-command、コードで実際に使用することはできません。これは、チェックthis-commandlast-commandて意図したとおりに機能しないためです。

ただし、そのコードを調べると、(テストされていません!):

(defun pop-local-or-global-mark ()
  "Pop to local mark if it exists or to the global mark if it does not."
  (interactive)
  (if (mark t)
      (pop-to-mark-command)
      (pop-global-mark)))
于 2013-12-06T15:07:10.003 に答える
2

おそらく、マークを短くするという意味で、マークが鳴るのC-u C-SPCC-x C-SPC実際に「ポップ」すると誤解していると思います。「残りが無ければ」と書いているからです。

彼らはしない。彼らはマークリングを循環させます。そのため、ローカル マーク リングをポップし続けても、最終的に空になることはなく、想定されたコマンドでグローバル マーク リングをポップすることができます。

これらの 2 つのリングは、主に使用方法が異なるため、分離されています。グローバル リングは、バッファからバッファへ移動します (のみ)。ローカル リングは、個々のバッファー内で移動します (のみ)。

だから私のアドバイスは、あなたが探しているものを探さないことです;-)。または、本当に必要な場合は、マーカーを削除するという意味で、実際にリングをポップするコマンドを定義します。

FWIW、マーカーに関連付けられたテキストを表示し、補完などを使用して目的地を選択できるコマンドなど、これら 2 つのコマンドの代替手段があります。

たとえば、IciclesではC-u C-SPC、イントロ センテンスの要求に応じて、マーカー サイクリングとマークの設定を組み合わせます (ただし、タイトルの要求ではなく、ローカル リングとグローバル リングを循環させるための個別のIciclesコマンドがあります)。同様にC-x C-SPC、グローバル リングに対してもこれを行います。つららモードでは、デフォルトで、これらのキーはマルチコマンド icicle-goto-marker-or-set-mark-commandとにバインドされていますicicle-goto-global-marker-or-pop-global-mark

于 2013-12-06T15:10:49.353 に答える