aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands.js4
-rw-r--r--vimiumFrontend.js13
2 files changed, 17 insertions, 0 deletions
diff --git a/commands.js b/commands.js
index de6ce701..2a180966 100644
--- a/commands.js
+++ b/commands.js
@@ -95,6 +95,7 @@ function clearKeyMappingsAndSetDefaults() {
mapKeyToCommand('H', 'goBack');
mapKeyToCommand('L', 'goForward');
+ mapKeyToCommand('gu', 'goUp');
mapKeyToCommand('zi', 'zoomIn');
mapKeyToCommand('zo', 'zoomOut');
@@ -150,6 +151,9 @@ addCommand('performBackwardsFind', 'Cycle backward to the previous find match');
addCommand('goBack', 'Go back in history');
addCommand('goForward', 'Go forward in history');
+// Navigating the URL hierarchy
+addCommand('goUp', 'Go up the URL hierarchy');
+
// Manipulating tabs:
addCommand('nextTab', 'Go one tab right', true);
addCommand('previousTab', 'Go one tab left', true);
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 4346d18f..c33e87db 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -200,6 +200,19 @@ function reload() { window.location.reload(); }
function goBack() { history.back(); }
function goForward() { history.forward(); }
+function goUp() {
+ var url = window.location.href;
+ if (url[url.length-1] == '/')
+ url = url.substring(0, url.length - 1);
+
+ var urlsplit = url.split('/');
+ // make sure we haven't hit the base domain yet
+ if (urlsplit.length > 3) {
+ delete urlsplit[urlsplit.length-1];
+ window.location.href = urlsplit.join('/');
+ }
+}
+
function toggleViewSource() {
getCurrentUrlHandlers.push(toggleViewSourceCallback);