Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os editores do Visual Studio podem transmitir eventos de Query Edit Query Save (QEQS). O Stub de Controle de Código-Fonte do Visual Studio implementa o serviço QEQS para ser o destinatário dos eventos do QEQS. Esses eventos são delegados ao VSPackage de controle do código-fonte atualmente ativo. O VSPackage de controle de origem ativo implementa o IVsQueryEditQuerySave2 e seus métodos. Os métodos da IVsQueryEditQuerySave2 interface normalmente são chamados imediatamente antes de um documento ser editado pela primeira vez e imediatamente antes de um documento ser salvo.
Eventos QueryEditQuerySave
O VSPackage de controle do código-fonte deve lidar com os eventos do QEQS, implementando a interface IVsQueryEditQuerySave2 e os métodos necessários. Abaixo está uma breve descrição dos dois métodos que o VSPackage deve implementar no mínimo. A implementação real deve estar de acordo com a lógica do modelo de controle do código-fonte.
Método QueryEditFiles
QueryEditFiles é invocado quando qualquer projeto ou editor deseja modificar um arquivo. Idealmente, esse método é chamado antes de o arquivo ser modificado e quando um arquivo é salvo. Quando invocado, o IVsQueryEditQuerySave2::QueryEditFiles método verifica se os arquivos determinados estão sob controle do código-fonte, se precisam ser verificados e se podem ser recarregados. Se as circunstâncias impedirem que os arquivos sejam editáveis, o IVsQueryEditQuerySave2::QueryEditFiles método informa ao programa de chamada para cancelar a edição. Também é possível que o chamador especifique um modo de invocação. No modo "silencioso", esse método executará ações somente se não fizer com que nenhuma interface do usuário apareça. Se a interface do usuário for inevitável, um sinalizador deverá ser retornado para indicar o problema.
O método se comporta de maneira transacional; ou seja, se a edição for cancelada em um único arquivo, a edição será cancelada para todos os arquivos. Por outro lado, se a edição for permitida, ela será permitida para todos os arquivos. Se esse método permitir a edição uma vez para um determinado conjunto de arquivos, ele sempre deverá permitir a edição em chamadas subsequentes para o mesmo conjunto de arquivos. O loop allow-edit continua até que os arquivos sejam fechados, salvos e recarregados; até que seus atributos (propriedades) sejam alterados; ou até que o pacote de controle do código-fonte seja alterado. Os casos a serem considerados na implementação do IVsQueryEditQuerySave2::QueryEditFiles método incluem vários arquivos, arquivos especiais, cancelamento do usuário e edições na memória.
Método QuerySaveFiles
Quando qualquer projeto ou editor necessita salvar um conjunto de arquivos, QuerySaveFiles é chamado. Quando invocado, o IVsQueryEditQuerySave2::QuerySaveFiles método verifica se os arquivos determinados são somente leitura e se estão sob controle do código-fonte. Se os arquivos precisarem ser verificados, a chamada será delegada ao pacote de controle do código-fonte. Se as circunstâncias impedirem que os arquivos sejam salvos, o IVsQueryEditQuerySave2::QuerySaveFiles método deverá informar o editor para cancelar o salvamento. Assim como acontece com o IVsQueryEditQuerySave2::QueryEditFiles método, é possível que o chamador especifique um modo de invocação. No modo "silencioso", esse método executará ações somente se não fizer com que nenhuma interface do usuário apareça. Se a interface do usuário for inevitável, um sinalizador deverá ser retornado para indicar o problema.
Esse método deve se comportar de maneira transacional; ou seja, se o salvamento for cancelado em um único arquivo, o salvamento será cancelado para todos os arquivos. Por outro lado, se o salvamento for permitido, ele deverá ser permitido para todos os arquivos. Assim como no método IVsQueryEditQuerySave2::QueryEditFiles, os casos a serem considerados na implementação do método IVsQueryEditQuerySave2::QuerySaveFiles incluem múltiplos arquivos, arquivos especiais, cancelamento pelo usuário e edições na memória.