Wie eine Variablenzeile in einer lokalen Variablenliste auskommentiert wird

9

In einer Python-Datei habe ich

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

Für ein paar Tage will ich die Python - Datei ohne die Angabe virtualenv verwenden, so würde ich gerne kommentieren Sie die Zeile Einstellung python-shell-virtualenv-path, so dass ich das nächste Mal die Python - Datei in Emacs geöffnet python-shell-virtualenv-pathhält seinen globalen Wert.

Ich habe es versucht

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

und

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

Beim Öffnen der Python-Datei wird jedoch immer der Fehler angezeigt

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

Wie kommentiere ich die lokale Variablenzeile richtig aus?

Halloleo
quelle
Wenn ich die Zeile mit # python-shell-virtualenv-path: "~/.virtualenvs/datascience"dem Befehl auswähle und anwende comment-region, ist das Ergebnis # # python-shell-virtualenv-path: "~/.virtualenvs/datascience". Ich weiß nicht, ob es der richtige Weg ist, lokale Variablen auskommentieren zu können.
Name

Antworten:

7

Aufgrund einer kurzen Überprüfung C-hig (emacs) Specifying File Variablesbin ich mir ziemlich sicher, dass Sie dies nicht können.

Ich denke, Ihre Optionen sind:

  • Verschieben Sie den Kommentar außerhalb des lokalen Variablenblocks.
  • Ändern Sie die Variable (z. B. geben Sie ihr ein Präfix wie DISABLED:), sodass der Wert einfach einer Variablen zugewiesen wird, die nichts verwendet.

Bearbeiten:

Wenn Sie nicht mehrere DISABLED:fooVariablen genehmigen möchten safe-local-variable-values, können Sie den Ansatz anpassen, um die Tatsache zu nutzen, dass aufeinanderfolgende Einträge frühere Einträge überfrachten, wenn derselbe Variablenname verwendet wird. Etwas wie:

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

Dies sind immer noch keine Kommentare, aber es bedeutet, dass Sie nur eine einzige lokale Variable mit dem Namen #(oder \#in diesem Fall) mit dem Wert <comment>haben und Emacs Sie nicht nach den früheren abfragt. Sie können diesen Ansatz also in anderen Dateien wiederverwenden und nur einen einzigen safe-local-variable-valuesEintrag für alle derartigen "kommentierten" Werte erhalten, solange dieser #: <comment>Eintrag immer an letzter Stelle steht.

(YMMV; dies ist nur leicht getestet und stellt offensichtlich eine Hack-Problemumgehung dar. Beachten Sie auch, dass Sie das eigentliche Kommentarzeichen nicht verwenden müssen, da es sich tatsächlich um einen Variablennamen handelt, sodass Sie ihn so nennen können, wie Sie möchten, solange dies nicht der Fall ist wahrscheinlich mit einem 'richtigen' Variablennamen in Konflikt stehen.)

Sie könnten auf die Notwendigkeit eines #: <comment>Eintrags verzichten, aber dennoch keine Fragen stellen, wenn Sie Ihrer Konfiguration Folgendes hinzufügen:

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

Darin heißt es: "ALLE Werte für die Variable #sind sicher.

Phils
quelle