2013-07-16 7 views
6

Wenn PHP-Dateien Bearbeitung Ich möchte Hilfe-Dateien aus zwei Quellen verwenden:Wie benutze ich sowohl pman als auch benutzerdefinierte Hilfedateien in Vim mit dem Viewdoc-Plugin?

  • vim Hilfedateien in /etc/vim/bundle/yii-api-vim/doc/ von here.
  • PHP Mann Seiten mit pman

Wenn es keine Hilfe von den Hilfedateien verfügbar ist sollte es pman versuchen.

Die Hilfe des viewdoc Plugin behauptet, dass

Sie mehrere Dokumentationsquellen für denselben Dateityp haben kann, und wählen, welche sollte man on-the-fly verwendet werden.

Aber es erklärt nicht, wie man das macht. Die einzige Funktion, die sich nähert, sind Handler für einen bestimmten Dateityp, wie ViewDoc_{filetype}(topic, filetype, synid, have_context). Aber ich weiß nicht, wie man eine solche Funktion implementiert.

Offene Fragen sind für mich:

  • Wie kann ich innerhalb dieser Funktion überprüfen, ob eine *.txt Datei in meinem speziellen Verzeichnis vorhanden ist?
  • Was soll ich zurückgeben, um viewdoc eine solche Hilfedatei zu öffnen, wenn es existiert?
  • Was soll ich zurückgeben, um viewdoc öffnen Sie eine pman Seite für eine normale PHP-Funktion?

Es wäre hilfreich, ein Beispiel für eine solche Funktion zu sehen.

+0

Was haben Sie versucht? Wie ist es gescheitert? – romainl

+0

Ich habe nichts versucht, weil a) ich bin nicht zuversichtlich in vimscript und b) aus dem Handbuch würde ich nicht einmal wissen, was ich zurückgeben soll, so dass es meine Hilfedateien in meinem spezifischen Verzeichnis öffnet. –

+1

Fragen Sie vielleicht nach Beispielen im [issue tracker] (https://code.google.com/p/vim-plugin-viewdoc/issues/list). Ich glaube nicht, dass genug Leute dieses Plugin benutzt haben, um ein Beispiel zu schreiben. – FDinoff

Antwort

3

Ich bin kein Experte für Vim-Scripting, also ist dies vielleicht keine ideale Lösung, aber das hat bei mir funktioniert.

Erstellen Sie zunächst eine benutzerdefinierte viewdoc Handler in der viewdoc_pman.vim-Datei (die in der ~/.vim/bundle/viewdoc/plugin/ Verzeichnis gefunden werden können, wenn Sie die empfohlene Erreger Installation verwenden).

function ViewDoc_pman_custom(topic, filetype, synid, ctx) 
    let l:tagpath = '/etc/vim/bundle/yii-api-vim/doc/tags' 
    let l:shell = printf('grep %s %s', shellescape(a:topic,1), l:tagpath) 
    let l:output = system(l:shell) 

    if !v:shell_error 
    return g:ViewDoc_help(a:topic, a:filetype, a:synid, a:ctx) 
    else 
    let l:ViewDoc_pman_old = function('ViewDoc_pman') 
    return l:ViewDoc_pman_old(a:topic, a:filetype, a:synid, a:ctx) 
    endif 
endfunction 

Diese Funktion verwendet grep für die angegebenen Thema Zeichenfolge im yii-api-vim-Tags-Datei zu suchen. Wenn es dort gefunden wird, wird der Befehl einfach an den Standard-Handler ViewDoc_help übergeben (vorausgesetzt, Sie haben die yii-api-vim Dokumentation bereits installiert, damit sie mit der Standardhilfe ordnungsgemäß funktioniert).

Wenn grep nichts finden, dann fällt es wieder die alte PHP-Handler in der ViewDoc_pman Funktion aufrufen. Beachten Sie, dass wir g: ViewDoc_pman nicht direkt aufrufen können, da dies eine Variable ist, die wir gerade überschreiben. Wir müssen eine Handle für die alte Funktion mit function('ViewDoc_pman') bekommen und rufen Sie stattdessen.

Schließlich müssen Sie diese beiden Zeilen finden:

let g:ViewDoc_pman = function('ViewDoc_pman') 
let g:ViewDoc_php = function('ViewDoc_pman') 

und ersetzen sie durch diese beiden:

let g:ViewDoc_pman = function('ViewDoc_pman_custom') 
let g:ViewDoc_php = function('ViewDoc_pman_custom') 

Dies zwingt alle Anfragen PHP-Dokumentation auf unserer neuen benutzerdefinierten Handler eher weitergeleitet werden als die alte ViewDoc_pman Funktion.

Wenn Sie nicht lieber die viewdoc_pman.vim Datei bearbeiten, können Sie die viewdoc Handler in Ihrer .vimrc Datei stattdessen setzen. Dann setzen die g: ViewDoc_pman und g: ViewDoc_php Variablen, werden Sie die folgenden Zeilen hinzufügen müssen:

autocmd VimEnter * let g:ViewDoc_pman = function('ViewDoc_pman_custom') 
autocmd VimEnter * let g:ViewDoc_php = function('ViewDoc_pman_custom') 

Die autocmd VimEnter die Zuordnungen zwingt zu geschehen, nachdem alle Plugins geladen wurden, sonst diejenigen Variablen würden nur vom Plugin überschrieben und Ihr benutzerdefinierter Handler würde nie aufgerufen werden.

+0

Danke, diese Lösung funktioniert wirklich! Aber es erfordert, die Plugin-Dateien zu ändern, was ich vermeiden möchte. Laut der Hilfe sollte es auch funktionieren, eine "ViewDoc_php" Funktion in Ihrem '.vimrc' zu erstellen (siehe [hier] (https://github.com/powerman/vim-plugin-viewdoc/blob/master/doc/viewdoc) .txt # L378)). Das funktionierte für mich überhaupt nicht: Jede Funktion in meiner '.vimrc' wurde ignoriert. Hat das irgendwie für dich funktioniert? –

+0

Ich habe kurz versucht, den Code in .vimrc zu verwenden, aber das Problem bestand darin, die Variablen * g: ViewDoc \ _php * und * g: ViewDoc \ _pman * zu überschreiben. Von dem, was ich sagen konnte. Vimrc wird vor den Plugins geladen, so dass diese Variablen noch nicht definiert sind. Aber ich werde noch mehr Nachforschungen anstellen und schauen, ob ich einen Weg finde. –

+0

Siehe auch [diese Ausgabe] (http://code.google.com/p/vim-plugin-viewdoc/issues/detail?id=13). –

Verwandte Themen