Closed leonpolak closed 2 years ago
Добрый день! Могу попробовать реализовать это.
Посмотрите - как dsystem/keyboard.js рассылаются эвенты с сочетаниями клавиш (строки 20-30). В editors/BaseCodeEditor надо их перехватывать (как в TreesManager.js строка 79) и делать глобальный document.querySelectorAll('CodeMirror-gutters').classList.toggle('display-none'). Неплохо было-бы ещё это запоминать в LocalStorage через modules.store, и проверять при загрузке
Как продвигается данный issues? Нужна ли помощь?
Так. Написать этот код заняло у меня в несколько раз меньше времени, чем написание ТЗ.
controller_topheader.js
constructor(id, modules) {
....
this.modules.events.listen('Ctrl+l', ()=>this.toggleLineNumbers(true));
const storedFromLastSession = this.modules.store.get('displayLineNumbers', true);
if (storedFromLastSession === false) this.toggleLineNumbers(false);
else this.modules.store.set('displayLineNumbers', true, true);
}
toggleLineNumbers(storeChanges) {
this.modules.events.emit('toggleLineNumbers');
if (storeChanges) {
const storedFromLastSession = this.modules.store.get('displayLineNumbers', true);
this.modules.store.set('displayLineNumbers', !storedFromLastSession, true);
}
}
}
baseCodeEditor.js
constructor(id, modules, view, config = {}) {
....
this.modules.events.listen('toggleLineNumbers', () => {
this.editor.setOption('lineNumbers', !this.editor.getOption('lineNumbers'));
});
}
index.js
this.controllerTopHeader = new controllerTopHeader('top-header', modules); - инициализируем последним
Так. Написать этот код заняло у меня в несколько раз меньше времени, чем написание ТЗ.
controller_topheader.js constructor(id, modules) { .... this.modules.events.listen('Ctrl+l', ()=>this.toggleLineNumbers(true)); const storedFromLastSession = this.modules.store.get('displayLineNumbers', true); if (storedFromLastSession === false) this.toggleLineNumbers(false); else this.modules.store.set('displayLineNumbers', true, true); } toggleLineNumbers(storeChanges) { this.modules.events.emit('toggleLineNumbers'); if (storeChanges) { const storedFromLastSession = this.modules.store.get('displayLineNumbers', true); this.modules.store.set('displayLineNumbers', !storedFromLastSession, true); } } } baseCodeEditor.js constructor(id, modules, view, config = {}) { .... this.modules.events.listen('toggleLineNumbers', () => { this.editor.setOption('lineNumbers', !this.editor.getOption('lineNumbers')); }); } index.js this.controllerTopHeader = new controllerTopHeader('top-header', modules); - инициализируем последним
Значит issues уже решен?
Да
По сочетанию клавиш и в настройках. Попозже расшифрую подробнее, но пока можно скопировать сочетание клавиш из VS Code и просто показывать - не показывать по селектору класса "CodeMirror-gutters".