From c0cadf2b9bc6ff607b2ba68ee6761369dc263d47 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Sat, 18 Jul 2020 14:57:25 +0200 Subject: [PATCH] comment/uncomment line Signed-off-by: Akos Kitta --- .../browser/arduino-ide-frontend-module.ts | 2 + .../src/browser/contributions/contribution.ts | 10 +++++ .../src/browser/contributions/go-to-line.ts | 6 +-- .../browser/contributions/toggle-comment.ts | 41 +++++++++++++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 arduino-ide-extension/src/browser/contributions/toggle-comment.ts diff --git a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts index 5e4ec4af..bd8cab80 100644 --- a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts +++ b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts @@ -98,6 +98,7 @@ import { UploadSketch } from './contributions/upload-sketch'; import { CommonFrontendContribution } from './customization/core/common-frontend-contribution'; import { CopyToForum } from './contributions/copy-to-forum'; import { GoToLine } from './contributions/go-to-line'; +import { ToggleComment } from './contributions/toggle-comment'; const ElementQueries = require('css-element-queries/src/ElementQueries'); @@ -328,4 +329,5 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un Contribution.configure(bind, UploadSketch); Contribution.configure(bind, CopyToForum); Contribution.configure(bind, GoToLine); + Contribution.configure(bind, ToggleComment); }); diff --git a/arduino-ide-extension/src/browser/contributions/contribution.ts b/arduino-ide-extension/src/browser/contributions/contribution.ts index 1de1aab3..fb3da59d 100644 --- a/arduino-ide-extension/src/browser/contributions/contribution.ts +++ b/arduino-ide-extension/src/browser/contributions/contribution.ts @@ -87,6 +87,16 @@ export abstract class EditorContribution extends Contribution { return editor instanceof MonacoEditor ? editor : undefined; } + protected async run(commandId: string): Promise { + const editor = await this.current(); + if (editor) { + const action = editor.getControl().getAction(commandId); + if (action) { + return action.run(); + } + } + } + } export namespace Contribution { diff --git a/arduino-ide-extension/src/browser/contributions/go-to-line.ts b/arduino-ide-extension/src/browser/contributions/go-to-line.ts index 4f00ab61..e4fffcf4 100644 --- a/arduino-ide-extension/src/browser/contributions/go-to-line.ts +++ b/arduino-ide-extension/src/browser/contributions/go-to-line.ts @@ -27,11 +27,7 @@ export class GoToLine extends EditorContribution { } async goToLine(): Promise { - const editor = await this.current(); - if (editor) { - const action = editor.getControl().getAction('editor.action.gotoLine'); - return action.run(); - } + return this.run('editor.action.gotoLine'); } } diff --git a/arduino-ide-extension/src/browser/contributions/toggle-comment.ts b/arduino-ide-extension/src/browser/contributions/toggle-comment.ts new file mode 100644 index 00000000..75983ce1 --- /dev/null +++ b/arduino-ide-extension/src/browser/contributions/toggle-comment.ts @@ -0,0 +1,41 @@ +import { injectable } from 'inversify'; +import { EditorContribution, Command, MenuModelRegistry, KeybindingRegistry, CommandRegistry } from './contribution'; +import { ArduinoMenus } from '../menu/arduino-menus'; + +@injectable() +export class ToggleComment extends EditorContribution { + + registerCommands(registry: CommandRegistry): void { + registry.registerCommand(ToggleComment.Commands.TOGGLE_COMMENT, { + execute: () => this.toggleComment() + }); + } + + registerMenus(registry: MenuModelRegistry): void { + registry.registerMenuAction(ArduinoMenus.EDIT__CODE_CONTROL_GROUP, { + commandId: ToggleComment.Commands.TOGGLE_COMMENT.id, + label: 'Comment/Uncomment', + order: '0' + }); + } + + registerKeybindings(registry: KeybindingRegistry): void { + registry.registerKeybinding({ + command: ToggleComment.Commands.TOGGLE_COMMENT.id, + keybinding: 'CtrlCmd+L' + }); + } + + async toggleComment(): Promise { + return this.run('editor.action.commentLine'); + } + +} + +export namespace ToggleComment { + export namespace Commands { + export const TOGGLE_COMMENT: Command = { + id: 'arduino-toggle-comment' + }; + } +}