Est-il possible de créer un tampon * scratch * en mode org?

13

En travaillant sur un document dans emacs, je me retrouve souvent à ouvrir un nouveau tampon, à faire quelque chose en mode org, à copier le contenu en mode org et à le coller dans mon document. J'avais l'habitude de créer un nouveau document en mode organisation chaque fois que je devais le faire. Maintenant, j'ai un fichier ~/.scratch.orgoù je garde mon travail.

Serait-il possible de créer un *org-scratch*tampon qui se comporte de façon analogue au *scratch*tampon?

Brian Fitzpatrick
la source
3
Y a-t-il quelque chose de gênant à faire M-x org-modelorsque vous êtes dans le *scratch*tampon?
xji
1
@XiangJi Je n'ai même pas pensé à faire ça. C'est une bonne idée.
Brian Fitzpatrick

Réponses:

11

Le mode principal initial pour le *Scratch*tampon est contrôlé par la variable initial-major-mode- la valeur doit être un symbole (ce qui, en termes simples, signifie mettre une citation unique devant le nom du mode principal): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

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

EDIT : Sur la base d'un commentaire de l'affiche originale, voici un exemple de fonction pour créer des tampons ne visitant pas les fichiers dans un ordre séquentiel avec le mode principal de 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))) ))))
liste des lois
la source
Serait-il alors possible d'avoir deux *Scratch*tampons?
Brian Fitzpatrick
J'ai ajouté un exemple de fonction qui crée de nouveaux tampons ne visitant pas les fichiers dans l'ordre numérique, et j'ai inclus une org-modedésignation. Le nom peut être changé de hello-worldtout ce que l'utilisateur désire et qui est reconnu par le système d'exploitation - par exemple, Windows n'aime pas les astrisques.
lawlist
Très cool. Merci d'avoir regarder ceci!
Brian Fitzpatrick
Je suis heureux d'avoir pu aider. J'ai décidé de jeter le résultat et d'afficher le tampon d'un seul coup - la fonctionnalité est la même, mais la fonction semble un peu plus compacte de cette façon. :)
lawlist
11

Il existe une extension appelée scratch, qui permet de créer des tampons de travail spécifiques au mode. Il est disponible auprès de MELPA, vous devriez donc pouvoir l'installer facilement.

Avec ce package installé, lorsque vous êtes dans un org-modetampon, vous pouvez exécuter M-xscratchpour obtenir un tampon de travail org-mode.

Si vous donnez un argument préfixe, vous avez la possibilité de choisir le mode (au lieu de sélectionner le mode principal actuellement actif).

François Févotte
la source
J'ai essayé mais je pense que le tampon de travail est supprimé après avoir quitté emacs. Le tampon de travail d'origine ne le fait pas, il se sauvegarde automatiquement aussi. Est-ce vrai ou ai-je raté quelque chose?
Vivi
1
À moins que vous ne fassiez quelque chose de spécial, le *scratch*tampon d' origine ne persiste pas entre les sessions et n'est pas enregistré lorsque vous quittez emacs. Essayez de courir emacs -qpour obtenir le comportement standard, non modifié par votre fichier init.
François Févotte
Intéressant, je ne le savais pas. Je viens d'enquêter sur cela et j'ai découvert que c'est une caractéristique d'Aquamacs. J'ai également découvert que Aquamacs est livré avec le raccourci clavier Command-N pour créer un nouveau scratch dans une autre image (celle-ci n'est pas persistante entre les sessions).
Vivi
2
Soit dit en passant, il existe sur MELPA un package appelé persistent-scratch qui prétend créer des tampons de travail persistants.
Vivi
5

Je pense qu'un moyen simple pour y parvenir est de simplement exécuter M-x org-modelorsque vous êtes dans le *snatch*tampon, et donc d'activer org-modedirectement. Cela peut être appliqué à l'activation de n'importe quel mode majeur.

xji
la source
Le moyen le plus simple de loin.
user2699
C'est certainement utile. J'aime avoir un tampon de travail exclusivement dédié au mode org, car j'utilise souvent le tampon de travail pour d'autres choses.
Brian Fitzpatrick
2

Essaye ça:

  1. Cx b (tapez un nom pour votre nouveau tampon de travail, par exemple "asdf")
  2. Mx org-mode (changer le mode principal du tampon "asdf")

Lors de la fermeture de ce tampon, vous ne recevrez pas de requête pour enregistrer son contenu. C'est-à-dire que vous obtenez un tampon de travail approprié. Et le *scratch*tampon reste intact.

undostres
la source