mirror of
https://github.com/salexdv/bsl_console.git
synced 2024-11-28 08:48:48 +02:00
Переопределение действий "Копировать/Вставить", чтобы в 1С нормально работали сочетания клавиш CTRL+C и CTRL+V
Изменение функции вставки текста, чтобы работал откат действия CTRL+Z
This commit is contained in:
parent
ce88c9d2fb
commit
e2859feffa
24
src/actions.js
Normal file
24
src/actions.js
Normal file
@ -0,0 +1,24 @@
|
||||
define(['vs/editor/editor.main'], function () {
|
||||
|
||||
actions = {
|
||||
copy_bsl: {
|
||||
label: 'Копировать',
|
||||
key: monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_C,
|
||||
cmd: monaco.KeyMod.chord(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_C),
|
||||
callback: function (ed) {
|
||||
selectionText = editor.getModel().getValueInRange(editor.getSelection());
|
||||
return null;
|
||||
}
|
||||
},
|
||||
paste_bsl: {
|
||||
label: 'Вставить',
|
||||
key: monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_V,
|
||||
cmd: monaco.KeyMod.chord(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_V),
|
||||
callback: function (ed) {
|
||||
setText(selectionText, null);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
@ -1,11 +1,16 @@
|
||||
define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/editor.main'], function () {
|
||||
define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/editor.main', 'actions'], function () {
|
||||
|
||||
selectionText = '';
|
||||
|
||||
setText = function(txt, range) {
|
||||
|
||||
editor.getModel().applyEdits([{
|
||||
range: range ? range : monaco.Range.fromPositions(editor.getPosition()),
|
||||
text: txt
|
||||
}]);
|
||||
let insertRange = range ? range : monaco.Range.fromPositions(editor.getPosition());
|
||||
let operation = {
|
||||
range: insertRange,
|
||||
text: txt,
|
||||
forceMoveMarkers: true
|
||||
};
|
||||
editor.executeEdits(txt, [operation]);
|
||||
|
||||
}
|
||||
|
||||
@ -95,7 +100,25 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
|
||||
editor = monaco.editor.create(document.getElementById("container"), {
|
||||
theme: "bsl-white",
|
||||
value: getCode(),
|
||||
language: language.id
|
||||
language: language.id,
|
||||
contextmenu: false
|
||||
});
|
||||
|
||||
for (const [action_id, action] of Object.entries(actions)) {
|
||||
editor.addAction({
|
||||
id: action_id,
|
||||
label: action.label,
|
||||
keybindings: [action.key, action.cmd],
|
||||
precondition: null,
|
||||
keybindingContext: null,
|
||||
contextMenuGroupId: 'navigation',
|
||||
contextMenuOrder: 1.5,
|
||||
run: action.callback
|
||||
});
|
||||
}
|
||||
|
||||
// Replace keybinding for action "Change All Occurrences"
|
||||
//editor._standaloneKeybindingService.addDynamicKeybinding('-editor.action.changeAll')
|
||||
//editor._standaloneKeybindingService.addDynamicKeybinding('editor.action.changeAll', monaco.KeyMod.CtrlCmd | monaco.KeyCode.F5) // Ctrl+F5
|
||||
|
||||
});
|
Loading…
Reference in New Issue
Block a user