組織モードの* scratch *バッファーを作成することはできますか?


13

emacsでドキュメントを作成していると、新しいバッファを開いたり、組織モードで何かをしたり、組織モードのコンテンツをコピーしたり、ドキュメントに貼り付けたりすることがよくあります。以前は、これを行う必要があるたびに新しい組織モードドキュメントを作成していました。これで~/.scratch.org、この作業を保存するファイルができました。

*org-scratch*バッファと同様に動作するバッファを作成することは可能でしょう*scratch*か?


3
バッファにいるM-x org-modeときにやることに不便なことはあります*scratch*か?
xji

1
@XiangJiそんなことすら考えなかった。いい考えだ。
ブライアンフィッツパトリック

回答:


11

*Scratch*バッファの最初のメジャーモードは変数によって制御されますinitial-major-mode-値はシンボルである必要があります(素人の用語では、メジャーモード名の前に一重引用符を付けることを意味します): http://www.gnu。 org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

(setq initial-major-mode 'org-mode)

編集:元のポスターのコメントに基づいて、次のメジャーモードで非ファイル訪問バッファを順番に作成するサンプル関数を示しますorg-mode

(defun my-scratch-buffer ()
"Create a new scratch buffer -- \*hello-world\*"
(interactive)
  (let ((n 0)
        bufname buffer)
    (catch 'done
      (while t
        (setq bufname (concat "*hello-world"
          (if (= n 0) "" (int-to-string n))
            "*"))
        (setq n (1+ n))
        (when (not (get-buffer bufname))
          (setq buffer (get-buffer-create bufname))
          (with-current-buffer buffer
            (org-mode))
          ;; When called non-interactively, the `t` targets the other window (if it exists).
          (throw 'done (display-buffer buffer t))) ))))

それでは、2つの*Scratch*バッファを持つことが可能でしょうか?
ブライアンフィッツパトリック

数値順に新しい非ファイル訪問バッファーを作成するサンプル関数を追加し、org-mode指定を含めました。名前はhello-world、オペレーティングシステムによって認識されるユーザーが望む任意の名前に変更できます。たとえば、Windowsはastrisksが好きではありません。
ローリスト

とてもかっこいい。これを見てくれてありがとう!
ブライアンフィッツパトリック

お手伝いできてうれしいです。結果をスローしてバッファを一気に表示することにしました。機能は同じですが、この方法では機能が少しコンパクトに見えます。:)
ローリスト

11

と呼ばれる拡張機能があり、scratchモード固有のスクラッチバッファーを作成できます。MELPAから入手できるため、簡単にインストールできるはずです。

このパッケージをインストールすると、org-modeバッファ内にいるときに、で実行M-xscratchしてスクラッチバッファを取得できますorg-mode

プレフィクス引数を指定すると、(現在アクティブなメジャーモードを選択する代わりに)モードを選択する機会が得られます。


私はこれを試しましたが、emacsを終了するとスクラッチバッファが削除されると思います。元のスクラッチバッファーは自動的に保存されません。これは正しいですか、何か見落としましたか?
ビビ

1
特別なことをしない限り、元の*scratch*バッファーはセッション間で保持されず、emacsを終了しても保存されません。実行emacs -qして、initファイルで変更されていない標準の動作を取得してください。
フランソワフェヴォット

興味深いことに、私はそれを知りませんでした。これを調査したところ、Aquamacsの機能であることがわかりました。また、Aquamacsには別のフレームに新しいスクラッチを作成するキーバインドCommand-Nが付属していることがわかりました(これはセッション間で持続しません)。
ビビ

2
ところで、永続的なスクラッチバッファーを作成すると主張する、persistent-scratchと呼ばれるMELPA上のパッケージがあります。
ビビ

5

それを達成するための簡単な方法の1つM-x org-modeは、*snatch*バッファ内にいるときに実行することで、org-mode直接有効にすることです。これは、メジャーモードの有効化に適用できます。


最も簡単な方法です。
user2699

これは確かに便利です。スクラッチバッファは他の目的でよく使用するため、組織モード専用のスクラッチバッファを持つことが好きです。
ブライアンフィッツパトリック

2

これを試して:

  1. Cx b(新しいスクラッチバッファの名前を入力します(例:「asdf」)
  2. Mx org-mode(「asdf」バッファーのメジャーモードを変更)

このバッファを閉じると、その内容を保存するためのクエリを取得できません。つまり、適切なスクラッチバッファーを取得します。そして、*scratch*バッファはそのまま残ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.