Udostępnij za pośrednictwem


Edytowanie i zapisywanie zapytań (pakiet VSPackage kontroli kodu źródłowego)

Edytory programu Visual Studio mogą emitować zdarzenia zapisywania zapytań edycji zapytań (QEQS). Funkcja wycinków kontroli źródła programu Visual Studio implementuje usługę QEQS, dzięki czemu jest adresatem zdarzeń QEQS. Te zdarzenia są następnie delegowane do aktualnie aktywnej kontroli źródła VSPackage. Active source control VSPackage implementuje IVsQueryEditQuerySave2 metody i . Metody interfejsu IVsQueryEditQuerySave2 są zwykle wywoływane bezpośrednio przed rozpoczęciem edycji dokumentu po raz pierwszy i bezpośrednio przed zapisaniem dokumentu.

QueryEditQuerySave Events

Pakiet VSPackage kontroli źródła musi obsługiwać zdarzenia QEQS przez zaimplementowanie interfejsu IVsQueryEditQuerySave2 i niezbędnych metod. Poniżej znajduje się krótki opis dwóch metod, które pakiet VSPackage musi zaimplementować co najmniej. Rzeczywista implementacja musi być zgodna z logiką modelu kontroli źródła.

QueryEditFiles, metoda

Obiekt QueryEditFiles jest wywoływany, gdy dowolny projekt lub edytor chce zmodyfikować plik. W idealnym przypadku ta metoda jest wywoływana przed zmodyfikowaniem pliku i zapisaniem pliku. Po wywołaniu metoda sprawdza, IVsQueryEditQuerySave2::QueryEditFiles czy dane pliki są pod kontrolą źródła, czy muszą być wyewidencjonowane, i czy można je ponownie załadować. Jeśli okoliczności uniemożliwiają edytowanie plików, IVsQueryEditQuerySave2::QueryEditFiles metoda informuje program wywołujący o anulowaniu edycji. Obiekt wywołujący może również określić tryb wywołania. W trybie dyskretnym ta metoda podejmuje działania tylko wtedy, gdy nie powoduje wyświetlenia żadnego interfejsu użytkownika. Jeśli interfejs użytkownika jest nieunikniony, należy zwrócić flagę, aby wskazać problem.

Metoda zachowuje się w sposób transakcyjny; oznacza to, że jeśli edycja zostanie anulowana w jednym pliku, edycja zostanie anulowana dla wszystkich plików. Z drugiej strony, jeśli edycja jest dozwolona, jest dozwolona dla wszystkich plików. Jeśli ta metoda umożliwia edycję raz dla danego zestawu plików, zawsze musi zezwalać na edytowanie kolejnych wywołań dla tego samego zestawu plików. Pętla zezwalania na edycję będzie kontynuowana do momentu zamknięcia, zapisania i ponownego załadowania plików; dopóki ich atrybuty (właściwości) się nie zmienią; lub do momentu zmiany pakietu kontroli źródła. Przypadki, które należy wziąć pod uwagę podczas implementowania IVsQueryEditQuerySave2::QueryEditFiles metody, obejmują wiele plików, plików specjalnych, anulowanie od użytkownika i edycje w pamięci.

QuerySaveFiles, metoda

Element jest wywoływany QuerySaveFiles , gdy dowolny projekt lub edytor musi zapisać zestaw plików. Po wywołaniu metoda sprawdza, IVsQueryEditQuerySave2::QuerySaveFiles czy podane pliki są tylko do odczytu i czy są pod kontrolą źródła. Jeśli pliki muszą zostać wyewidencjonowane, wywołanie jest delegowane do pakietu kontroli źródła. Jeśli okoliczności uniemożliwiają zapisanie plików, IVsQueryEditQuerySave2::QuerySaveFiles metoda musi poinformować edytor o anulowaniu zapisywania. Podobnie jak w przypadku IVsQueryEditQuerySave2::QueryEditFiles metody, obiekt wywołujący może określić tryb wywołania. W trybie dyskretnym ta metoda podejmuje działania tylko wtedy, gdy nie powoduje wyświetlenia żadnego interfejsu użytkownika. Jeśli interfejs użytkownika jest nieunikniony, należy zwrócić flagę, aby wskazać problem.

Ta metoda musi zachowywać się w sposób transakcyjny; oznacza to, że jeśli zapisywanie zostanie anulowane w jednym pliku, zapisywanie zostanie anulowane dla wszystkich plików. Z drugiej strony, jeśli zapisywanie jest dozwolone, musi być dozwolone dla wszystkich plików. Podobnie jak w przypadku IVsQueryEditQuerySave2::QueryEditFiles metody, przypadki, które należy wziąć pod uwagę podczas implementowania IVsQueryEditQuerySave2::QuerySaveFiles metody, obejmują wiele plików, plików specjalnych, anulowanie od użytkownika i edycje w pamięci.