1

これの動機は次のとおりです。レジスタにバインドされたさまざまなファイルがあります。これにより、実行して xmonad 設定C-x r j Hや .emacs ファイルなどにジャンプできますC-x r j E

run-haskellでバッファにジャンプできるようにしたいと思いC-x r j Hます。ただし、実行C-x r jするとjump-to-register関数が実行されるため、単にバインドすることはできませんC-x r j H

(run-haskell)私にとって最も簡単な回避策は、レジスタに格納されている elisp を評価し、したがってregisterに格納することHです。

しかし、レジスタ内の elisp を評価するための機能が組み込まれていないようです。そのため、問題へのアプローチが間違っていると思います。

どうすればこの問題を解決できますか? これがスーパーユーザースタイルの質問の範囲に入る可能性があることは承知していますが、解決策はelispを書くことにあると思ったので、ここに投稿しました。

4

1 に答える 1

2

jump-to-registerはこれを直接サポートしていませんが、簡単に拡張できます。

(defadvice jump-to-register (around jump-to-buffer-maybe
                                     (register &optional delete)
                                     activate compile)
  (let ((r (get-register register)))
    (if (bufferp r)
        (switch-to-buffer r)
      ad-do-it) ))

これが機能するためには、選択したレジスタにバッファ オブジェクトが含まれている必要があります。便宜上、バッファ オブジェクトをレジスタに格納するための関数を定義することもできます。

(defun buffer-to-register (buf reg)
  (interactive "bBuffer: \ncRegister: ")
  (set-register reg (get-buffer buf)) )

evalの代わりに本当に登録したい場合はswitch-to-buffer、変更は簡単です。ランダムなテキストを実行しないようにするために、合理的な保護手段をどのように配置すればよいかは私にはわかりませんが、たとえば対話型コマンドに制限する場合でも、それほど安全ではないはずです。

于 2012-09-19T14:49:41.240 に答える