implement go-parent command
This commit is contained in:
parent
0be9776cb3
commit
e9863299ab
6 changed files with 34 additions and 5 deletions
|
@ -32,6 +32,7 @@ const defaultKeymap = {
|
|||
'L': { type: operations.NAVIGATE_HISTORY_NEXT },
|
||||
'[[': { type: operations.NAVIGATE_LINK_PREV },
|
||||
']]': { type: operations.NAVIGATE_LINK_NEXT },
|
||||
'gu': { type: operations.NAVIGATE_PARENT },
|
||||
};
|
||||
|
||||
const asKeymapChars = (keys) => {
|
||||
|
|
|
@ -43,6 +43,8 @@ const execOperation = (operation) => {
|
|||
return navigates.linkPrev(window);
|
||||
case operations.NAVIGATE_LINK_NEXT:
|
||||
return navigates.linkNext(window);
|
||||
case operations.NAVIGATE_PARENT:
|
||||
return navigates.parent(window);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -44,4 +44,23 @@ const linkNext = (win) => {
|
|||
}
|
||||
};
|
||||
|
||||
export { historyPrev, historyNext, linkPrev, linkNext };
|
||||
const parent = (win) => {
|
||||
let loc = win.location;
|
||||
if (loc.hash !== '') {
|
||||
loc.hash = '';
|
||||
return;
|
||||
} else if (loc.search !== '') {
|
||||
loc.search = '';
|
||||
return;
|
||||
}
|
||||
|
||||
const basenamePattern = /\/[^/]+$/;
|
||||
const lastDirPattern = /\/[^/]+\/$/;
|
||||
if (basenamePattern.test(loc.pathname)) {
|
||||
loc.pathname = loc.pathname.replace(basenamePattern, '/');
|
||||
} else if (lastDirPattern.test(loc.pathname)) {
|
||||
loc.pathname = loc.pathname.replace(lastDirPattern, '/');
|
||||
}
|
||||
};
|
||||
|
||||
export { historyPrev, historyNext, linkPrev, linkNext, parent };
|
||||
|
|
|
@ -15,6 +15,7 @@ export default {
|
|||
NAVIGATE_HISTORY_NEXT: 'navigate.history.next',
|
||||
NAVIGATE_LINK_PREV: 'navigate.link.prev',
|
||||
NAVIGATE_LINK_NEXT: 'navigate.link.next',
|
||||
NAVIGATE_PARENT: 'navigate.parent',
|
||||
|
||||
// Background
|
||||
TABS_CLOSE: 'tabs.close',
|
||||
|
|
Reference in a new issue