¿Es posible crear un buffer org-mode * scratch *?

13

Mientras trabajo en un documento en emacs, a menudo me encuentro abriendo un nuevo búfer, haciendo algo en modo org, copiando el contenido del modo org y pegándolo en mi documento. Solía ​​crear un nuevo documento en modo organización cada vez que necesitaba hacer esto. Ahora tengo un archivo ~/.scratch.orgdonde guardo mi trabajo.

¿Sería posible crear un *org-scratch*búfer que se comportara de manera análoga al *scratch*búfer?

Brian Fitzpatrick
fuente
3
¿Hay algo inconveniente en hacerlo M-x org-modecuando estás en el *scratch*búfer?
xji
1
@XiangJi Ni siquiera pensé en hacer eso. Es una gran idea.
Brian Fitzpatrick

Respuestas:

11

El modo principal inicial para el *Scratch*búfer está controlado por la variable initial-major-mode: el valor debe ser un símbolo (que en términos simples significa poner una comilla simple delante del nombre del modo mayor): http: //www.gnu. org / software / emacs / manual / html_node / elisp / Auto-Major-Mode.html

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

EDITAR : Basado en un comentario del póster original, aquí hay una función de muestra para crear buffers que no visitan archivos en orden secuencial con el modo 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))) ))))
lista de leyes
fuente
Entonces, ¿sería posible tener dos *Scratch*amortiguadores?
Brian Fitzpatrick
Agregué una función de muestra que crea nuevos búferes que no visitan archivos en orden numérico, e incluí una org-modedesignación. El nombre se puede cambiar de hello-worldcualquier cosa que el usuario desee que el sistema operativo reconozca, por ejemplo, a Windows no le gustan los astrisks.
leyes
Muy genial. Gracias por mirar esto!
Brian Fitzpatrick
Estoy feliz de haber podido ayudar. Decidí lanzar el resultado y mostrar el búfer de un solo golpe: la funcionalidad es la misma, pero la función se ve un poco más compacta de esta manera. :)
leyes
11

Hay una extensión llamada scratch, que permite crear buffers de scratch específicos del modo. Está disponible en MELPA, por lo que debería poder instalarlo fácilmente.

Con este paquete instalado, cuando está en un org-modebúfer, puede ejecutar M-xscratchpara obtener un búfer de memoria virtual org-mode.

Si da un argumento de prefijo, tiene la oportunidad de elegir el modo (en lugar de seleccionar el modo principal actualmente activo).

François Févotte
fuente
Intenté esto, pero creo que el búfer de memoria virtual se elimina después de salir de emacs. El búfer de scratch original no lo hace, también se guarda automáticamente. ¿Es correcto o me perdí algo?
Vivi
1
A menos que haga algo especial, el *scratch*búfer original no persiste en las sesiones, ni se guarda cuando sale de emacs. Intente ejecutar emacs -qpara obtener el comportamiento estándar, no modificado por su archivo init.
François Févotte
Interesante, no lo sabía. Acabo de investigar esto y descubrí que es una característica de Aquamacs. También descubrí que Aquamacs viene con la combinación de teclas Command-N para crear un nuevo scratch en otro marco (este no es persistente en las sesiones).
Vivi
2
Por cierto, hay un paquete en MELPA llamado scratch persistente que dice crear buffers de scratch persistentes.
Vivi
5

Creo que una forma simple de lograrlo es simplemente ejecutar M-x org-modecuando estás en el *snatch*búfer, y así habilitarlo org-modedirectamente. Esto se puede aplicar para habilitar cualquier modo principal.

xji
fuente
La forma más sencilla con diferencia.
user2699
Esto es ciertamente útil. Me gusta tener un buffer de scratch dedicado exclusivamente al modo org ya que a menudo uso el buffer de scratch para otras cosas.
Brian Fitzpatrick
2

Prueba esto:

  1. Cx b (escriba un nombre para su nuevo búfer de memoria virtual, por ejemplo, "asdf")
  2. Mx org-mode (cambiar el modo principal del búfer "asdf")

Al cerrar este búfer, no recibirá una consulta para guardar su contenido. Es decir, obtienes un búfer de scratch adecuado. Y el *scratch*búfer permanece intacto.

undostres
fuente