summaryrefslogtreecommitdiff
path: root/common/.vimfx/config.js
diff options
context:
space:
mode:
Diffstat (limited to 'common/.vimfx/config.js')
-rw-r--r--common/.vimfx/config.js71
1 files changed, 44 insertions, 27 deletions
diff --git a/common/.vimfx/config.js b/common/.vimfx/config.js
index 8968a8d..6783857 100644
--- a/common/.vimfx/config.js
+++ b/common/.vimfx/config.js
@@ -98,22 +98,41 @@ function reloadUserChrome(callback) {
}
}
-function tabGroupsToggleTabView({vim}) {
- vim.window.TabView.toggle()
+function listTabs({vim}) {
+ vim.window.gTabsPanel.showAllTabsPanel()
}
-function tabGroupsSwitch({vim}) {
- vim.window.TabView.button.click()
+function addTabToGroup({vim, count}) {
+ if (!count) return vim.notify("No count specified")
+ let {window: {gBrowser: {tabGroups, selectedTabs}}} = vim
+ return tabGroups[count-1]?.addTabs(selectedTabs)
}
-function tabGroupsMoveTab({vim}) {
- let m = vim.window.document.querySelector("#tabGroups-context_tabViewMenu")
- m.parentElement.openPopup()
- m.click()
+function removeTabFromGroup({vim}) {
+ let {window: {gBrowser}} = vim
+ for (let tab of gBrowser.selectedTabs)
+ gBrowser.ungroupTab(tab)
}
-function listTabs({vim}) {
- vim.window.gTabsPanel.showAllTabsPanel()
+function collapseTabGroup({vim, count}) {
+ let {window: {gBrowser: {tabGroups, selectedTab}}} = vim,
+ group = (count ? tabGroups[count-1] : selectedTab.group)
+ if (group)
+ return group.collapsed = !group.collapsed
+}
+
+function addTabGroup({vim}) {
+ let {window: {gBrowser}} = vim,
+ {selectedTab, selectedTabs, tabs} = gBrowser
+ return gBrowser.addTabGroup(selectedTabs, {
+ insertBefore: tabs[Math.max(0, tabs.indexOf(selectedTab)-1)],
+ isUserTriggered: true,
+ })
+}
+
+function ungroupTabGroup({vim, count}) {
+ let {window: {gBrowser: {tabGroups, selectedTab}}} = vim
+ return (count ? tabGroups[count-1] : selectedTab.group)?.ungroupTabs()
}
const sendFn = msg =>
@@ -125,14 +144,17 @@ let commands = {
emacsclient_eww: rcurry(execOnLink, "emacsclient", "--eval", "(eww \"%u\")"),
toggle_images: toggleImages,
reload_userchrome: ({vim}) => reloadUserChrome(a => vim.notify(a)),
- tab_groups_view: tabGroupsToggleTabView,
- tab_groups_switch: tabGroupsSwitch,
- tab_groups_move: tabGroupsMoveTab,
list_tabs: listTabs,
browse_git: rcurry(execOnCurrent, "browse-git", "%u"),
browse_git_follow: rcurry(execOnLink, "browse-git", "%u"),
go_way_back: sendFn("goWayBack"),
go_way_forward: sendFn("goWayForward"),
+ search_tabs: ({vim: {window: {gTabsPanel}}}) => gTabsPanel.searchTabs(),
+ add_tab_to_group: addTabToGroup,
+ remove_tab_from_group: removeTabFromGroup,
+ collapse_tab_group: collapseTabGroup,
+ add_tab_group: addTabGroup,
+ ungroup_tab_group: ungroupTabGroup,
}
// ** Apply
Object.entries(commands)
@@ -163,7 +185,7 @@ mappings = {
["xtr <c-x>tr", "reload_all"],
["xtR <c-x>tR", "reload_all_force"],
["xg <c-x>g", "stop"],
- ["xtg <c-x>tg", "stop_all"],
+ ["xts <c-x>ts", "stop_all"],
["gg", "my/browse_git"],
["gwb", "my/go_way_back"],
["gwf", "my/go_way_forward"],
@@ -206,10 +228,13 @@ mappings = {
["u/ uxtu <c-u><c-x>tu", "tab_restore_list"],
["", "tab_close_to_end"],
["", "tab_close_other"],
+ ["t", "my/search_tabs"],
["T", "my/list_tabs"],
- ["t", "my/tab_groups_switch"],
- ["xtm <c-x>tm", "my/tab_groups_move"],
- ["xtv <c-x>tv", "my/tab_groups_view"],
+ ["uxtg <c-u><c-x>tg", "my/add_tab_group"],
+ ["uxtG <c-u><c-x>tG", "my/ungroup_tab_group"],
+ ["xtg <c-x>tg", "my/add_tab_to_group"],
+ ["xtG <c-x>tG", "my/remove_tab_from_group"],
+ ["xtc <c-x>tc", "my/collapse_tab_group"],
],
browsing: [
["j ss <a-s>s", "follow"],
@@ -360,6 +385,8 @@ const prefs = {
"browser.link.open_newwindow": 1,
"browser.link.open_newwindow.restriction": 0, // use above setting
"browser.link.open_newwindow.override.external": 3, // external links in new tab
+ // ** Enable AI (for once) in tab groups
+ "browser.tabs.groups.smart.enabled": true,
// ** Prefer Japanese to Chinese and Korean
"font.cjk_pref_fallback_order": "ja,zh-cn,zh-hk,zh-tw,ko",
// ** Let me debug my own browser
@@ -444,15 +471,6 @@ const prefs = {
// ** Enable "experimental" features
"dom.dialog_element.enabled": true,
"layout.css.has-selector.enabled": true,
- // ** Configure Tab Groups
- "extensions.tabgroups.displayMode": "grid",
- "extensions.tabgroups.stackTabs": false,
- "extensions.tabgroups.showThumbs": false,
- "extensions.tabgroups.sortGroupsByName": true,
- "extensions.tabgroups.gridDynamicSize": false,
- "extensions.tabgroups.nextGroupAccel": false,
- "extensions.tabgroups.prevGroupAccel": false,
- "extensions.tabgroups.tabViewAccel": false,
}
// ** Apply
Preferences.set(prefs)
@@ -461,7 +479,6 @@ let addons = {
"uBlock Origin": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi",
"Music Score Downloader": "https://addons.mozilla.org/firefox/downloads/latest/music-score-downloader/latest.xpi",
"PassFF": "https://addons.mozilla.org/firefox/downloads/latest/passff/latest.xpi",
- "Tab Groups": "https://github.com/117649/Tab-Groups/releases/download/dev-build/Tab-Groups-2.1.4b1_r20250829.0325.xpi",
"Chrome Mask": "https://addons.mozilla.org/firefox/downloads/latest/chrome-mask/latest.xpi",
}
// ** Apply