Lista de verificação: Criação de um serviço de linguagem
A lista de verificação a seguir resume as etapas básicas que você deve tomar para criar um serviço de linguagem para o Visual Studio editor do núcleo. Para integrar o seu serviço de linguagem em Visual Studio, você deve criar um avaliador de expressão de depuração. Para obter mais informações, consulte Escrevendo um avaliador da expressão em tempo de execução de linguagem comum na Extensibilidade de depurador de Visual Studio.
Etapas para a criação de um serviço de linguagem
Implementar a interface IVsPackage.
No seu VSPackage, implementar a IServiceProvider interface para fornecer o serviço de linguagem.
Tornar o seu serviço de linguagem disponíveis para o ambiente de desenvolvimento integrado (IDE) no seu SetSite implementação.
Implementar a IVsLanguageInfo interface na classe de serviço do idioma principal.
O IVsLanguageInfo interface é o ponto de partida da interação entre o editor de núcleo e o serviço de linguagem.
Recursos opcionais
Os recursos a seguir são opcionais e podem ser implementados em qualquer ordem. Esses recursos aumentam a funcionalidade do seu serviço de linguagem.
Coloração de sintaxe
Implementar a interface IVsColorizer. A implementação desta interface deve as informações do analisador para retornar as informações de cor adequado.
O GetColorizer método retorna o IVsColorizer interface. Uma instância de colorizer separada é criada para cada buffer de texto, portanto você deve implementar a IVsColorizer interface separadamente. Para obter mais informações, consulte Coloração de sintaxe.
Janela de código
Implementar a IVsCodeWindowManager interface para ativar o serviço de linguagem receber notificação de quando uma nova janela de código é criada.
O GetCodeWindowManager método retorna o IVsCodeWindowManager interface. O serviço de linguagem pode então adicionar a interface do usuário especial para a janela de código na AddAdornments. O serviço de linguagem também pode fazer qualquer processamento especial, como a adição de um filtro de exibição de texto em OnNewView.
Filtro de exibição de texto
Para fornecer a conclusão da instrução IntelliSense em um serviço de idioma, você deve interceptar alguns dos comandos que o modo de exibição de texto trataria. Para interceptar esses comandos, conclua as etapas a seguir:
Implementar IOleCommandTarget para participar os comandos de editor de cadeia e identificador de comando.
Chamar o AddCommandFilter método e passar o IOleCommandTarget implementação.
Chamar o RemoveCommandFilter método quando você desconectar-se de modo de exibição para que esses comandos não são passados para você.
Comandos que devem ser manipulados dependem dos serviços fornecidos. Para obter mais informações, consulte Comandos importantes para os filtros de serviço de linguagem.
Dica
O IVsTextViewFilter interface deve ser implementada no mesmo objeto, como o IOleCommandTarget interface.
Conclusão da instrução
Implementar a interface IVsCompletionSet.
Suporte para o comando de conclusão de instrução (ou seja, COMPLETEWORD) e chamar o UpdateCompletionStatus método na IVsTextView interface, passando a IVsCompletionSet interface. Para obter mais informações, consulte Conclusão da instrução.
Dicas de método
Implementar a IVsMethodData interface para fornecer dados para a janela de dica de método.
Instale o filtro de exibição de texto para manipular os comandos apropriadamente, para que você saiba quando mostrar uma janela de dica de dados do método. Para obter mais informações, consulte Dica de ferramenta de informações de parâmetro.
Marcadores de erro
Implementar a interface IVsTextMarkerClient.
Criar o erro de objetos de marcador que implementam o IVsTextMarkerClient interface e a chamada a CreateLineMarker método, passando a IVsTextMarkerClient interface do objeto error marcador.
Normalmente, cada marcador de erro gerencia um item na janela de lista de tarefas.
Itens de lista de tarefas.
Implementar uma classe de item de tarefa fornecendo a IVsTaskItem interface.
Implementar uma classe de provedor de tarefa fornecendo a IVsTaskProvider interface e o IVsTaskProvider2 interface.
Implementar uma classe de enumerador de tarefa fornecendo a IVsEnumTaskItems interface.
Registrar o provedor de tarefa com a lista de tarefas RegisterTaskProvider método.
Obter o IVsTaskList interface chamando o provedor de serviços do serviço de idioma com o GUID do serviço SVsTaskList.
Criar objetos de item de tarefa e a chamada a RefreshTasks método na IVsTaskList interface quando há novas ou atualizadas de tarefas.
Itens de tarefa de comentário
Use o IVsCommentTaskInfo interface e o IVsEnumCommentTaskTokens interface para obter o comentário tokens de tarefa.
Obter um IVsCommentTaskInfo interface a partir do SVsTaskList service.
Obter o IVsEnumCommentTaskTokens interface a partir de EnumTokens método.
Implementar a IVsTaskListEvents interface para ouvir as alterações na lista de token.
Estrutura de tópicos
Há várias opções para oferecer suporte a estrutura de tópicos. Por exemplo, você pode oferecer suporte a Recolher para definições de de comando, fornecer regiões controlado pelo editor de estrutura de tópicos ou suporte a regiões controlado pelo cliente. Para obter mais informações, consulte Como: fornecer suporte de estrutura de tópicos expandida.
Registro do serviço de linguagem
Para obter mais informações sobre como registrar um serviço de linguagem, consulte Registrando um serviço de linguagem e Carregando VSPackages.
Ajuda contextual
Fornece contexto para o editor em uma das seguintes maneiras:
- Fornecer contexto para os marcadores de texto, Implementando o IVsTextMarkerContextProvider interface.
Fornecer o contexto de usuário de todos os Implementando o IVsLanguageContextProvider interface.
Consulte também
Outros recursos
Desenvolvimento de um serviço de linguagem
Escrevendo um avaliador da expressão em tempo de execução de linguagem comum