Wie bearbeite ich Crontab direkt in Emacs, wenn ich bereits Emacs geöffnet habe?

13

Ich weiß, dass ich die EDITOR-Variable setzen und meine crontab mit emacs bearbeiten kann, aber dazu muss der Prozess von einer Shell mit gestartet werden

$ crontab -e

Meine Frage ist, wie ich meine Crontab direkt ändern kann, wenn ich mich bereits in Emacs befinde. Ich habe versucht, eshell zu starten und crontab -e von dort aus auszuführen, aber das Terminal beklagt sich:

$ 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

Wenn die Verwendung von Crontab in Eshell funktioniert, wäre dies ein Schritt in die richtige Richtung, aber es ist immer noch nicht genau das, was ich mir erhofft hatte. Versuche, crontab -e aus einem Mx-Term-Puffer in Emacs auszuführen, schlagen ebenfalls fehl (zumindest unter OpenBSD 5.6 mit Emacs 24.3.1). Im Idealfall würde es einen Crontab-Modus geben, der es mir erlaubt

Mx Crontab

das löst einen Hauptmodus aus und erlaubt mir, die üblichen Sachen zu machen, die ich an der Kommandozeile mit crontab mache, und alles an Schlüssel gebunden zu haben. Ich war mir sicher, dass es dafür einen Modus oder etwas geben würde, aber ich hatte nicht viel Glück, einen zu finden.

Onkeljamil
quelle
Es gibt eine crontab-modein MELPA, hast du es versucht? (Ich habe nicht, also weiß ich nicht, ob es funktioniert oder ob es tut, was Sie wollen).
wvxvw
Was ist mit M-x termzum Starten eines nicht so dummen Terminals?
Nsukami _
@wvxvw: Ja, ich habe zuerst ein Mx-Listenpaket erstellt und diesen Modus gefunden, aber die Beschreibung gibt an, dass dies nur ein Hervorhebungsmodus ist, der dem Typen helfen soll, der es mit seinen persönlichen Dingen zum Laufen gebracht hat, die er unter RCs aufbewahrt.
Onkeljamil
@Nsukami_: Das kann funktionieren, aber es ist nicht wirklich das, wonach ich am Ende suche. Es hält mich in Emacs, also ist es definitiv ein Schritt in die richtige Richtung und besser als Emacs zu verlassen, aber es scheint, als ob ein guter Modus für Crontab in Ordnung ist (so etwas wie Mx Crontab), der meine Crontab zieht und Schlüssel hat, die an verschiedene Dinge gebunden sind, die ich normalerweise tue mit Schaltern in der Befehlszeile mit Crontab.
Onkeljamil
@Nsukami_: Ich habe die Frage aktualisiert, um zu verdeutlichen, wonach ich aufgrund unserer Diskussion hier in den Kommentaren suche. BTW, danke für den Vorschlag.
Onkeljamil

Antworten:

20

Sie könnten versuchen, das with-editorPaket zu verwenden:

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

crontab wird in einer Subshell ausgeführt, wobei der aktuelle Emacs als Editor verwendet wird.

Rémi
quelle
Ha! Sehr süß. Einfach das with-editor-Paket runterziehen und ausprobieren. Klappt wunderbar! Netter Anruf. Ich werde einen Tag warten, um zu sehen, ob jemand einen Voll-Ein-Modus für crontab aktiviert hat, und wenn niemand mit irgendetwas zurückkommt, werde ich dies als Antwort markieren.
Onkeljamil