Compartir a través de


Editar/guardar consulta (VSPackage de control de código fuente)

Los editores de Visual Studio pueden difundir eventos de guardado de consultas de edición de consultas (QEQS). El código auxiliar del control de código fuente de Visual Studio implementa el servicio QEQS, de modo que sea el destinatario de los eventos de QEQS. A continuación, estos eventos se delegarán en el VSPackage de control de código fuente activo actualmente. El control de código fuente activo VSPackage implementa los IVsQueryEditQuerySave2 métodos y . Normalmente, los métodos de la IVsQueryEditQuerySave2 interfaz se llaman inmediatamente antes de que se edite un documento por primera vez e inmediatamente antes de guardar un documento.

Eventos QueryEditQuerySave

El control de código fuente VSPackage debe controlar los eventos QEQS mediante la implementación de la IVsQueryEditQuerySave2 interfaz y los métodos necesarios. A continuación se muestra una breve descripción de los dos métodos que el VSPackage debe implementar como mínimo. La implementación real debe estar de acuerdo con la lógica del modelo de control de código fuente.

QueryEditFiles (método)

QueryEditFiles Se llama cuando cualquier proyecto o editor quiere modificar un archivo. Idealmente, se llama a este método antes de modificar el archivo y cuando se guarda un archivo. Cuando se invoca, el IVsQueryEditQuerySave2::QueryEditFiles método comprueba si los archivos especificados están bajo control de código fuente, si deben desprotegirse y si se pueden volver a cargar. Si las circunstancias impiden que los archivos se puedan editar, el IVsQueryEditQuerySave2::QueryEditFiles método indica al programa de llamada que cancele la edición. También es posible que el autor de la llamada especifique un modo de invocación. En el modo "silencioso", este método realiza acciones solo si no hace que aparezca ninguna interfaz de usuario. Si la interfaz de usuario es inevitable, se debe devolver una marca para indicar el problema.

El método se comporta de manera transaccional; es decir, si la edición se cancela en un único archivo, la edición se cancela para todos los archivos. Por el contrario, si se permite la edición, se permite para todos los archivos. Si este método permite editar una vez para un conjunto determinado de archivos, siempre debe permitir la edición en llamadas posteriores para el mismo conjunto de archivos. El bucle allow-edit continúa hasta que se cierran, guardan y vuelven a cargar los archivos; hasta que cambien sus atributos (propiedades); o hasta que se cambie el paquete de control de código fuente. Los casos que se deben tener en cuenta en la implementación del IVsQueryEditQuerySave2::QueryEditFiles método incluyen varios archivos, archivos especiales, cancelar desde el usuario y ediciones en memoria.

QuerySaveFiles (método)

QuerySaveFiles Se llama cuando cualquier proyecto o editor necesita guardar un conjunto de archivos. Cuando se invoca, el IVsQueryEditQuerySave2::QuerySaveFiles método comprueba si los archivos especificados son de solo lectura y si están bajo control de código fuente. Si es necesario desprotegir los archivos, la llamada se delegará en el paquete de control de código fuente. Si las circunstancias impiden que los archivos se guarden, el IVsQueryEditQuerySave2::QuerySaveFiles método debe indicar al editor que cancele el guardado. Al igual que con el IVsQueryEditQuerySave2::QueryEditFiles método , es posible que el autor de la llamada especifique un modo de invocación. En el modo "silencioso", este método realiza acciones solo si no hace que aparezca ninguna interfaz de usuario. Si la interfaz de usuario es inevitable, se debe devolver una marca para indicar el problema.

Este método debe comportarse de forma transaccional; es decir, si el guardado se cancela en un único archivo, el guardado se cancela para todos los archivos. Por el contrario, si se permite guardar, se debe permitir para todos los archivos. Al igual que con el método , los casos que se deben tener en cuenta en la implementación del IVsQueryEditQuerySave2::QueryEditFilesIVsQueryEditQuerySave2::QuerySaveFiles método incluyen varios archivos, archivos especiales, cancelar desde el usuario y ediciones en memoria.