Jak edytować crontab bezpośrednio w emacs, gdy mam już otwarty emacs?

13

Wiem, że mogę ustawić zmienną EDITOR i edytować mój plik crontab za pomocą emacsa, ale to wymaga uruchomienia procesu z powłoki z

$ crontab -e

Moje pytanie brzmi: jak mogę bezpośrednio zmodyfikować mój plik crontab, jeśli już jestem w emacsie? Próbowałem uruchomić uruchamiając eshell i stamtąd crontab -e, ale terminal narzeka:

$ 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

Jeśli użycie crontab w eshellu zadziałałoby, byłby to krok we właściwym kierunku, ale wciąż nie do końca to, na co liczyłem. Próby wykonania crontab -e z bufora terminów Mx w emacs również się nie powiodły (przynajmniej w OpenBSD 5.6 z emacsem 24.3.1). W idealnym przypadku byłby tryb crontab, który mi na to pozwolił

Mx Crontab

który uruchamia tryb główny i pozwalał mi robić zwykłe czynności, które robię w wierszu poleceń za pomocą crontab i mieć wszystko powiązane z klawiszami. Pomyślałem, że na pewno będzie jakiś tryb lub coś takiego, ale nie miałem szczęścia znaleźć go.

unclejamil
źródło
Jest crontab-modew MELPA, próbowałeś? (Nie zrobiłem tego, więc nie wiem, czy to działa, czy robi to, co chcesz).
wvxvw
Co powiesz M-x termna uruchomienie niezbyt głupiego terminalu?
Nsukami _
@wvxvw: Tak, najpierw zrobiłem pakiety list Mx i znalazłem ten tryb, ale opis wskazuje, że jest to tylko tryb wyróżniania, który ma pomóc facetowi, który sprawił, że działa z jego osobistymi rzeczami, które trzyma pod kontrolą.
unclejamil
@Nsukami_: To może działać, ale tak naprawdę nie o to mi chodzi. Utrzymuje mnie w emacsie, więc zdecydowanie jest to krok we właściwym kierunku i lepszy niż opuszczanie emacsa, ale wydaje się, że dobry tryb dla crontab jest w porządku (coś jak Mx crontab), który wyciąga mój crontab i ma klucze powiązane z różnymi rzeczami, które zwykle robię z przełącznikami w linii poleceń z crontab.
unclejamil
@Nsukami_: Zaktualizowałem pytanie, aby wyjaśnić, czego szukam na podstawie naszej dyskusji tutaj w komentarzach. BTW, dziękuję za sugestię.
unclejamil

Odpowiedzi:

20

Możesz spróbować użyć with-editorpakietu:

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

uruchomi crontab w podpowłoce, używając obecnego Emacsa jako edytora.

Rémi
źródło
Ha! Całkiem słodki. Właśnie ściągnąłem pakiet z edytorem i wypróbowałem go. Działa jak marzenie! Niezła rozmowa. Poczekam dzień, aby zobaczyć, czy ktoś uruchomił tryb pełnego włączenia dla crontab i jeśli nikt nic nie wróci, zaznaczę to jako odpowiedź.
unclejamil