Могу ли я добавить обратный вызов щелчком мыши к оформленному тексту? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть украшение, примененное к части текста (в сочетании с регулярным выражением), у него есть возможность указать hoverMessage Мне интересно, есть ли способ указать щелчок мыши на этом элементе. Я хотел бы выполнить некоторую функцию, на основе которой пользователь нажимал оформленный текст.

1 Ответ

1 голос
/ 29 октября 2019

Мне не удалось найти решение для щелчка мышью. В другом вопросе SO было упомянуто, что предоставление событий мыши является маловероятным дополнением к API: (

Что я смог сделать:

  • Добавитьдобавить очки:
    • команды
    • меню
      • редактор / контекст
      • commandPalette
  • зарегистрируйте команду в js и получите местоположение из textEditor

В package.json Я настраиваю свою команду так, чтобы она отображалась в контекстном меню только при условии title, когдафайл открывается в .log файле.

  "contributes": {
    "commands": [
      {
        "command": "gd.my-ext.myCommand",
        "title": "My Command"
      }
    ],
    "menus": {
      "commandPalette": [
        {
          "command": "gd.me-ext.myCommand",
          "when": "false"
        }
      ],
      "editor/context": [
        {
          "command": "gd.me-ext.myCommand",
          "group": "navigation",
          "when": "resourceExtname == .log"
        },
      ]
    },

Затем в extension.ts я регистрирую команду текстового редактора и использую textEditor 's selection и document.

const disposable = vscode.commands.registerTextEditorCommand(
    'gd.me-ext.myCommand',
    (textEditor, edit, ...rest): void => {
      const { selection, document } = textEditor;
      console.log(selection.start.line);
      const line: vscode.TextLine = document.lineAt(selection.start.line);
      // The selection will tell me where the cursor is and I can find a line
      // in which I can use the regex I've used to apply decoration and compare if it was selection I wanted :)
    }
  );
  context.subscriptions.push(disposable);
...