Cómo comentar una línea variable en una lista de variables locales


9

En un archivo de Python tengo

# Local Variables:
# python-shell-interpreter: "python3"
# python-shell-virtualenv-path: "~/.virtualenvs/datascience"
# leo-python-args-to-send: "-f fqanalysis.txt"
# End:

Durante un par de días quiero usar el archivo python sin el virtualenv especificado, por lo que me gustaría comentar la configuración de línea python-shell-virtualenv-path, de modo que la próxima vez que abra el archivo python en emacs python-shell-virtualenv-pathmantenga su valor global.

Lo intenté

# ;;python-shell-virtualenv-path: "~/.virtualenvs/datascience"

y

## python-shell-virtualenv-path: "~/.virtualenvs/datascience"

pero al abrir el archivo de Python siempre aparece el error

File mode specification error: (error "Malformed local variable line: ...)

¿Cómo comento la línea de variable local correctamente?


Cuando selecciono la línea que contiene # python-shell-virtualenv-path: "~/.virtualenvs/datascience"y aplico el comando comment-region, el resultado es # # python-shell-virtualenv-path: "~/.virtualenvs/datascience". No sé si es la forma correcta de comentar las variables locales.
Nombre

Respuestas:


7

Basado en una verificación rápida de C-hig (emacs) Specifying File Variables, estoy razonablemente seguro de que no puede.

Creo que tus opciones son:

  • Mueva el comentario fuera del bloque de variables locales.
  • Cambie la variable (p. Ej., Déle un prefijo similar DISABLED:) de modo que el valor se asigne simplemente a una variable que nada usa.

Editar:

Si no desea tener que aprobar un conjunto de DISABLED:foovariables safe-local-variable-values, puede adaptar el enfoque para aprovechar el hecho de que las entradas sucesivas se bloquean antes si se usa el mismo nombre de variable. Algo como:

# Local Variables:
# #: python-shell-interpreter: "python3"
# #: python-shell-virtualenv-path: "~/.virtualenvs/datascience"
# leo-python-args-to-send: "-f fqanalysis.txt"
# #: <comment>
# End:

Estos todavía no son comentarios, pero significa que solo tiene una única variable local llamada #(o \#en este caso) con el valor <comment>, y Emacs no lo consultará sobre las anteriores; por lo que podría volver a usar este enfoque en otros archivos y solo terminaría con una sola safe-local-variable-valuesentrada para todos esos valores 'comentados', siempre que esa #: <comment>entrada siempre sea la última.

(YMMV; esto solo se prueba ligeramente, y obviamente es una solución alternativa. Tenga en cuenta también que no necesita usar el carácter de comentario real, ya que en realidad es un nombre de variable, por lo que puede llamarlo como quiera, siempre que no sea probable que entre en conflicto con cualquier nombre de variable 'apropiado').

Podrías deshacerte de la necesidad de una #: <comment>entrada pero aún así evitar que te hagan preguntas si agregaste lo siguiente a tu configuración:

(put '\# 'safe-local-variable (lambda (_) t))

Que dice "TODOS los valores para la variable #son seguros.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.