Compartilhar via


Como: fornecer contexto para editores

Para um editor, o contexto está ativo somente quando o editor tem foco ou tinha foco imediatamente antes do foco foi movido para uma janela de ferramenta. Você pode fornecer contexto para um editor, fazendo o seguinte:

  1. Crie um conjunto de propriedades de contexto.

  2. Publica o conjunto de propriedades de contexto para o identificador do elemento de seleção (SEID).

  3. Mantenha o contexto na maleta.

Essas tarefas são cobertas por procedimentos a seguir. Para obter mais informações sobre como fornecer o contexto, consulte Robust Programming posteriormente neste tópico.

Para criar um conjunto de propriedades de contexto para um editor ou designer

  1. Chame QueryService em seu IServiceProvider interface para o SVsMonitorUserContext service.

    Um ponteiro para o IVsMonitorUserContext interface é retornado.

  2. Chamar o CreateEmptyContext método para criar um novo recipiente de contexto ou subcontexto.

    Um ponteiro para o IVsUserContext interface é retornado.

  3. Chamar o AddAttribute método para adicionar atributos, palavras-chave de pesquisa ou palavras-chave de F1 para a bolsa de contexto ou subcontexto.

  4. Se você estiver criando uma sacola subcontexto, chame o AddSubcontext método para vincular a bolsa subcontexto para o conjunto de propriedades de contexto do pai.

  5. Chame AdviseUpdate para receber notificação quando o Ajuda dinâmica janela está prestes a atualizar.

    Tendo o Ajuda dinâmica janela chamar seu editor quando ele estiver pronto para atualizar lhe dá a oportunidade de atrasar a alterar o contexto até que a atualização ocorra. Isso pode melhorar o desempenho, pois permite adiar a execução de algoritmos demorados até que o tempo ocioso do sistema está disponível.

Para publicar o conjunto de propriedades de contexto para o SEID

  1. Chamar QueryService sobre o SVsTrackSelectionEx service para retornar um ponteiro para o IVsTrackSelectionEx interface.

  2. Chame OnElementValueChange, especificando um identificador de elemento (elementid parâmetro) o valor de SEID_UserContext para indicar que você esteja passando o contexto para o nível global.

  3. Quando o editor ou designer fica ativo, os valores no seu IVsTrackSelectionEx objeto são propagadas para a seleção de global. Você só precisa concluir esse processo uma vez por sessão e, em seguida, armazenar o ponteiro para o contexto global criado quando você chamou OnElementValueChange.

Para manter o conjunto de propriedades de contexto

  1. Implementar IVsUserContext para garantir que o Ajuda dinâmica janela chama o editor ou designer, antes de ele atualiza.

    Para cada conjunto de propriedades de contexto que chamou AdviseUpdate depois que o conjunto de propriedades de contexto é criado e implementou IVsUserContextUpdate, as chamadas IDE UpdateUserContext para notificar o provedor de contexto que o conjunto de propriedades de contexto será atualizado. Você pode usar esta chamada para alterar os atributos e palavras-chave na maleta contexto e, em qualquer sacos subcontexto, antes de Ajuda dinâmica janela atualização ocorre.

  2. Chame SetDirty no conjunto de contexto para indicar que o editor ou designer possui novo contexto.

    Quando o Ajuda dinâmica janela chamadas UpdateUserContext para indicar que ele estiver atualizando, o editor ou designer pode atualizar o contexto apropriadamente para o conjunto de propriedades de contexto do pai e de qualquer bolsas subcontexto naquele momento.

    Dica

    O SetDirty sinalizador é definido automaticamente como true sempre que o contexto é adicionado ou removido do conjunto de contexto.O Ajuda dinâmica janela só chama UpdateUserContext no conjunto de contexto se a SetDirty sinalizador estiver definido como true.Ele é redefinido para false após a atualização.

  3. Chame AddAttribute para Adicionar contexto à coleção contexto ativo ou RemoveAttribute para remover o contexto.

Programação robusta

Se você estiver escrevendo seu próprio editor, você deve concluir todas as três dos procedimentos neste tópico para fornecer contexto para o editor. Para obter mais informações, consulte Editor Design Decisions.

Dica

Para ativar corretamente uma janela de editor ou designer e garantir que o roteamento de comando está atualizado corretamente, você deve chamar Show no componente para torná-lo a janela de foco.

O SEID é uma coleção de propriedades que são alteradas com base na seleção. Informações de SEID estão disponíveis através da seleção global. A seleção global é conectados com eventos disparados pela IVsTrackSelectionEx interface, e tem uma lista de tudo o que está selecionado (editor atual, a janela de ferramenta atual, hierarquia atual e assim por diante).

Para designers e editores, na qual contexto pode alterar sempre que o cursor se move dentro de uma palavra, ele é ineficiente a atualização constante a bolsa de contexto. Para facilitar a atualização mais eficiente sempre que você detecte o cursor se movendo dentro do editor ou janela designer, você pode chamar SetDirty. Isso permite que você mantenha as alterações de contexto, até há tempo ocioso e serviço de contexto do IDE envia notificação para o editor ou designer que o Ajuda dinâmica janela está atualizando. Essa abordagem é usada no procedimento "para manter o conjunto de propriedades de contexto" neste tópico.

Depois de fornecer contexto para atividades no seu editor ou designer, você deve fornecer uma palavra-chave do F1 específica para permitir que os usuários obtenham ajuda para o editor ou designer propriamente dito.

Consulte também

Referência

OnElementValueChange

AddAttribute

AdviseUpdate

RemoveAttribute

SetDirty

IVsUserContextUpdate

UpdateUserContext

Show

SVsTrackSelectionEx