Was ist die aktuelle "Best Practice" für dauerhafte Einstellungen für ein Plugin?


7

Ich habe ein Plugin (ein Unite-Submodul), das extrem große Textdateien nach unten filtert, um ein hilfreiches 'Inhaltsverzeichnis' zu erstellen. Ich möchte dem Benutzer die Möglichkeit geben, viele der Filter zu aktivieren / deaktivieren ... und ich möchte, dass diese Einstellung bei jedem vim-Aufruf erhalten bleibt. (Sofortige Updates für gleichzeitige Sitzungen sind nicht unbedingt erforderlich.)

Gibt es einen in vim eingebauten Mechanismus dafür? Oder muss ich eine "Punktdatei" im $ HOME des Benutzers erstellen und verwalten? Oder gibt es eine akzeptierte Standardmethode, um damit umzugehen?

BEARBEITEN: Ich kann nicht einfach zulassen, dass der Benutzer eine globale Variable in der vimrc festlegt, da die Liste der Optionen derzeit mehrere hundert Einträge umfasst und die aktuelle Schnittstelle einfach "Typ d mit geöffnetem Index" ist, um sie aus der Liste zu entfernen .


Ich bin mir bewusst , dass für die Benutzer-Variablen können Sie sicherstellen , dass viminfoenthalten !, und dann bestimmte Arten von g: Variablen persistent im viminfo Datei gespeichert werden, aber es ist nicht sinnvoll für die meisten Plugins viminfo auf Benutzer zu ändern.
Jkerian

Ich bin nicht sehr gut informiert über dieses Thema, aber ich denke, dass alle Plugins, die ich verwendet habe, gerade definiert g:boolVariableund dann den Benutzer angewiesen haben, es in seinem eigenen zu setzen vimrc. Dann können Sie einfach die vom Benutzer festgelegten Optionen überprüfen und von dort aus arbeiten.
Tumbler41

Antworten:


6

Eine Möglichkeit, dies zu tun, besteht darin, dass Ihr Plugin eine globale Variable definiert, in der der Pfad zu dieser bestimmten Datei "Persistente Einstellungen / aktivierte Filter" gespeichert ist. Dies ähnelt der Funktionsweise verschiedener Plugins, die einige Werte zwischenspeichern müssen. Die Dokumentation könnte also so aussehen:

g:myplugin_enabled_filters_path     *g:myplugin_enabled_filters_path*
    This variable points to the file that stores enabled filters for
    <myplugin> etc.

    Default value is "$HOME/.myplugin.filters"

Mit der $HOMEVariablen können Sie einen Standardwert für diesen Pfad erstellen und Ihre aktivierten Filter dort speichern. Die Benutzer können den Pfad ändern, indem sie die obige Variable in ihrem ändern vimrc. Ich gehe davon aus, dass Sie beabsichtigen, einige Mittel (Funktionen, Befehle, Tastenzuordnungen) anzubieten, um verschiedene Filter im laufenden Betrieb zu aktivieren / deaktivieren, während Sie Ihr Plugin verwenden (Filter, an die Sie sich in dieser Datei erinnern), damit der Benutzer dies nicht muss direkt mit ihnen umgehen. Andernfalls ist es einfacher, den Benutzer eine globale Variable ändern zu lassen, in der eine Liste / ein Diktat usw. aktivierter Filter gespeichert ist vimrc(die durch Speichern der Variablen "bestehen bleiben" können ) und diese stattdessen zu lesen (gemäß dem obigen Kommentar von Tumbler41 ).

Für weitere Details können Sie folgen, wie g: neocomplcache_temporary_dir im Shougo- neocomplcache.vimPlugin definiert und verwendet wird .

Sie können aber auch leicht serialize (Speichern / Wiederherstellen) jede vim Variable (auch ein Wörterbuch) in dieser Datei durch so etwas wie mit dieser .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.