recientemente Empecé a usar Emacs como un IDE de Python, y no es muy intuitivo ... El problema con el que estoy luchando ahora es cómo pasar argumentos de línea de comando al inferior shell Python cuando el buffer se evalúa con Cc Cc. Gracias por la ayuda.Emacs: pasar argumentos al shell de Python inferior durante la evaluación del buffer
Respuesta
Esto no parece ser fácilmente posible; el proceso inferior administrado por el módulo python.el
está diseñado para persistir en muchas invocaciones de python-send-buffer
(y amigos). Una solución que he encontrado es escribir su propia función que establece sys.argv
programación desde dentro del proceso inferiores:
(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))))
ejecutar esta función en su memoria intermedia *scratch*
y/o guardarlo en su archivo .emacs
, entonces, si quiero, agrégalo a una secuencia de teclas conveniente. C-c C-a
no parece ser utilizado por python-mode
, así que quizás:
(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args)
El comando le pedirá que los argumentos a utilizar, a continuación, copiar el búfer de origen en un búfer temporal, anteponiendo con un fragmento de código que establece sys.argv
a la lista de argumentos que suministró, y finalmente llamará al python-send-buffer
.
El código anterior simplemente dividirá ingenuamente la cadena que escriba en el espacio en blanco, por lo que si necesita proporcionar argumentos que tengan espacios en blanco, necesitará un algoritmo más sofisticado.
- 1. IPython en Emacs. Evaluación rápida del código
- 2. Emacs: shell-python de modo inferior aparece "rezagado"
- 3. buffer de evaluación en emacs python-mode en el host remoto
- 4. Emacs buffer-local font
- 5. Deshabilitar Emacs * Mensajes * buffer
- 6. Python Shell en Emacs 24?
- 7. Modo Emacs Shell: ¿cómo enviar la región a la shell?
- 8. ¿Cómo pasar argumentos del script del shell wrapper a la aplicación Java?
- 9. pasar estructuras como argumentos durante el uso de pthread_create()
- 10. Columna de la posición del buffer en Emacs Lisp?
- 11. ¿Cómo paso argumentos al script de shell?
- 12. Cómo salir del shell de emacs
- 13. La evaluación perezosa de argumentos suministrados
- 14. Defadvice de Emacs en la función de modo python
- 15. pasar argumentos entre scripts de shell pero conservar las comillas
- 16. Analizando los argumentos del script de shell
- 17. Cómo pasar argumentos de variable del script bash al script python
- 18. Emacs guardado automático en el buffer del interruptor
- 19. Shell de Python personalizado para Emacs python-mode
- 20. Rieles: ¿Puedes pasar argumentos al método after_create?
- 21. ¿Cómo pasar argumentos adicionales a python decorator?
- 22. Contexto de OpenGL dentro del buffer de Emacs
- 23. ¿Cómo puedo obtener el buffer de compilación en la parte inferior en lugar de a la derecha en Emacs 23?
- 24. ¿Puedo modificar el color del mini buffer de emacs?
- 25. emacs compile buffer auto close?
- 26. Detener la apertura de tex-shell al compilar Latex desde Emacs
- 27. ¿Cómo se puede mantener el buffer del * shell command output * en segundo plano?
- 28. Emacs: buffer de desplazamiento no es el punto
- 29. Ajuste de línea dentro de la compilación * de emacs * buffer
- 30. Emacs: Terminal vs shell?
Gracias Sean, entendí la idea. Lo hace el truco. En este caso, también puedo pasar los argumentos al establecer directamente la variable sys.argv antes de llamar a la función principal. – Sammy
+1 para la gran idea. –
si obtiene este error 'progn: la definición de función del símbolo es nula: python-send-buffer' intente cambiar' python-send-buffer' por 'python-shell-send-buffer'. – boclodoa