Comment éditer crontab directement dans emacs quand j'ai déjà ouvert emacs?

13

Je sais que je peux définir la variable EDITOR et éditer ma crontab avec emacs mais cela nécessite de démarrer le processus à partir d'un shell avec

$ crontab -e

Ma question est de savoir comment puis-je modifier directement mon crontab si je suis déjà dans emacs? J'ai essayé de démarrer eshell et d'exécuter crontab -e à partir de là, mais le terminal se plaint:

$ 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 l'utilisation de crontab dans eshell fonctionnait, ce serait un pas dans la bonne direction, mais ce n'est toujours pas exactement ce que j'espérais. Les tentatives d'exécution de crontab -e depuis un tampon de terme Mx dans emacs échouent également (au moins sur OpenBSD 5.6 avec emacs 24.3.1). Dans le cas idéal, il y aurait un mode crontab qui me permettrait de

Mx crontab

qui déclenche un mode majeur et m'a permis de faire les choses habituelles que je fais sur la ligne de commande avec crontab et de tout avoir lié aux touches. Je pensais qu'il y aurait un mode ou quelque chose pour ça, mais je n'ai pas eu beaucoup de chance pour en trouver un.

onclejamil
la source
Il y en a crontab-modedans MELPA, avez-vous essayé? (Je ne l'ai pas fait, donc je ne sais pas si cela fonctionne ou s'il fait ce que vous voulez).
wvxvw
Qu'en est-il de l'utilisation M-x termpour lancer un terminal pas si stupide?
Nsukami _
@wvxvw: Oui, j'ai d'abord fait une liste de packages Mx et j'ai trouvé ce mode, mais la description indique que c'est juste un mode de surbrillance qui est destiné à aider le gars qui l'a fait fonctionner avec ses trucs personnels qu'il garde sous rcs.
unclejamil
@Nsukami_: Cela peut fonctionner mais ce n'est pas vraiment ce que je recherche au final. Cela me maintient dans emacs, donc c'est certainement un pas dans la bonne direction et mieux que de quitter emacs, mais il semble qu'un bon mode pour crontab soit en ordre (quelque chose comme Mx crontab) qui tire mon crontab et a des touches liées à différentes choses que je fais habituellement avec des commutateurs sur la ligne de commande avec crontab.
unclejamil
@Nsukami_: J'ai mis à jour la question pour clarifier ce que je recherche en fonction de notre discussion ici dans les commentaires. BTW, merci pour la suggestion.
unclejamil

Réponses:

20

Vous pouvez essayer d'utiliser le with-editorpackage:

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

il exécutera crontab dans un sous-shell, en utilisant l'éditeur Emacs actuel comme éditeur.

Rémi
la source
Ha! Plutôt doux. Je viens de retirer le package avec l'éditeur et de l'essayer. Fonctionne comme un charme! Bon appel. J'attendrai un jour pour voir si quelqu'un a lancé un mode complet pour crontab et si personne ne revient avec quelque chose, je marquerai cela comme la réponse.
unclejamil