Vimperator - Custom ExtendedHit zum Starten des Skripts / Programms für übereinstimmenden regulären Ausdruck

571
superboot

Ich möchte in vimperator ein benutzerdefiniertes extendedhint definieren, das:

  1. Stimmt mit einem Regex-Muster überein
  2. Feeds, die als solche einem Skript entsprechen: ~ / bin / script Regex-Match-As-Arg

Wo soll ich anfangen, dieses Problem zu lösen? Verfügt Vimperator über "Vimperator-Script" -Funktionen, die dies ermöglichen?

Vielen Dank.

2

1 Antwort auf die Frage

3
pyrocrasty

Einige Hinweise (Wortspiel nicht beabsichtigt).

Hinzufügen eines neuen erweiterten Hinweismodus:

  • Sie können den Modus mit der hints.addModeFunktion definieren.
  • Sie können das Muster für die Hinzufügung von Hinweisen mit der ehtOption festlegen, die eine XPath-Auswahl erfordert. (In Pentadactyl können Sie auch CSS-Selektoren verwenden, aber ich bin nicht sicher über Vimperator - sie werden auf den Hilfeseiten nicht erwähnt.)

Hier ein einfaches Beispiel, das ich auf Jisho.org verwende, um zur Informationsseite für ein Kanji zu springen ;k.

js set eht+=[k]:span[class=text] hints.addMode('k','open kanji details',function(e) { liberator.open(decodeURIComponent("http://jisho.org/search/" + e.textContent + "%2523kanji")); }); 

Regex abgleichen:

Ich bin nicht sicher, ob Vimperator XPath 1.0 oder 2.0 verwendet oder ob es die volle Leistung von XPath-Ausdrücken zulässt. Ich habe nur sehr einfache Ausdrücke ausprobiert. XPath 1.0 erlaubt keine Regex (also müssten Sie sich mit der Funktionalität auseinandersetzen). XPath 2.0 unterstützt jedoch Regex . So können Sie sie möglicherweise verwenden. (Ich möchte mir das mal selbst ansehen.)

Ein Skript starten:

Sie können dies mit dem :!Befehl tun . Beliebige "ex" -Befehle können von JS aus gestartet werden. Um liberator.execute()ein Shell-Skript zu starten, können Sie eine Funktion wie folgt übergeben hints.addMode:

function(e) { liberator.execute("!~/bin/script " + e.textContent) } 

Hinweis zu Pentadactyl.

Alles hier gilt gleichermaßen für Pentadactyl, außer in dem JS - API, müssen Sie ersetzen liberatordurch dactyl.

Ich werde später noch etwas mehr versuchen.