mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-23 04:57:58 +01:00
initial support for ;? in hintmode to display information about an element. Very incomplete, should become like the DOM inspector
This commit is contained in:
@@ -76,13 +76,9 @@ vimperator.Hints = function () //{{{
|
|||||||
|
|
||||||
// this function 'click' an element, which also works
|
// this function 'click' an element, which also works
|
||||||
// for javascript links
|
// for javascript links
|
||||||
function openHint(where)
|
function openHint(elem, where)
|
||||||
{
|
{
|
||||||
if (validHints.length < 1)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var x = 1, y = 1;
|
var x = 1, y = 1;
|
||||||
var elem = validHints[hintNumber - 1] || validHints[0];
|
|
||||||
var elemTagName = elem.localName.toLowerCase();
|
var elemTagName = elem.localName.toLowerCase();
|
||||||
elem.focus();
|
elem.focus();
|
||||||
if (elemTagName == "frame" || elemTagName == "iframe")
|
if (elemTagName == "frame" || elemTagName == "iframe")
|
||||||
@@ -100,12 +96,8 @@ vimperator.Hints = function () //{{{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function focusHint()
|
function focusHint(elem)
|
||||||
{
|
{
|
||||||
if (validHints.length < 1)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var elem = validHints[hintNumber - 1] || validHints[0];
|
|
||||||
var doc = window.content.document;
|
var doc = window.content.document;
|
||||||
var elemTagName = elem.localName.toLowerCase();
|
var elemTagName = elem.localName.toLowerCase();
|
||||||
if (elemTagName == "frame" || elemTagName == "iframe")
|
if (elemTagName == "frame" || elemTagName == "iframe")
|
||||||
@@ -133,27 +125,27 @@ vimperator.Hints = function () //{{{
|
|||||||
elem.dispatchEvent(evt);
|
elem.dispatchEvent(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
function yankHint(text)
|
// TODO: print more useful information, just like the DOM inspector
|
||||||
|
function printHint(elem)
|
||||||
{
|
{
|
||||||
if (validHints.length < 1)
|
vimperator.echo("Element:<br/>" + vimperator.objectToString(elem), vimperator.commandline.FORCE_MULTILINE);
|
||||||
return false;
|
}
|
||||||
|
|
||||||
var elem = validHints[hintNumber - 1] || validHints[0];
|
function yankHint(elem, text)
|
||||||
|
{
|
||||||
if (text)
|
if (text)
|
||||||
var loc = elem.textContent;
|
var loc = elem.textContent || "";
|
||||||
else
|
else
|
||||||
var loc = elem.href;
|
var loc = elem.href || "";
|
||||||
|
|
||||||
vimperator.copyToClipboard(loc);
|
vimperator.copyToClipboard(loc);
|
||||||
|
// TODO: echoed text disappears immediately
|
||||||
vimperator.echo("Yanked " + loc, vimperator.commandline.FORCE_SINGLELINE);
|
vimperator.echo("Yanked " + loc, vimperator.commandline.FORCE_SINGLELINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveHint(skipPrompt)
|
// TODO: should use the 'cwd', does it?
|
||||||
|
function saveHint(elem, skipPrompt)
|
||||||
{
|
{
|
||||||
if (validHints.length < 1)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var elem = validHints[hintNumber - 1] || validHints[0];
|
|
||||||
var doc = elem.ownerDocument;
|
var doc = elem.ownerDocument;
|
||||||
var url = makeURLAbsolute(elem.baseURI, elem.href);
|
var url = makeURLAbsolute(elem.baseURI, elem.href);
|
||||||
var text = elem.textContent;
|
var text = elem.textContent;
|
||||||
@@ -429,23 +421,26 @@ vimperator.Hints = function () //{{{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var activeNum = hintNumber || 1;
|
var activeIndex = hintNumber - 1 || 0;
|
||||||
var loc = validHints[activeNum - 1].href || "";
|
var elem = validHints[activeIndex];
|
||||||
|
var loc = elem.href || "";
|
||||||
switch (submode)
|
switch (submode)
|
||||||
{
|
{
|
||||||
case ";": focusHint(); break;
|
// TODO: move/rename those helper functions to a better place
|
||||||
case "a": saveHint(false); break;
|
case ";": focusHint(elem); break;
|
||||||
case "s": saveHint(true); break;
|
case "?": printHint(elem); break;
|
||||||
case "o": openHint(vimperator.CURRENT_TAB); break;
|
case "a": saveHint(elem, false); break;
|
||||||
|
case "s": saveHint(elem, true); break;
|
||||||
|
case "o": openHint(elem, vimperator.CURRENT_TAB); break;
|
||||||
case "O": vimperator.commandline.open(":", "open " + loc, vimperator.modes.EX); break;
|
case "O": vimperator.commandline.open(":", "open " + loc, vimperator.modes.EX); break;
|
||||||
case "t": openHint(vimperator.NEW_TAB); break;
|
case "t": openHint(elem, vimperator.NEW_TAB); break;
|
||||||
case "T": vimperator.commandline.open(":", "tabopen " + loc, vimperator.modes.EX); break;
|
case "T": vimperator.commandline.open(":", "tabopen " + loc, vimperator.modes.EX); break;
|
||||||
case "v": vimperator.commands.viewsource(loc); break;
|
case "v": vimperator.commands.viewsource(loc); break;
|
||||||
case "V": vimperator.commands.viewsource(loc, true); break;
|
case "V": vimperator.commands.viewsource(loc, true); break;
|
||||||
case "w": openHint(vimperator.NEW_WINDOW); break;
|
case "w": openHint(elem, vimperator.NEW_WINDOW); break;
|
||||||
case "W": vimperator.commandline.open(":", "winopen " + loc, vimperator.modes.EX); break;
|
case "W": vimperator.commandline.open(":", "winopen " + loc, vimperator.modes.EX); break;
|
||||||
case "y": yankHint(false); break;
|
case "y": yankHint(elem, false); break;
|
||||||
case "Y": yankHint(true); break;
|
case "Y": yankHint(elem, true); break;
|
||||||
default:
|
default:
|
||||||
vimperator.echoerr("INTERNAL ERROR: unknown submode: " + submode);
|
vimperator.echoerr("INTERNAL ERROR: unknown submode: " + submode);
|
||||||
}
|
}
|
||||||
@@ -493,7 +488,7 @@ vimperator.Hints = function () //{{{
|
|||||||
// TODO: implement framesets
|
// TODO: implement framesets
|
||||||
show: function (mode, minor, filter)
|
show: function (mode, minor, filter)
|
||||||
{
|
{
|
||||||
if (mode == vimperator.modes.EXTENDED_HINT && !/^[;asoOtTvVwWyY]$/.test(minor))
|
if (mode == vimperator.modes.EXTENDED_HINT && !/^[;?asoOtTvVwWyY]$/.test(minor))
|
||||||
{
|
{
|
||||||
vimperator.beep();
|
vimperator.beep();
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user