Как редактировать crontab непосредственно в emacs, когда у меня уже есть открытый emacs?

13

Я знаю, что могу установить переменную EDITOR и отредактировать свой crontab с помощью emacs, но это требует запуска процесса из оболочки с

$ crontab -e

У меня вопрос, как я могу напрямую изменить мой crontab, если я уже в emacs? Я попытался запустить запуск eshell и запустить crontab -e оттуда, но терминал жалуется:

$ 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

Если бы использование crontab в eshell работало, это было бы шагом в правильном направлении, но это все-таки не совсем то, на что я надеялся. Попытки выполнить crontab -e из буфера терминов Mx в emacs также терпят неудачу (по крайней мере, в OpenBSD 5.6 с emacs 24.3.1). В идеальном случае был бы режим crontab, который позволил бы мне

Mx crontab

это запускает основной режим и позволяет мне делать обычные вещи, которые я делаю в командной строке с помощью crontab и привязывать все это к ключам. Я подумал наверняка, что будет какой-то режим или что-то для этого, но мне не повезло найти его.

unclejamil
источник
Есть crontab-modeв MELPA, ты пробовал это? (Я не сделал, поэтому я не знаю, работает ли он или делает то, что вы хотите).
wvxvw
Как насчет использования M-x termдля запуска не так глупого терминала?
Nsukami _
@wvxvw: Да, я сначала сделал список Mx-пакетов и обнаружил этот режим, но описание указывает, что это просто режим выделения, который предназначен, чтобы помочь парню, который заставил его работать с его личными вещами, которые он держит под rcs.
Unclejamil
@Nsukami_: Это может сработать, но это не совсем то, что я хочу в конце. Это удерживает меня в Emacs, так что это определенно шаг в правильном направлении и лучше, чем выход из Emacs, но кажется, что хороший режим для crontab в порядке (что-то вроде Mx crontab), который тянет мой crontab и имеет ключи, привязанные к различным вещам, которые я обычно делаю с переключателями в командной строке с помощью crontab.
Unclejamil
@Nsukami_: Я обновил вопрос, чтобы уточнить, что я ищу, основываясь на нашем обсуждении здесь в комментариях. Кстати, спасибо за предложение.
unclejamil

Ответы:

20

Вы можете попробовать использовать with-editorпакет:

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

он будет запускать crontab в подоболочке, используя текущий Emacs в качестве редактора.

Рэй
источник
Ха! Довольно мило. Просто вытащил пакет с редактором и опробовал его. Работает как шарм! Хороший звонок. Я подожду день, чтобы узнать, включил ли кто-нибудь режим полного включения crontab, и если никто не вернется с чем-либо, я отмечу это как ответ.
unclejamil