mirror of
https://github.com/marktext/marktext.git
synced 2025-05-02 19:41:39 +08:00
Cycle through tabs (#1283)
* Cycle through tabs * Add cycle backwards alias
This commit is contained in:
parent
225d30bd90
commit
1ab8388c1d
@ -32,103 +32,114 @@ Here is an example:
|
|||||||
|
|
||||||
**Mark Text menu (macOS only):**
|
**Mark Text menu (macOS only):**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
| ----------------- | --------------------------------------- |
|
| ----------------- | ---------------------------------------------- | --------------------------------------- |
|
||||||
| `mtHide` | Hide Mark Text |
|
| `mtHide` | <kbd>Command</kbd>+<kbd>H</kbd> | Hide Mark Text |
|
||||||
| `mtHideOthers` | Hide all other windows except Mark Text |
|
| `mtHideOthers` | <kbd>Command</kbd>+<kbd>Alt</kbd>+<kbd>H</kbd> | Hide all other windows except Mark Text |
|
||||||
| `filePreferences` | Open settings window |
|
| `filePreferences` | <kbd>Command</kbd>+<kbd>,</kbd> | Open settings window |
|
||||||
| `fileQuit` | Quit Mark Text |
|
| `fileQuit` | <kbd>Command</kbd>+<kbd>Q</kbd> | Quit Mark Text |
|
||||||
|
|
||||||
**File menu:**
|
**File menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
|:----------------- | ----------------------------------------- |
|
|:----------------- | -------------------------------------------------- | ----------------------------------------- |
|
||||||
| `fileNewFile` | New file |
|
| `fileNewFile` | <kbd>CmdOrCtrl</kbd>+<kbd>N</kbd> | New file |
|
||||||
| `fileNewTab` | New tab |
|
| `fileNewTab` | <kbd>CmdOrCtrl</kbd>+<kbd>T</kbd> | New tab |
|
||||||
| `fileOpenFile` | Open markdown file |
|
| `fileOpenFile` | <kbd>CmdOrCtrl</kbd>+<kbd>O</kbd> | Open markdown file |
|
||||||
| `fileOpenFolder` | Open folder |
|
| `fileOpenFolder` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>O</kbd> | Open folder |
|
||||||
| `fileSave` | Save |
|
| `fileSave` | <kbd>CmdOrCtrl</kbd>+<kbd>S</kbd> | Save |
|
||||||
| `fileSaveAs` | Save as... |
|
| `fileSaveAs` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>S</kbd> | Save as... |
|
||||||
| `filePreferences` | Open settings window (Linux/Windows only) |
|
| `filePrint` | <kbd>Ctrl</kbd>+<kbd>P</kbd> | Print current tab |
|
||||||
| `fileCloseTab` | Close tab |
|
| `filePreferences` | <kbd>Ctrl</kbd>+<kbd>,</kbd> | Open settings window (Linux/Windows only) |
|
||||||
| `fileCloseWindow` | Close window |
|
| `fileCloseTab` | <kbd>CmdOrCtrl</kbd>+<kbd>W</kbd> | Close tab |
|
||||||
| `fileQuit` | Quit Mark Text (Linux/Windows only) |
|
| `fileCloseWindow` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>W</kbd> | Close window |
|
||||||
|
| `fileQuit` | <kbd>CmdOrCtrl</kbd>+<kbd>Q</kbd> | Quit Mark Text (Linux/Windows only) |
|
||||||
|
|
||||||
**Edit menu:**
|
**Edit menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
|:--------------------- | ----------------------------------------------- |
|
|:--------------------- | -------------------------------------------------- | ----------------------------------------------- |
|
||||||
| `editUndo` | Undo last operation |
|
| `editUndo` | <kbd>CmdOrCtrl</kbd>+<kbd>Z</kbd> | Undo last operation |
|
||||||
| `editRedo` | Redo last operation |
|
| `editRedo` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>Z</kbd> | Redo last operation |
|
||||||
| `editCut` | Cut selected text |
|
| `editCut` | <kbd>CmdOrCtrl</kbd>+<kbd>X</kbd> | Cut selected text |
|
||||||
| `editCopy` | Copy selected text |
|
| `editCopy` | <kbd>CmdOrCtrl</kbd>+<kbd>C</kbd> | Copy selected text |
|
||||||
| `editPaste` | Paste text |
|
| `editPaste` | <kbd>CmdOrCtrl</kbd>+<kbd>V</kbd> | Paste text |
|
||||||
| `editCopyAsMarkdown` | Copy selected text as markdown |
|
| `editCopyAsMarkdown` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>C</kbd> | Copy selected text as markdown |
|
||||||
| `editCopyAsPlaintext` | Copy selected text as plaintext |
|
| `editCopyAsPlaintext` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>V</kbd> | Copy selected text as plaintext |
|
||||||
| `editSelectAll` | Select all text of the document |
|
| `editSelectAll` | <kbd>CmdOrCtrl</kbd>+<kbd>A</kbd> | Select all text of the document |
|
||||||
| `editDuplicate` | Duplicate the current paragraph |
|
| `editDuplicate` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> | Duplicate the current paragraph |
|
||||||
| `editCreateParagraph` | Create a new paragraph after the current one |
|
| `editCreateParagraph` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>N</kbd> | Create a new paragraph after the current one |
|
||||||
| `editDeleteParagraph` | Delete current paragraph |
|
| `editDeleteParagraph` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>D</kbd> | Delete current paragraph |
|
||||||
| `editFind` | Find information in the document |
|
| `editFind` | <kbd>CmdOrCtrl</kbd>+<kbd>F</kbd> | Find information in the document |
|
||||||
| `editFindNext` | Continue the search and find the next match |
|
| `editFindNext` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>U</kbd> | Continue the search and find the next match |
|
||||||
| `editFindPrevious` | Continue the search and find the previous match |
|
| `editFindPrevious` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> | Continue the search and find the previous match |
|
||||||
| `editReplace` | Replace the information with a replacement |
|
| `editReplace` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>F</kbd> | Replace the information with a replacement |
|
||||||
| `editAidou` | Show Aidou dialog |
|
| `editAidou` | <kbd>CmdOrCtrl</kbd>+<kbd>/</kbd> | Show Aidou dialog |
|
||||||
| `editScreenshot` | Get the screenshot |
|
| `editScreenshot` | <kbd>Command</kbd>+<kbd>Alt</kbd>+<kbd>A</kbd> | Get the screenshot (macOS only) |
|
||||||
|
|
||||||
**Paragraph menu:**
|
**Paragraph menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
| -------------------------- | ---------------------------------------- |
|
| -------------------------- | -------------------------------------------------- | ------------------------------------------------- |
|
||||||
| `paragraphHeading1` | Set line as heading 1 |
|
| `paragraphHeading1` | <kbd>CmdOrCtrl</kbd>+<kbd>1</kbd> | Set line as heading 1 |
|
||||||
| `paragraphHeading2` | Set line as heading 2 |
|
| `paragraphHeading2` | <kbd>CmdOrCtrl</kbd>+<kbd>2</kbd> | Set line as heading 2 |
|
||||||
| `paragraphHeading3` | Set line as heading 3 |
|
| `paragraphHeading3` | <kbd>CmdOrCtrl</kbd>+<kbd>3</kbd> | Set line as heading 3 |
|
||||||
| `paragraphHeading4` | Set line as heading 4 |
|
| `paragraphHeading4` | <kbd>CmdOrCtrl</kbd>+<kbd>4</kbd> | Set line as heading 4 |
|
||||||
| `paragraphHeading5` | Set line as heading 5 |
|
| `paragraphHeading5` | <kbd>CmdOrCtrl</kbd>+<kbd>5</kbd> | Set line as heading 5 |
|
||||||
| `paragraphHeading6` | Set line as heading 6 |
|
| `paragraphHeading6` | <kbd>CmdOrCtrl</kbd>+<kbd>6</kbd> | Set line as heading 6 |
|
||||||
| `paragraphUpgradeHeading` | Upgrade a heading |
|
| `paragraphUpgradeHeading` | <kbd>CmdOrCtrl</kbd>+<kbd>=</kbd> | Upgrade a heading |
|
||||||
| `paragraphDegradeHeading` | Degrade a heading |
|
| `paragraphDegradeHeading` | <kbd>CmdOrCtrl</kbd>+<kbd>-</kbd> | Degrade a heading |
|
||||||
| `paragraphTable` | Insert a table |
|
| `paragraphTable` | <kbd>CmdOrCtrl</kbd>+<kbd>T</kbd> | Insert a table |
|
||||||
| `paragraphCodeFence` | Insert a code block |
|
| `paragraphCodeFence` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>C</kbd> | Insert a code block |
|
||||||
| `paragraphQuoteBlock` | Insert a quote block |
|
| `paragraphQuoteBlock` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>Q</kbd> | Insert a quote block |
|
||||||
| `paragraphMathBlock` | Insert a math block |
|
| `paragraphMathBlock` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>M</kbd> | Insert a math block |
|
||||||
| `paragraphHtmlBlock` | Insert a HTML block |
|
| `paragraphHtmlBlock` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>J/H</kbd> | Insert a HTML block (`J` on macOS, `H` otherwise) |
|
||||||
| `paragraphOrderList` | Insert a ordered list |
|
| `paragraphOrderList` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>O</kbd> | Insert a ordered list |
|
||||||
| `paragraphBulletList` | Insert a unordered list |
|
| `paragraphBulletList` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>U</kbd> | Insert a unordered list |
|
||||||
| `paragraphTaskList` | Insert a task list |
|
| `paragraphTaskList` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>X</kbd> | Insert a task list |
|
||||||
| `paragraphLooseListItem` | Convert a list item to a loose list item |
|
| `paragraphLooseListItem` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>L</kbd> | Convert a list item to a loose list item |
|
||||||
| `paragraphParagraph` | Convert a heading to a paragraph |
|
| `paragraphParagraph` | <kbd>CmdOrCtrl</kbd>+<kbd>0</kbd> | Convert a heading to a paragraph |
|
||||||
| `paragraphHorizontalLine` | Add a horizontal line |
|
| `paragraphHorizontalLine` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>-</kbd> | Add a horizontal line |
|
||||||
| `paragraphYAMLFrontMatter` | Insert a YAML frontmatter block |
|
| `paragraphYAMLFrontMatter` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>Y</kbd> | Insert a YAML frontmatter block |
|
||||||
|
|
||||||
**Format menu:**
|
**Format menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
| ------------------- | ------------------------------------------- |
|
| ------------------- | -------------------------------------------------- | ------------------------------------------- |
|
||||||
| `formatStrong` | Set the font of the selected text to bold |
|
| `formatStrong` | <kbd>CmdOrCtrl</kbd>+<kbd>B</kbd> | Set the font of the selected text to bold |
|
||||||
| `formatEmphasis` | Set the font of the selected text to italic |
|
| `formatEmphasis` | <kbd>CmdOrCtrl</kbd>+<kbd>I</kbd> | Set the font of the selected text to italic |
|
||||||
| `formatUnderline` | Change the selected text to underline |
|
| `formatUnderline` | <kbd>CmdOrCtrl</kbd>+<kbd>U</kbd> | Change the selected text to underline |
|
||||||
| `formatInlineCode` | Change the selected text to inline code |
|
| `formatInlineCode` | <kbd>CmdOrCtrl</kbd>+<kbd>`</kbd> | Change the selected text to inline code |
|
||||||
| `formatStrike` | Strike through the selected text |
|
| `formatInlineMath` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>M</kbd> | Change the selected text to inline math |
|
||||||
| `formatHyperlink` | Insert a hyperlink |
|
| `formatStrike` | <kbd>CmdOrCtrl</kbd>+<kbd>D</kbd> | Strike through the selected text |
|
||||||
| `formatImage` | Insert a image |
|
| `formatHyperlink` | <kbd>CmdOrCtrl</kbd>+<kbd>L</kbd> | Insert a hyperlink |
|
||||||
| `formatClearFormat` | Clear the formatting of the selected text |
|
| `formatImage` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> | Insert a image |
|
||||||
|
| `formatClearFormat` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> | Clear the formatting of the selected text |
|
||||||
|
|
||||||
**Window menu:**
|
**Window menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
| ------------------------ | ---------------------- |
|
| ---------------- | --------------------------------- | ------------------- |
|
||||||
| `windowMinimize` | Minimize the window |
|
| `windowMinimize` | <kbd>CmdOrCtrl</kbd>+<kbd>M</kbd> | Minimize the window |
|
||||||
| `windowToggleFullScreen` | Toggle fullscreen mode |
|
|
||||||
|
|
||||||
**View menu:**
|
**View menu:**
|
||||||
|
|
||||||
| Id | Description |
|
| Id | Default | Description |
|
||||||
| ----------------------------- | ---------------------------------------- |
|
| ----------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
||||||
| `viewSourceCodeMode` | Switch to source code mode |
|
| `viewToggleFullScreen` | <kbd>F11</kbd> | Toggle fullscreen mode (or <kbd>Ctrl</kbd>+<kbd>Command</kbd>+<kbd>F</kbd> on macOS) |
|
||||||
| `viewTypewriterMode` | Enable typewriter mode |
|
| `viewSourceCodeMode` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>S</kbd> | Switch to source code mode |
|
||||||
| `viewFocusMode` | Enable focus mode |
|
| `viewTypewriterMode` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>T</kbd> | Enable typewriter mode |
|
||||||
| `viewToggleSideBar` | Toggle sidebar |
|
| `viewFocusMode` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd> | Enable focus mode |
|
||||||
| `viewToggleTabBar` | Toggle tabbar |
|
| `viewToggleSideBar` | <kbd>CmdOrCtrl</kbd>+<kbd>J</kbd> | Toggle sidebar |
|
||||||
| `viewDevToggleDeveloperTools` | Toggle developer tools (debug mode only) |
|
| `viewToggleTabBar` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>B</kbd> | Toggle tabbar |
|
||||||
| `viewDevReload` | Reload window (debug mode only) |
|
| `viewDevToggleDeveloperTools` | <kbd>CmdOrCtrl</kbd>+<kbd>Alt</kbd>+<kbd>I</kbd> | Toggle developer tools (debug mode only) |
|
||||||
|
| `viewDevReload` | <kbd>CmdOrCtrl</kbd>+<kbd>R</kbd> | Reload window (debug mode only) |
|
||||||
|
|
||||||
|
**Misc**
|
||||||
|
|
||||||
|
| Id | Default | Description |
|
||||||
|
| ------------------- | ---------------------------------------------------- | ---------------------------- |
|
||||||
|
| `tabsCycleForward` | <kbd>CmdOrCtrl</kbd>+<kbd>Tab</kbd> | Cycle through tabs |
|
||||||
|
| `tabsCycleBackward` | <kbd>CmdOrCtrl</kbd>+<kbd>Shift</kbd>+<kbd>Tab</kbd> | Cycle backwards through tabs |
|
||||||
|
| `tabsSwitchToLeft` | <kbd>CmdOrCtrl</kbd>+<kbd>PageUp</kbd> | Switch tab to the left |
|
||||||
|
| `tabsSwitchToRight` | <kbd>CmdOrCtrl</kbd>+<kbd>PageDown</kbd> | Switch tab to the right |
|
||||||
|
@ -21,11 +21,11 @@ class Keybindings {
|
|||||||
this.configPath = path.join(userDataPath, 'keybindings.json')
|
this.configPath = path.join(userDataPath, 'keybindings.json')
|
||||||
|
|
||||||
this.keys = new Map([
|
this.keys = new Map([
|
||||||
// marktext - macOS only
|
// Mark Text - macOS only
|
||||||
['mtHide', 'Command+H'],
|
['mtHide', 'Command+H'],
|
||||||
['mtHideOthers', 'Command+Alt+H'],
|
['mtHideOthers', 'Command+Alt+H'],
|
||||||
|
|
||||||
// file menu
|
// File menu
|
||||||
['fileNewFile', 'CmdOrCtrl+N'],
|
['fileNewFile', 'CmdOrCtrl+N'],
|
||||||
['fileNewTab', 'CmdOrCtrl+Shift+T'],
|
['fileNewTab', 'CmdOrCtrl+Shift+T'],
|
||||||
['fileOpenFile', 'CmdOrCtrl+O'],
|
['fileOpenFile', 'CmdOrCtrl+O'],
|
||||||
@ -38,7 +38,7 @@ class Keybindings {
|
|||||||
['fileCloseWindow', 'CmdOrCtrl+Shift+W'],
|
['fileCloseWindow', 'CmdOrCtrl+Shift+W'],
|
||||||
['fileQuit', 'CmdOrCtrl+Q'],
|
['fileQuit', 'CmdOrCtrl+Q'],
|
||||||
|
|
||||||
// edit menu
|
// Edit menu
|
||||||
['editUndo', 'CmdOrCtrl+Z'],
|
['editUndo', 'CmdOrCtrl+Z'],
|
||||||
['editRedo', 'CmdOrCtrl+Shift+Z'],
|
['editRedo', 'CmdOrCtrl+Shift+Z'],
|
||||||
['editCut', 'CmdOrCtrl+X'],
|
['editCut', 'CmdOrCtrl+X'],
|
||||||
@ -57,7 +57,7 @@ class Keybindings {
|
|||||||
['editAidou', 'CmdOrCtrl+/'],
|
['editAidou', 'CmdOrCtrl+/'],
|
||||||
['editScreenshot', 'CmdOrCtrl+Alt+A'],
|
['editScreenshot', 'CmdOrCtrl+Alt+A'],
|
||||||
|
|
||||||
// paragraph menu
|
// Paragraph menu
|
||||||
['paragraphHeading1', 'CmdOrCtrl+1'],
|
['paragraphHeading1', 'CmdOrCtrl+1'],
|
||||||
['paragraphHeading2', 'CmdOrCtrl+2'],
|
['paragraphHeading2', 'CmdOrCtrl+2'],
|
||||||
['paragraphHeading3', 'CmdOrCtrl+3'],
|
['paragraphHeading3', 'CmdOrCtrl+3'],
|
||||||
@ -79,7 +79,7 @@ class Keybindings {
|
|||||||
['paragraphHorizontalLine', 'CmdOrCtrl+Alt+-'],
|
['paragraphHorizontalLine', 'CmdOrCtrl+Alt+-'],
|
||||||
['paragraphYAMLFrontMatter', 'CmdOrCtrl+Alt+Y'],
|
['paragraphYAMLFrontMatter', 'CmdOrCtrl+Alt+Y'],
|
||||||
|
|
||||||
// format menu
|
// Format menu
|
||||||
['formatStrong', 'CmdOrCtrl+B'],
|
['formatStrong', 'CmdOrCtrl+B'],
|
||||||
['formatEmphasis', 'CmdOrCtrl+I'],
|
['formatEmphasis', 'CmdOrCtrl+I'],
|
||||||
['formatUnderline', 'CmdOrCtrl+U'],
|
['formatUnderline', 'CmdOrCtrl+U'],
|
||||||
@ -90,10 +90,10 @@ class Keybindings {
|
|||||||
['formatImage', 'CmdOrCtrl+Shift+I'],
|
['formatImage', 'CmdOrCtrl+Shift+I'],
|
||||||
['formatClearFormat', 'Shift+CmdOrCtrl+R'],
|
['formatClearFormat', 'Shift+CmdOrCtrl+R'],
|
||||||
|
|
||||||
// window menu
|
// Window menu
|
||||||
['windowMinimize', 'CmdOrCtrl+M'],
|
['windowMinimize', 'CmdOrCtrl+M'],
|
||||||
|
|
||||||
// view menu
|
// View menu
|
||||||
['viewToggleFullScreen', isOsx ? 'Ctrl+Command+F' : 'F11'],
|
['viewToggleFullScreen', isOsx ? 'Ctrl+Command+F' : 'F11'],
|
||||||
['viewSourceCodeMode', 'CmdOrCtrl+Alt+S'],
|
['viewSourceCodeMode', 'CmdOrCtrl+Alt+S'],
|
||||||
['viewTypewriterMode', 'CmdOrCtrl+Alt+T'],
|
['viewTypewriterMode', 'CmdOrCtrl+Alt+T'],
|
||||||
@ -101,7 +101,13 @@ class Keybindings {
|
|||||||
['viewToggleSideBar', 'CmdOrCtrl+J'],
|
['viewToggleSideBar', 'CmdOrCtrl+J'],
|
||||||
['viewToggleTabBar', 'CmdOrCtrl+Alt+B'],
|
['viewToggleTabBar', 'CmdOrCtrl+Alt+B'],
|
||||||
['viewDevToggleDeveloperTools', 'CmdOrCtrl+Alt+I'],
|
['viewDevToggleDeveloperTools', 'CmdOrCtrl+Alt+I'],
|
||||||
['viewDevReload', 'CmdOrCtrl+R']
|
['viewDevReload', 'CmdOrCtrl+R'],
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
['tabsCycleForward', 'CmdOrCtrl+Tab'],
|
||||||
|
['tabsCycleBackward', 'CmdOrCtrl+Shift+Tab'],
|
||||||
|
['tabsSwitchToLeft', 'CmdOrCtrl+PageUp'],
|
||||||
|
['tabsSwitchToRight', 'CmdOrCtrl+PageDown']
|
||||||
])
|
])
|
||||||
|
|
||||||
// fix non-US keyboards
|
// fix non-US keyboards
|
||||||
|
@ -164,7 +164,7 @@ class AppMenu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildEditorMenu (createShortcutMap, recentUsedDocuments) {
|
buildEditorMenu (createShortcutMap, recentUsedDocuments = null) {
|
||||||
if (!recentUsedDocuments) {
|
if (!recentUsedDocuments) {
|
||||||
recentUsedDocuments = this.getRecentlyUsedDocuments()
|
recentUsedDocuments = this.getRecentlyUsedDocuments()
|
||||||
}
|
}
|
||||||
@ -175,6 +175,7 @@ class AppMenu {
|
|||||||
let shortcutMap = null
|
let shortcutMap = null
|
||||||
if (createShortcutMap) {
|
if (createShortcutMap) {
|
||||||
shortcutMap = parseMenu(menuTemplate)
|
shortcutMap = parseMenu(menuTemplate)
|
||||||
|
this._appendMiscShortcuts(shortcutMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -282,6 +283,37 @@ class AppMenu {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_appendMiscShortcuts = shortcutMap => {
|
||||||
|
shortcutMap.push({
|
||||||
|
accelerator: this._keybindings.getAccelerator('tabsCycleForward'),
|
||||||
|
click: (menuItem, win) => {
|
||||||
|
win.webContents.send('mt::tabs-cycle-right')
|
||||||
|
},
|
||||||
|
id: null
|
||||||
|
})
|
||||||
|
shortcutMap.push({
|
||||||
|
accelerator: this._keybindings.getAccelerator('tabsCycleBackward'),
|
||||||
|
click: (menuItem, win) => {
|
||||||
|
win.webContents.send('mt::tabs-cycle-left')
|
||||||
|
},
|
||||||
|
id: null
|
||||||
|
})
|
||||||
|
shortcutMap.push({
|
||||||
|
accelerator: this._keybindings.getAccelerator('tabsSwitchToLeft'),
|
||||||
|
click: (menuItem, win) => {
|
||||||
|
win.webContents.send('mt::tabs-cycle-left')
|
||||||
|
},
|
||||||
|
id: null
|
||||||
|
})
|
||||||
|
shortcutMap.push({
|
||||||
|
accelerator: this._keybindings.getAccelerator('tabsSwitchToRight'),
|
||||||
|
click: (menuItem, win) => {
|
||||||
|
win.webContents.send('mt::tabs-cycle-right')
|
||||||
|
},
|
||||||
|
id: null
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
_setApplicationMenu (menu) {
|
_setApplicationMenu (menu) {
|
||||||
if (isLinux && !menu) {
|
if (isLinux && !menu) {
|
||||||
// WORKAROUND for Electron#16521: We cannot hide the (application) menu on Linux.
|
// WORKAROUND for Electron#16521: We cannot hide the (application) menu on Linux.
|
||||||
|
@ -140,6 +140,7 @@ export default {
|
|||||||
dispatch('LINTEN_FOR_SET_LINE_ENDING')
|
dispatch('LINTEN_FOR_SET_LINE_ENDING')
|
||||||
dispatch('LISTEN_FOR_NEW_TAB')
|
dispatch('LISTEN_FOR_NEW_TAB')
|
||||||
dispatch('LISTEN_FOR_CLOSE_TAB')
|
dispatch('LISTEN_FOR_CLOSE_TAB')
|
||||||
|
dispatch('LISTEN_FOR_TAB_CYCLE')
|
||||||
dispatch('LINTEN_FOR_PRINT_SERVICE_CLEARUP')
|
dispatch('LINTEN_FOR_PRINT_SERVICE_CLEARUP')
|
||||||
dispatch('LINTEN_FOR_EXPORT_SUCCESS')
|
dispatch('LINTEN_FOR_EXPORT_SUCCESS')
|
||||||
dispatch('LISTEN_FOR_FILE_CHANGE')
|
dispatch('LISTEN_FOR_FILE_CHANGE')
|
||||||
|
@ -544,6 +544,15 @@ const actions = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
LISTEN_FOR_TAB_CYCLE ({ commit, state, dispatch }) {
|
||||||
|
ipcRenderer.on('mt::tabs-cycle-left', e => {
|
||||||
|
dispatch('CYCLE_TABS', false)
|
||||||
|
})
|
||||||
|
ipcRenderer.on('mt::tabs-cycle-right', e => {
|
||||||
|
dispatch('CYCLE_TABS', true)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
CLOSE_TAB ({ dispatch }, file) {
|
CLOSE_TAB ({ dispatch }, file) {
|
||||||
const { isSaved } = file
|
const { isSaved } = file
|
||||||
if (isSaved) {
|
if (isSaved) {
|
||||||
@ -553,6 +562,36 @@ const actions = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Direction is a boolean where false is left and true right.
|
||||||
|
CYCLE_TABS ({ commit, state }, direction) {
|
||||||
|
const { tabs, currentFile } = state
|
||||||
|
if (tabs.length <= 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentIndex = tabs.findIndex(t => t.id === currentFile.id)
|
||||||
|
if (currentIndex === -1) {
|
||||||
|
console.error('CYCLE_TABS: Cannot find current tab index.')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let nextTabIndex = 0
|
||||||
|
if (!direction) {
|
||||||
|
// Switch tab to the left.
|
||||||
|
nextTabIndex = currentIndex === 0 ? tabs.length - 1 : currentIndex - 1
|
||||||
|
} else {
|
||||||
|
// Switch tab to the right.
|
||||||
|
nextTabIndex = (currentIndex + 1) % tabs.length
|
||||||
|
}
|
||||||
|
|
||||||
|
const nextTab = tabs[nextTabIndex]
|
||||||
|
if (!nextTab || !nextTab.id) {
|
||||||
|
console.error(`CYCLE_TABS: Cannot find next tab (index="${nextTabIndex}").`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
commit('SET_CURRENT_FILE', nextTab)
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new untitled tab optional from a markdown string.
|
* Create a new untitled tab optional from a markdown string.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user