1. ホーム
  2. emacs

[解決済み] Emacs 新しいフレームを作成するときに、新しい「空の」バッファを作成するにはどうすればよいですか?

2022-02-07 09:30:16

質問

私のEmacsはOS Xシステム上にあります。を使うと、新しいフレームのデフォルトが空のバッファになるようにする方法はないでしょうか? ⌘N (TextEditがそうであるように)?私は、先に内容を書いて、後で適切なファイル名を決めたいのです。しかし、Emacsはファイル名を先に決めて、内容を後から書けというのです。何のメリットもない。なぜ、Emacsがそのような動作をするのか、誰か知っていますか?

基本的に C-x 5 2 Emacsは常に現在作業しているファイルのあるフレームをポップアップ表示します。これは不便です。また、Emacsが新しいフレームをポップアップして、そのフレームがデフォルトで *scratch* (Googleの検索結果の多くは、なぜかこの方法を示唆しています)。私は、新しいフレームに "Untitled" という一時的なバッファを持つことを好みますし、もし私が ⌘N また、Emacsは一時的に別の"Untitled 2"バッファをポップアップし、その繰り返しです。このように、バッファのファイル名は後で決めることができます。

解決方法は?

新しいバッファを作成するには switch-to-buffer . タイプ C-x b と入力し、バッファ名を入力して RET . その名前のバッファが存在しない場合、Emacsは基本モードで新しいバッファを自動的に作成します。 他のモードへの切り替えは通常通り M-x は、例えば M-x python-mode . デフォルトのバッファを変更するには、デフォルトの major-mode を希望するバッファに変更します。

しかし、バッファ名を自動的に選んで新しいフレームを作りたい場合は、自分でコマンドを書く必要があります。

(defun lunaryorn-new-buffer-frame ()
  "Create a new frame with a new empty buffer."
  (interactive)
  (let ((buffer (generate-new-buffer "untitled")))
    (set-buffer-major-mode buffer)
    (display-buffer buffer '(display-buffer-pop-up-frame . nil))))

これを C-c n :

(global-set-key (kbd "C-c n") #'lunaryorn-new-buffer-frame)

を押したところ C-c n は、"untitled" という名前の新しい空のバッファを持つ新しいフレームを作成します(x は連続した数字です)。