Ist es möglich, einen org-mode * scratch * -Puffer zu erstellen?

13

Während ich in Emacs an einem Dokument arbeite, öffne ich oft einen neuen Puffer, mache etwas im Organisationsmodus, kopiere den Inhalt im Organisationsmodus und füge ihn in mein Dokument ein. Ich habe jedes Mal, wenn ich dies tun musste, ein neues Dokument im Organisationsmodus erstellt. Jetzt habe ich eine Akte, ~/.scratch.orgin der ich meine Arbeit aufbewahre.

Wäre es möglich, einen *org-scratch*Puffer zu erstellen , der sich analog zum *scratch*Puffer verhält?

Brian Fitzpatrick
quelle
3
Ist es unpraktisch, M-x org-modewenn Sie sich im *scratch*Puffer befinden?
xji
1
@ XiangJi nicht einmal daran gedacht, das zu tun. Das ist eine großartige Idee.
Brian Fitzpatrick

Antworten:

11

Der anfängliche Hauptmodus für den *Scratch*Puffer wird durch die Variable gesteuert initial-major-mode- der Wert muss ein Symbol sein (was für Laien bedeutet, ein einfaches Anführungszeichen vor den Namen des Hauptmodus zu setzen ): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

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

BEARBEITEN : Auf der Grundlage eines Kommentars des Originalposters finden Sie hier eine Beispielfunktion zum Erstellen von Puffern ohne Dateibesuch in sequenzieller Reihenfolge mit dem Hauptmodus 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))) ))))
Gesetzesliste
quelle
Wäre es also möglich, zwei *Scratch*Puffer zu haben ?
Brian Fitzpatrick
Ich habe eine Beispielfunktion hinzugefügt, mit der neue Puffer erstellt werden, die keine Dateibesuche erfordern, und ich habe eine org-modeBezeichnung hinzugefügt . Der Name kann von zu allem geändert werden hello-world, was der Benutzer wünscht, das vom Betriebssystem erkannt wird - z. B. Windows mag keine Astrisken.
Gesetzesliste
Sehr cool. Danke, dass du dir das ansiehst!
Brian Fitzpatrick
Ich bin froh, helfen zu können. Ich habe beschlossen, das Ergebnis zu werfen und den Puffer auf einen Schlag anzuzeigen - die Funktionalität ist die gleiche, aber die Funktion sieht auf diese Weise etwas kompakter aus. :)
Gesetzesliste
11

Es gibt eine Erweiterung mit dem Namen scratch, mit der Sie modusspezifische Arbeitspuffer erstellen können. Es ist bei MELPA erhältlich, sodass Sie es problemlos installieren können sollten.

Wenn dieses Paket installiert ist, können Sie in einem org-modePuffer M-xscratcheinen Arbeitspuffer abrufen org-mode.

Wenn Sie ein Präfix-Argument angeben, können Sie den Modus auswählen (anstatt den derzeit aktiven Hauptmodus auszuwählen).

François Févotte
quelle
Ich habe es versucht, aber ich glaube, der Arbeitspuffer wird gelöscht, nachdem Sie Emacs beendet haben. Der ursprüngliche Scratch Buffer speichert sich automatisch. Ist das richtig oder habe ich etwas verpasst?
Vivi
1
Sofern Sie nichts Besonderes tun, *scratch*bleibt der ursprüngliche Puffer nicht über Sitzungen hinweg erhalten und wird auch nicht gespeichert, wenn Sie Emacs beenden. Versuchen Sie, ausgeführt emacs -qzu werden, um das von Ihrer Init-Datei nicht geänderte Standardverhalten zu erhalten.
François Févotte
Interessant, das wusste ich nicht. Ich habe das gerade untersucht und herausgefunden, dass es ein Merkmal von Aquamacs ist. Ich habe auch herausgefunden, dass Aquamacs mit dem Tastenkürzel Command-N geliefert wird, um einen neuen Kratzer in einem anderen Frame zu erstellen (dieser Kratzer bleibt nicht über Sitzungen hinweg bestehen).
Vivi
2
Übrigens gibt es auf MELPA ein Paket namens persistent-scratch, das behauptet, persistente Scratch-Puffer zu erstellen.
Vivi
5

Ich denke, ein einfacher Weg, dies zu erreichen, besteht darin, einfach zu starten, M-x org-modewenn Sie sich im *snatch*Puffer befinden, und somit org-modedirekt zu aktivieren . Dies kann angewendet werden, um einen beliebigen Hauptmodus zu aktivieren.

xji
quelle
Der mit Abstand einfachste Weg.
user2699
Das ist sicherlich nützlich. Ich mag es, einen Scratch Buffer zu haben, der ausschließlich dem org-Modus gewidmet ist, da ich den Scratch Buffer oft für andere Dinge benutze.
Brian Fitzpatrick
2

Versuche dies:

  1. Cx b (Geben Sie einen Namen für Ihren neuen Arbeitspuffer ein, zB "asdf")
  2. Mx org-mode (Hauptmodus des "asdf" -Puffers ändern)

Wenn Sie diesen Puffer schließen, erhalten Sie keine Abfrage zum Speichern des Inhalts. Dh du bekommst einen ordentlichen Scratch Buffer. Und der *scratch*Puffer bleibt intakt.

undostres
quelle