Как автозаполнять аргументы в пользовательских функциях для Монако?

В настоящее время я хочу использовать редактор monaco с PHP, и я хочу расширить его с помощью автозаполнения для обычных функций PHP, а также пользовательских функций.

В то время как автозаполнение функций отлично работает на моем раннем прототипе, автозаполнение параметров не работает. См. пример скрипта: https://jsfiddle.net/95aq6497/2/

В настоящее время в качестве автозаполнения предоставляется и работает только функция substr. Однако помощник для параметров, определенных в registerSignatureHelpProvider, не работает:

 monaco.languages.registerSignatureHelpProvider('php', {
provideSignatureHelp: (model, position, token) => {
  console.log('Signature Help');
  return {
    activeParameter: 0,
    activeSignature: 0,
    signatures: [{
      label: 'string substr(string $string, int $start [, int $length])',
      parameters: [
        {
          label: 'string $string',
          documentation: 'The input string. Must be one character or longer.'
        },
        {
          label: 'int $start',
          documentation: "If $start is non-negative, the returned string will start at the $start'th position in string, counting from zero. For instance, in the string 'abcdef', the character at position 0 is 'a', the character at position 2 is 'c', and so forth.\r\nIf $start is negative, the returned string will start at the $start'th character from the end of string. If $string is less than $start characters long, FALSE will be returned."
        },
        {
          label: 'int $length',
          documentation: 'If $length is given and is positive, the string returned will contain at most $length characters beginning from $start (depending on the length of $string) If $length is given and is negative, then that many characters will be omitted from the end of $string (after the start position has been calculated when a start is negative). If $start denotes the position of this truncation or beyond, FALSE will be returned. If $length is given and is 0, FALSE or NULL, an empty string will be returned. If $length is omitted, the substring starting from $start until the end of the string will be returned.'
        }
      ]
    }]
  };
}

});

Функция даже не выполняется, так как console.log вообще не запускается. Что мне не хватает? Подобное расширение javascript с помощью функции работало нормально, но не работает для PHP, так что здесь отличается?


person Niels    schedule 01.02.2018    source источник


Ответы (1)


Похоже, вы не указали вариант signatureHelpTriggerCharacters:

monaco.languages.registerSignatureHelpProvider('php', {
  signatureHelpTriggerCharacters: ['(', ','],  <==================== this one
  provideSignatureHelp: (model, position, token) => {

https://jsfiddle.net/hec12da1/

Чтобы реализовать функцию provideSignatureHelp, я бы посоветовал вам взглянуть на машинописную версию.

https://github.com/Microsoft/monaco-typescript/blob/7027f0b4ba56fc0df136fb41791aa27e8c25ef54/src/languageFeatures.ts#L262

person yurzui    schedule 02.02.2018