actualmente estoy usando el siguiente código para conectar flymake y pyflakes en emacs:¿Se puede crear el archivo temporal de flymake en el directorio temporal del sistema?
(defun flymake-create-temp-in-system-tempdir (filename prefix)
(make-temp-file (or prefix "flymake")))
y luego me pase esta función para flymake-init-create-temp-buffer-copy
. (Tomado de http://hustoknow.blogspot.com/2010/09/emacs-and-pyflakes-using-tmp-directory.html).
Este código funcionó bien hasta ayer. Cuando vuelva a ciertos archivos de Python, me sale el siguiente error:
switched OFF Flymake mode for buffer admin.py due to fatal status
CFGERR, warning Configuration error has occured while running
(pyflakes ../../../../../../../tmp/flymake28459SVv)
qué está pasando flymake lo que parece ser el nombre de archivo erróneo pyflakes? Espero que pase algo como "/ tmp/efe234234" y no he modificado ninguna de las configuraciones del directorio tmp.
No recuerdo que emacs se haya actualizado recientemente para Ubuntu y no se puede pensar en nada que pueda haber causado un error (los archivos .emacs están versionados).
El único problema que puedo pensar es que este es un directorio fuertemente anidado enlazado a un directorio en mi ~/directorio de Dropbox, pero esto no sucede con otros enlaces simbólicos de una manera similar.
¿Cómo puedo solucionar este problema?
ACTUALIZACIÓN
he hecho algunas depuración y ahora veo que no está pasando el camino correcto como argumento. Necesita un directorio padre más insertado en la ruta para que funcione, lo que me hace pensar que se está arruinando debido a los enlaces simbólicos.
Aquí hay un ejemplo de sesión shell para mostrar a qué me refiero. Estoy haciendo esto desde el directorio relativa correcta:
$ pyflakes ../../../../../tmp/flymake13382xHi
../../../../../tmp/flymake13382xHi: No such file or directory
Esa es la flymake comando está intentando ejecutar. Si lo cambio:
$ pyflakes ../../../../../../tmp/flymake13382xHi
No obtengo salida (como se esperaba). Tenga en cuenta el extra ".." en la ruta.
¿Cómo puedo hacer que flymake pase un camino absoluto en lugar de estos locos caminos relativos?
ACTUALIZACIÓN 2
He conseguido que todo funcione. Básicamente existe esta función:
(defun flymake-pyflakes-init()
; Make sure it's not a remote buffer or flymake would not work
(when (not (subsetp (list (current-buffer)) (tramp-list-remote-buffers)))
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-in-system-tempdir))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pyflakes" (list temp-file)))))
En la última parte que tenía que cambiar el argumento de list
a partir local-file
a temp-file
porque local-file
fue la ruta relativa loca que no quería. ¿Por qué el autor de ese fragmento usó local-file
en primer lugar?
Gracias, Ryan
Muchas gracias por esto. Estoy de vacaciones ahora, pero cuando regrese lo probaré. –