2

view-lossageEmacsの場合、収集したものを外部ファイルに保存するにはどうすればよいですか?理想的には、これらのキーストロークデータを段階的かつ自動的に外部ログファイルに保存したいと思います。つまり、Emacsの起動時にデフォルトで保存されます。

4

1 に答える 1

7

少なくともEmacs24では(今は以前のバージョンをチェックできません)、次のように記述されview-lossageています。

最後の300回の入力キーストロークを表示します。

すべての入力をファイルに記録するには、`open-dribble-file'を使用します。

そしてC-hf open-dribble-file RET私に言う:

open-dribble-fileは、「Cソースコード」に組み込まれたインタラクティブな関数です。

(オープンドリブルファイルファイル)

FILEというドリブルファイルへのすべてのキーボード文字の書き込みを開始します。FILEがnilの場合、開いているドリブルファイルをすべて閉じます。Emacsが終了すると、ファイルは閉じられます。

したがって、.emacsファイルに次のようなものを追加するだけです。

(open-dribble-file (expand-file-name "~/.emacs.d/lossage.txt"))

実験的に、これはファイルがすでに存在する場合はファイルを壊してしまうので、それに対処する必要があります。

これが1つのアプローチです。make-temp-nameドリブルファイルのセミランダムファイル名を生成するためにを使用して複数のEmacsセッションを説明し、Emacsが存在する場合はその内容をプライマリ損失ログファイルに追加します。(Emacsがクラッシュした場合、手動で処理するための一時ファイルが残ります。)

(defmacro my-persistent-dribble-file (file)
  "Append the dribble-file for this session to persistent lossage log FILE."
  `(let* ((persistent-file (expand-file-name ,file))
          (temporary-file (make-temp-name (concat persistent-file "-")))
          (persistent-arg (shell-quote-argument persistent-file))
          (temporary-arg (shell-quote-argument temporary-file))
          (append-dribble-command (format
                                   "cat %s >>%s && rm %s"
                                   temporary-arg persistent-arg temporary-arg)))
     (open-dribble-file temporary-file)
     (eval `(add-hook 'kill-emacs-hook
                      (lambda () (shell-command ,append-dribble-command))))))

(my-persistent-dribble-file "~/.emacs.d/lossage")
于 2012-03-18T20:17:47.630 に答える