タグ付けされた質問 「undo」

6
FirefoxブラウザのCStのように、強制終了したバッファを再度開く方法は?
Firefoxで閉じたタブを元に戻すCStのように、誤ってバッファを強制的に削除して開き直したい場合がありますが、Emacsには組み込みコマンドがないdefun undo-kill-buffer(http://www.emacswiki.org/RecentFilesにあります)。 (defun undo-kill-buffer (arg) "Re-open the last buffer killed. With ARG, re-open the nth buffer." (interactive "p") (let ((recently-killed-list (copy-sequence recentf-list)) (buffer-files-list (delq nil (mapcar (lambda (buf) (when (buffer-file-name buf) (expand-file-name (buffer-file-name buf)))) (buffer-list))))) (mapc (lambda (buf-file) (setq recently-killed-list (delq buf-file recently-killed-list))) buffer-files-list) (find-file (if arg (nth arg recently-killed-list) …

3
元に戻す履歴を折りたたむ方法は?
私は、音声認識でEmacsを制御できるEmacsモードに取り組んでいます。私が遭遇した問題の1つは、Emacsが元に戻す操作を処理する方法が、音声で制御するときの動作の期待と一致しないことです。 ユーザーがいくつかの単語を話してから一時停止すると、それは「発話」と呼ばれます。発話は、Emacsが実行する複数のコマンドで構成される場合があります。多くの場合、認識エンジンが発話内の1つ以上のコマンドを誤って認識します。その時点で、「元に戻す」と言って、発話内の最後のアクションだけでなく、発話によって行われたすべてのアクションをEmacsで元に戻すことができます。言い換えれば、発話が複数のコマンドで構成されている場合でも、アンドゥに関する限り、Emacsが発話を単一のコマンドとして扱うようにします。また、発話前の正確な場所に戻りたいのですが、通常のEmacsの取り消しではこれが行われないことに気付きました。 各発言の最初と最後にコールバックを取得するようにEmacsをセットアップしているので、状況を検出できます。Emacsに何をさせるかを把握する必要があります。理想的には私のような何かを呼びたい(undo-start-collapsing)し、その後(undo-stop-collapsing)、何完了挟んは魔法のように一つのレコードにまとめられます。 ドキュメントをいくつか探して見つけましたundo-boundaryが、それは私が望むものの反対です-発話内のすべてのアクションを、それらを分割せずに1つのアンドゥレコードに折りたたむ必要があります。undo-boundary発話間で使用して、挿入が個別と見なされるようにすることができます(Emacsは、デフォルトでは連続する挿入アクションをある制限までの1つのアクションと見なします)が、それだけです。 その他の合併症: 私の音声認識デーモンは、X11キー押下をシミュレートすることによっていくつかのコマンドをEmacsに送信し、いくつかのコマンドをemacsclient -eそのように送信します(undo-collapse &rest ACTIONS)。 を使用しますがundo-tree、これにより事態がさら​​に複雑になるかどうかはわかりません。理想的には、ソリューションはundo-treeEmacsの通常のアンドゥ動作で動作します。 発話内のコマンドの1つが「元に戻す」または「やり直し」の場合はどうなりますか?コールバックロジックを変更して、これらを常に個別の発話としてEmacsに送信して、物事をよりシンプルに保つことができると考えています。キーボードを使用する場合と同じように処理する必要があります。 ストレッチ目標:発話には、現在アクティブなウィンドウまたはバッファを切り替えるコマンドが含まれる場合があります。この場合、各バッファで個別に「元に戻す」と言う必要がありますが、それほど派手である必要はありません。ただし、単一のバッファー内のすべてのコマンドはグループ化する必要があります。したがって、「do-x do-y do-zスイッチバッファーdo-a do-b do-c」と言うと、x、y、zは1つの取り消しになります。元のバッファのレコードとa、b、cは、バッファに切り替えられた1つのレコードでなければなりません。 これを行う簡単な方法はありますか?AFAICTには何も組み込まれていませんが、Emacsは広大で深い... 更新:少し余分なコードを追加して、以下のjhcのソリューションを使用することになりました。グローバルでbefore-change-hookは、変更されているバッファがこの発言を変更したバッファのグローバルリストにあるかどうかをチェックし、そうでない場合はリストに入れてundo-collapse-begin呼び出されます。次に、発話の最後に、リスト内のすべてのバッファーを反復処理し、呼び出しますundo-collapse-end。次のコード(md-名前空間のために関数名の前に追加): (defvar md-utterance-changed-buffers nil) (defvar-local md-collapse-undo-marker nil) (defun md-undo-collapse-begin (marker) "Mark the beginning of a collapsible undo block. This must be followed with a call to undo-collapse-end with a marker eq to this …

1
Emacsに「ローカルアンドゥ」拡張機能はありますか?
変更をローカルまたは行単位で元に戻したいことがよくあります。たとえば、ソースコードの複数の行を変更し、そのうちの1つだけを元に戻したい場合は、元に戻すツリー全体をステップスルーして、戻りたい状態を見つける必要があります。マークされた領域またはポイントがあるラインのみを元に戻すことができればより良いでしょう。すでに存在するこのようなものはありますか?
16 editing  undo 

3
元に戻すツリーを悪モードで使用できないのでしょうか?
以下の既知のバグ、別のレポート、およびredditスレッドで、やり直しができないundo-treeのバグにたびたび遭遇します。 primitive-undo: Unrecognized entry in undo list undo-tree-canary これは本当に悪いことであり、ファイルの最新バージョンを保存しなかった場合、作業が失われる可能性があります。 ブランチアンドゥツリー機能を使用したことがないので、邪魔なモードでemacsリニアアンドゥを使用できますか? 注:(global-undo-tree-mode -1)すぐに設定すると、(evil-mode 1)元に戻すツリーが無効になりますが、これを実行すると、やり直し(Ctrl-R)が機能しません。

3
通知を取り消さずにバッファを変更するにはどうすればよいですか?
Q:undo気づかずにバッファーにテキストを挿入/変更するにはどうすればよいですか? これがユースケースです。すべてのファイルの先頭にコメントブロックがあり、ファイルに対する最新の変更のタイムスタンプを更新します。undoファシリティに気付かれずにそのタイムスタンプを変更できるようにしたいのですが。 undoここで短絡させたい理由は、LaTeXドキュメント(およびおそらく他のドキュメント)を編集/コンパイルするときに発生する次のエッジケースによるものです。 ファイルに小さな変更を加えて、コンパイルされたドキュメントにどのように影響するかを確認します ファイルを保存します(タイムスタンプを更新します)。 latexファイルで実行する 変更が悪いものであると判断する undo 変更 ステップ(5)(undo)の問題は、ステップ(1)で行われた変更を取り消すのではなく、ステップ(2)で更新されたタイムスタンプを取り消すことです。それは(私はできた私を気にしないだろうundo、それはまた、移動が多く、多くの行離れて実際の実質的な変更からほとんど常にファイルの先頭にすべての道のタイムスタンプを指していることを除いて、再び)。それは非常に耳障りで、私の集中力を完全に壊します。 私が訪問しているファイルに関して質問を投げかけていますが、それはより一般的にはバッファを変更することについてです。 それで、バッファへの特定の変更に気付かないようにするにはどうすればよいundoですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.