È possibile creare un buffer * scratch * in modalità org?


13

Mentre lavoro su un documento in emacs mi trovo spesso ad aprire un nuovo buffer, fare qualcosa in modalità org, copiare il contenuto in modalità org e incollarlo nel mio documento. Prima creavo un nuovo documento in modalità org ogni volta che dovevo farlo. Ora ho un file in ~/.scratch.orgcui continuo a svolgere questo lavoro.

Sarebbe possibile creare un *org-scratch*buffer che si comportava in modo analogo al *scratch*buffer?


3
C'è qualcosa di scomodo nel fare M-x org-modequando sei nel *scratch*buffer?
xji,

1
@XiangJi Non pensavo nemmeno di farlo. Questa è una grande idea.
Brian Fitzpatrick,

Risposte:


11

La modalità principale iniziale per il *Scratch*buffer è controllata dalla variabile initial-major-mode- il valore deve essere un simbolo (che in parole povere significa mettere una virgoletta davanti al nome della modalità principale): http: //www.gnu. org / software / emacs / manuale / html_node / elisp / Auto-Major-Mode.html

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

EDIT : basato su un commento del poster originale, ecco una funzione di esempio per creare buffer non visitanti i file in ordine sequenziale con la modalità principale di 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))) ))))

Quindi sarebbe possibile avere due *Scratch*buffer allora?
Brian Fitzpatrick,

Ho aggiunto una funzione di esempio che crea nuovi buffer che non visitano i file in ordine numerico e ho incluso una org-modedesignazione. Il nome può essere cambiato da hello-worldqualsiasi cosa l'utente desideri, che viene riconosciuto dal sistema operativo, ad esempio Windows non ama gli astrischi.
elenco delle leggi

Molto bello. Grazie per l'attenzione!
Brian Fitzpatrick,

Sono felice di aver potuto aiutare. Ho deciso di lanciare il risultato e visualizzare il buffer in un colpo solo - la funzionalità è la stessa, ma la funzione sembra un po 'più compatta in questo modo. :)
elenco delle leggi

11

C'è un'estensione chiamata scratch, che consente di creare buffer di memoria specifici della modalità. È disponibile da MELPA, quindi dovresti essere in grado di installarlo facilmente.

Con questo pacchetto installato, quando ci si trova in un org-modebuffer, è possibile eseguire M-xscratchper ottenere un buffer di memoria virtuale org-mode.

Se si fornisce un argomento prefisso, si ha l'opportunità di scegliere la modalità (anziché selezionare la modalità principale attualmente attiva).


Ho provato questo, ma penso che il buffer di memoria virtuale venga eliminato dopo aver chiuso emacs. Il buffer antigraffio originale no, si salva anche automaticamente. È giusto o mi sono perso qualcosa?
Vivi,

1
A meno che tu non faccia qualcosa di speciale, il *scratch*buffer originale non persiste per tutte le sessioni, né viene salvato quando esci da emacs. Prova a correre emacs -qper ottenere il comportamento standard, non modificato dal tuo file init.
François Févotte,

Interessante, non lo sapevo. Ho appena indagato su questo e ho scoperto che è una caratteristica di Aquamacs. Ho anche scoperto che Aquamacs viene fornito con la combinazione di tasti Command-N per creare un nuovo scratch in un altro frame (questo non persistente tra le sessioni).
Vivi,

2
A proposito, c'è un pacchetto su MELPA chiamato persistent-scratch che pretende di creare buffer scratch persistenti.
Vivi,

5

Penso che un modo semplice per ottenerlo sia semplicemente quello di eseguire M-x org-modequando si è nel *snatch*buffer e quindi abilitarlo org-modedirettamente. Questo può essere applicato per abilitare qualsiasi modalità principale.


Di gran lunga il modo più semplice.
user2699

Questo è sicuramente utile. Mi piace avere un buffer di memoria dedicato esclusivamente alla modalità org poiché uso spesso il buffer di memoria virtuale per altre cose.
Brian Fitzpatrick,

2

Prova questo:

  1. Cx b (digitare un nome per il nuovo buffer di memoria virtuale, ad esempio "asdf")
  2. Mx org-mode (cambia la modalità principale del buffer "asdf")

Quando si chiude questo buffer non si ottiene una query per salvarne il contenuto. Cioè hai un buffer di memoria adeguato. E il *scratch*buffer rimane intatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.