недавно я начал использовать Emacs в качестве IDE Python и этого не совсем интуитивный... Проблема, с которой я борюсь прямо сейчас, состоит в том, как передать параметры командной строки нижней оболочке Python, когда буфер оценен с C-c C-c. Спасибо за справку.
Это не представляется возможным; ущербный процесс, управляемый модулем python.el
, предназначен для сохранения множества вызовов python-send-buffer
(и его друзей). Одно из решений, которое я нашел - написать собственную функцию, которая устанавливает sys.argv
программно изнутри нижестоящего процесса:
(defun python-send-buffer-with-my-args (args)
(interactive "sPython arguments: ")
(let ((source-buffer (current-buffer)))
(with-temp-buffer
(insert "import sys; sys.argv = '''" args "'''.split()\n")
(insert-buffer-substring source-buffer)
(python-send-buffer))))
Выполните эту функцию в вашем *scratch*
буфере и/или сохраните ее в вашем .emacs
файле, затем, если хотите, привяжите ее к удобной последовательности клавиш. C-c C-a
, похоже, не используется python-mode
, поэтому, возможно:
(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args)
Команда запросит у вас аргументы для использования, затем скопирует ваш исходный буфер во временный буфер, дополнив его фрагментом кода, который установит sys.argv
в список аргументов, которые вы предоставили, и, наконец, вызовет python-send-buffer
.
Приведенный выше код просто наивно разделит введенную вами строку на пробельные символы, поэтому если вам нужно предоставить аргументы, содержащие пробелы, вам понадобится более сложный алгоритм.