¿Cómo editar crontab directamente dentro de emacs cuando ya tengo abierto emacs?

13

Sé que puedo configurar la variable EDITOR y editar mi crontab con emacs, pero eso requiere comenzar el proceso desde un shell con

$ crontab -e

Mi pregunta es ¿cómo puedo modificar directamente mi crontab si ya estoy dentro de emacs? Intenté ejecutar eshell y ejecutar crontab -e desde allí, pero el terminal se queja:

$ crontab -e
emacs: Terminal type "dumb" is not powerful enough to run Emacs.
It lacks the ability to position the cursor.
If that is not the actual type of terminal you have,
use the Bourne shell command `TERM=... export TERM' (C-shell:
`setenv TERM ...') to specify the correct type.  It may be necessary
to do `unset TERMINFO' (C-shell: `unsetenv TERMINFO') as well.
/usr/bin/crontab: no changes made to crontab

Si usar crontab en eshell funcionó, sería un paso en la dirección correcta, pero todavía no es exactamente lo que esperaba. Los intentos de ejecutar crontab -e desde un búfer de términos Mx en emacs también fallan (al menos en OpenBSD 5.6 con emacs 24.3.1). En el caso ideal, habría un modo crontab que me permitiera

Mx crontab

eso activa un modo principal y me permitió hacer las cosas habituales que hago en la línea de comandos con crontab y tener todo vinculado a las teclas. Pensé con seguridad que habría un modo o algo para esto, pero no he tenido mucha suerte en encontrar uno.

unclejamil
fuente
Hay un crontab-modeMELPA, ¿lo intentaste? (No lo hice, así que no sé si funciona o si hace lo que quieres).
wvxvw
¿Qué pasa con el uso M-x termpara lanzar una terminal no tan tonta?
Nsukami _
@wvxvw: Sí, primero hice una lista de paquetes Mx y encontré ese modo, pero la descripción indica que este es solo un modo de resaltado que está destinado a ayudar al tipo que lo hizo trabajar con sus cosas personales que mantiene bajo rcs.
unclejamil
@Nsukami_: Eso puede funcionar, pero al final no es lo que busco. Me mantiene en emacs, así que definitivamente es un paso en la dirección correcta y mejor que dejar emacs, pero parece que es un buen modo para crontab (algo así como Mx crontab) que tira de mi crontab y tiene teclas vinculadas a diferentes cosas que suelo hacer. con interruptores en la línea de comando con crontab.
unclejamil
@Nsukami_: He actualizado la pregunta para aclarar lo que estoy buscando en base a nuestra discusión aquí en los comentarios. Por cierto, gracias por la sugerencia.
unclejamil

Respuestas:

20

Puedes intentar usar el with-editorpaquete:

(defun crontab-e ()
    "Run `crontab -e' in a emacs buffer."
    (interactive)
    (with-editor-async-shell-command "crontab -e"))

ejecutará crontab en una subshell, usando el Emacs actual como editor.

Rémi
fuente
¡Decir ah! Muy dulce. Solo bajé el paquete con el editor y lo probé. ¡Funciona de maravilla! Buena llamada Esperaré un día para ver si alguien ha activado un modo completo para crontab y si nadie regresa con nada, lo marcaré como la respuesta.
unclejamil