mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-14 04:48:40 -09:00
148 lines
3.7 KiB
TypeScript
148 lines
3.7 KiB
TypeScript
import {BrowserWindow, MenuItemConstructorOptions} from 'electron';
|
|
|
|
export default (
|
|
commandKeys: Record<string, string>,
|
|
execCommand: (command: string, focusedWindow?: BrowserWindow) => void
|
|
) => {
|
|
const submenu: MenuItemConstructorOptions[] = [
|
|
{
|
|
label: 'Undo',
|
|
accelerator: commandKeys['editor:undo'],
|
|
enabled: false
|
|
},
|
|
{
|
|
label: 'Redo',
|
|
accelerator: commandKeys['editor:redo'],
|
|
enabled: false
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Cut',
|
|
accelerator: commandKeys['editor:cut'],
|
|
enabled: false
|
|
},
|
|
{
|
|
role: 'copy',
|
|
command: 'editor:copy',
|
|
accelerator: commandKeys['editor:copy'],
|
|
registerAccelerator: true
|
|
} as any,
|
|
{
|
|
role: 'paste',
|
|
accelerator: commandKeys['editor:paste']
|
|
},
|
|
{
|
|
label: 'Select All',
|
|
accelerator: commandKeys['editor:selectAll'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:selectAll', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Move to...',
|
|
submenu: [
|
|
{
|
|
label: 'Previous word',
|
|
accelerator: commandKeys['editor:movePreviousWord'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:movePreviousWord', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Next word',
|
|
accelerator: commandKeys['editor:moveNextWord'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:moveNextWord', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Line beginning',
|
|
accelerator: commandKeys['editor:moveBeginningLine'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:moveBeginningLine', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Line end',
|
|
accelerator: commandKeys['editor:moveEndLine'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:moveEndLine', focusedWindow);
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
label: 'Delete...',
|
|
submenu: [
|
|
{
|
|
label: 'Previous word',
|
|
accelerator: commandKeys['editor:deletePreviousWord'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:deletePreviousWord', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Next word',
|
|
accelerator: commandKeys['editor:deleteNextWord'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:deleteNextWord', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Line beginning',
|
|
accelerator: commandKeys['editor:deleteBeginningLine'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:deleteBeginningLine', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Line end',
|
|
accelerator: commandKeys['editor:deleteEndLine'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:deleteEndLine', focusedWindow);
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
type: 'separator'
|
|
},
|
|
{
|
|
label: 'Clear Buffer',
|
|
accelerator: commandKeys['editor:clearBuffer'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:clearBuffer', focusedWindow);
|
|
}
|
|
},
|
|
{
|
|
label: 'Search',
|
|
accelerator: commandKeys['editor:search'],
|
|
click(item, focusedWindow) {
|
|
execCommand('editor:search', focusedWindow);
|
|
}
|
|
}
|
|
];
|
|
|
|
if (process.platform !== 'darwin') {
|
|
submenu.push(
|
|
{type: 'separator'},
|
|
{
|
|
label: 'Preferences...',
|
|
accelerator: commandKeys['window:preferences'],
|
|
click() {
|
|
execCommand('window:preferences');
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
return {
|
|
label: 'Edit',
|
|
submenu
|
|
};
|
|
};
|