Compartilhar via


Fornecendo um contexto de serviço do idioma usando a API Legacy

Há duas opções para um serviço de linguagem fornecer o contexto de usuário usando o Visual Studio editor núcleo: fornecer contexto do marcador de texto ou fornecer o contexto de usuário de todos os. As diferenças entre cada são descritas aqui.

Para obter mais informações sobre a fornecer contexto para um serviço de linguagem que está conectado ao seu próprio editor, consulte Como: fornecer contexto para editores.

Fornecer o contexto do marcador de texto para o Editor

Para fornecer contexto para erros do compilador indicados por marcadores de texto na Visual Studio editor do núcleo, implementar a IVsTextMarkerContextProvider interface. Nesse cenário, o serviço de linguagem fornece o contexto somente quando o cursor estiver em um marcador de texto. Isso permite que o editor fornecer a palavra-chave na posição da cursor para o Ajuda dinâmica janela sem atributos.

Fornecer o contexto de todos os usuários para o Editor

Se você estiver criando um serviço de linguagem e estiver usando o Visual Studio core editor, e em seguida, você pode implementar a IVsLanguageContextProvider interface para fornecer contexto para o seu serviço de linguagem.

Para a implementação de IVsLanguageContextProvider, um conjunto de propriedades de contexto (coleção) é anexado para o editor, que é responsável por atualizar o conjunto de propriedades de contexto. Quando o Ajuda dinâmica janela chamadas a Update interface em que este conjunto de propriedades de contexto no tempo ocioso, a bolsa de contexto consultará o editor para obter uma atualização. O editor, em seguida, notifica o serviço de linguagem que ele deve atualizar o editor e passa um ponteiro para a bolsa de contexto. Isso é feito chamando o UpdateLanguageContext método do editor para o serviço de linguagem. Usando o ponteiro para a bolsa de contexto, o serviço de idioma pode agora adicionar e remover palavras-chave e atributos. Para obter mais informações, consulte IVsLanguageContextProvider.

Há duas maneiras diferentes para implementar IVsLanguageContextProvider:

  • Fornecer uma palavra-chave para a bolsa de contexto

    Quando o editor é chamado para atualizar o conjunto de propriedades de contexto, passe nas palavras-chave apropriadas e os atributos e, em seguida, retornar S_OK. Esse valor de retorno instrui o editor para manter seu contexto de palavra-chave e o atributo, em vez de fornecer a palavra-chave na posição da cursor para a bolsa de contexto.

  • Obter a palavra-chave a partir da palavra-chave na posição da cursor

    Quando o editor é chamado para atualizar o conjunto de propriedades de contexto, passe os atributos apropriados e, em seguida, retornar E_FAIL. Esse valor de retorno instrui o editor para manter seus atributos na maleta contexto, mas atualizar o conjunto de propriedades de contexto com a palavra-chave na posição da cursor.

O diagrama a seguir demonstra como o contexto é fornecido para um serviço de linguagem que implementa IVsLanguageContextProvider.

Contexto de um serviço de linguagem

Gráfico de LangServiceImplementation2

Como você pode ver no diagrama, o Visual Studio editor de texto do núcleo tem um conjunto de propriedades de contexto anexado a ele. Esse conjunto de propriedades de contexto aponta para três bolsas de subcontexto separadas: serviço de linguagem, o editor padrão e o marcador de texto. Os idioma service e o texto marcador subcontexto bolsas contenham atributos e palavras-chave para o serviço de idioma, se a IVsLanguageContextProvider interface é implementada, marcadores de texto e se a IVsTextMarkerContextProvider interface é implementada. Se você não implemente a qualquer uma dessas interfaces, o editor fornece contexto para a palavra-chave na posição da cursor na maleta subcontexto editor padrão.

Diretrizes de contexto para Designers e editores

Designers e editores devem fornecer uma palavra-chave geral do editor ou janela designer. Isso é feito para que um tópico da Ajuda genérica, mas apropriado, será exibida para o designer ou editor quando um usuário pressiona F1. Um editor deve, além disso, fornecer a palavra-chave atual na posição da cursor ou fornecer um termo-chave com base na seleção atual. Isso é feito para garantir que um tópico da Ajuda para o texto ou elemento de interface do usuário apontada ou selecionou serão exibidas quando o usuário pressiona F1. Um designer fornece contexto para um item selecionado em um designer, como um botão em um formulário. Designers e editores também devem conectar a um serviço de linguagem como descrito na Conceitos básicos de serviço do idioma.