AuthoringSink Třída

Definice

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

AuthoringSink se používá ke shromáždění informací z analyzátoru, které vám pomůžou následující: – zasílání zpráv o chybách – párové závorky (CTRL-])-IntelliSense: výběr členů, CompleteWord, QuickInfo, MethodTips-Správa okna Automatické hodnoty v ladicím programu – ověřování zarážek

public ref class AuthoringSink
[Windows::Foundation::Metadata::WebHostHidden]
class AuthoringSink
[System.CLSCompliant(false)]
public class AuthoringSink
[<System.CLSCompliant(false)>]
type AuthoringSink = class
Public Class AuthoringSink
Dědičnost
AuthoringSink
Atributy

Poznámky

Vytvoření instance této třídy je v rámci analyzátoru často používáno k zapamatování různých prvků jazyka, které vám pomůžou s následujícími funkcemi:

  • Zasílání zpráv o chybách.

  • Spárování složených závorek

  • Výběr členů IntelliSense, kompletní tipy pro Word, rychlé informace a metody.

  • Skryté oblasti.

  • Správa obsahu okna Automatické hodnoty v ladicím programu.

  • Ověření zarážky.

Základní třída má podporu pro všechny kromě posledních dvou funkcí.

Chyby

Základní třída používá interní ArrayList volání errors , které obsahuje chyby zjištěné při analýze. Tento seznam se zobrazí na konci úplné operace analýzy převedením každé chybové zprávy na položku seznamu úkolů voláním CreateErrorTaskItem a přidáním okna Seznam chyb úlohy. Tyto chyby jsou také zobrazeny ve zdrojovém souboru jako vlnovka v kódu, který se nachází v chybě. To je prováděno automaticky třídami MPF. AuthoringSinkKonstruktor třídy přebírá parametr, který určuje maximální počet chyb, které mohou být zachovány třídou.

Spárování složených závorek

Základní třída používá interní ArrayList volání Braces , které obsahuje párové dvojice elementů jazyka (například "{" a "}") a také ZÁROVNÁVACÍ tři (například " for() ", " { " a " } "). Základní třída s názvem BraceMatch se používá pro porovnání párů, zatímco odvozená třída s názvem TripleMatch přidává informace pro třetí prvek jazyka. Volání MatchPair metod a MatchTriple je provedeno pouze v případě, že je důvodem analýzy shoda složených závorek (viz BraceMatching vlastnost, kde najdete podrobnosti o přesných důvodech). Viz část příklad MatchPair pro popis BraceMatch třídy a viz část příklad MatchTriple pro popis TripleMatch třídy.

IntelliSense

Technologie IntelliSense má alespoň čtyři odlišné režimy, které může podporovat služba jazyka. Jsou to:

  1. Výběr členů: Tato možnost poskytuje seznam členů pro aktuální obor, který se obvykle dodává poté, co uživatel zadá konkrétní znak. Například pokud uživatel zadal název proměnné následovaný znakem ".", zobrazí se seznam členů pro typ této proměnné pro výběr.

  2. Complete Word: Tato možnost prezentuje seznam možných dokončení pro slovo, které uživatel zadal.

  3. Rychlé informace: Tato možnost zobrazuje informace o identifikátoru. Tato událost se aktivuje buď uživatelem, který má ukazatel myši nad identifikátorem, nebo umístěním úpravy blikajícího kurzoru na identifikátor a výběrem možnosti rychlé informace z nabídky technologie IntelliSense .

  4. Popis metody: Tato možnost zobrazuje informace o parametrech, které uživateli pomůžou při zadávání metody a jejích parametrů. Zobrazí se popis tlačítka s jedním z možných přetížených forem metody spolu s parametry. Když uživatel zadá každý parametr, aktualizuje se popis tlačítka a zobrazí se zadaný parametr.

Všechny tyto režimy jsou podporovány metodami StartName a QualifyName a interními seznamy MethodCalls , Names , a SourceLocations . MethodCalls se používá ke sledování signatury metod při jejich analýze. Names a SourceLocations se používají ke sledování parametrů metody při analýze seznamu parametrů metody. Všimněte si, že pro každý název v Names seznamu je TextSpan v seznamu odpovídající objekt SourceLocations .

Skryté oblasti

Skryté oblasti jsou oddíly kódu, které uživatel může volitelně skrýt ze zobrazení. Tyto oblasti jsou obvykle používány jako součást podpory pro sbalení, kde lze každou metodu a třídu sbalit do jediného řádku, čímž se celková struktura tříd vymaže. Některé jazyky podporují konkrétní skryté oblasti prostřednictvím speciálních klíčových slov. Například jazyk C# používá #region / #endregion v závorkách oblast, kterou uživatel normálně potřebuje skrytý. Skrytá oblast je označena TextSpan objektem, který je zabalen v NewHiddenRegion objektu, který je zase uložen v interním poli s názvem hiddenRegions . Skryté oblasti jsou přidány voláním AddHiddenRegion .

Automatické hodnoty

Během ladění může okno Automatické hodnoty zobrazovat všechny místní proměnné a parametry, které jsou k dispozici v konkrétním oboru rámce zásobníku. Služba jazyka může tyto proměnné podporovat jejich umístěním při analýze. To umožňuje dynamicky aktualizovat okno Automatické hodnoty při úpravách během ladění. Základní třída AuthoringSink nepodporuje automatické hodnoty, takže musíte z třídy odvodit třídu AuthoringSink a implementovat AutoExpression metodu sami.

Ověření zarážky

Při umístění zarážky není umístění zarážky ověřováno, dokud se nespustí ladění a načten ladicí stroj. Pokud vaše jazyková služba podporuje identifikaci platných oddílů kódu, kde lze umístit zarážku, pak tyto informace lze použít k ověření umístění zarážek bez načtení ladicího stroje. Všimněte si, že ladicí stroj je vždy konečným posouzením při ověřování umístění zarážek, ale služba jazyka může uživateli poskytnout rychlou zpětnou vazbu. Základní třída AuthoringSink nepodporuje ověřování zarážky, takže musíte odvodit třídu od AuthoringSink třídy a implementovat CodeSpan metodu sami.

Poznámky pro dědice

Pokud vaše jazyková služba podporuje výrazy v okně Automatické hodnoty nebo ověřování zarážek v rozsahu kódu, musíte odvodit třídu od AuthoringSink třídy a přepsat příslušné metody ( AutoExpression(TextSpan) a CodeSpan ). Pak přepište CreateAuthoringSink(ParseReason, Int32, Int32) metodu ve Source třídě a vytvořte instanci vaší verze AuthoringSink třídy. AuthoringSinkTřída je vytvořena při každém volání operace analýzy pro.

Poznámky pro volající

Tato třída je k dispozici ve třídě na několika místech Source , aby bylo možné zpracovat sjednocení, IntelliSense a hlášení chyb ve složených závorkách.

Tip: při implementaci vaší třídy odvozené z AuthoringScope přidejte do třídy pole pro uložení AuthoringSink objektu vytvořeného pro ParseRequest objekt. Tímto způsobem může váš AuthoringScope objekt přistupovat ke všem informacím uloženým v AuthoringSink objektu.

Konstruktory

AuthoringSink(ParseReason, Int32, Int32, Int32)

Inicializuje AuthoringSink třídu.

Vlastnosti

BraceMatching

Pomocí této vlastnosti můžete zjistit, jestli by analyzátor měl volat MatchPair nebo MatchTriple.

Column

Získá sloupec, na kterém byla analýza zahájena.

FindNames

Tato vlastnost slouží k vyhledání, zda má analyzátor vyvolat parametr Start nebo opravňují

FoundMatchingBrace

Sleduje, zda byl do interního seznamu přidán párový pár složených závorek.

HiddenRegions

Tato vlastnost slouží k vyhledání, zda by měl váš analyzátor volat AddHiddenRegion

Line

Vrátí řádek, na kterém byla operace analýzy zahájena.

MethodParameters

Tuto vlastnost použijte k nalezení, zda by měl váš analyzátor volat StartParameters, NextParameter nebo EndParameters.

ProcessHiddenRegions

Určuje, zda mají být skryté oblasti aktualizovány nebo nikoli na základě volání AddHiddenRegion. Výchozí hodnota je false.

Reason

Vrátí důvod, proč byla operace analýzy spuštěna.

Metody

AddError(String, String, TextSpan, Severity)
AddError(String, String, TextSpan, Severity, TaskCategory)

Přidejte chybovou zprávu. Tato metoda také filtruje duplicity, takže v okně Seznam chyb se zobrazí pouze jedinečné chyby.

AddHiddenRegion(NewHiddenRegion)

AddHiddenRegion to zavolá přímo, můžete ho zavolat přímo nebo přepsat, aby se změnilo výchozí chování.

AddHiddenRegion(TextSpan)

To je podpora sbalení.

AddHiddenRegion(TextSpan, String)

Umožňuje přidat skrytou oblast do interního seznamu.

AutoExpression(TextSpan)

Výraz autoexpression je podporován pro IVsLanguageDebugInfo. GetProximityExpressions. Je volána pro každý výraz, který může být zajímavou pro uživatele v okně Automatické ladění. Všechny názvy, které jsou nastavené pomocí hodnoty Start a název typu, se už automaticky přidají do okna auto! To znamená, že se tento výraz používá zřídka.

CodeSpan(TextSpan)

CodeSpan je podpora pro IVsLanguageDebugInfo. ValidateBreakpointLocation. Je volána pro každou oblast, která obsahuje "spustitelný" kód. Slouží k ověření zarážek. Komentáře se automaticky postarují na základě TokenInfo vráceného ze skeneru. Obvykle je tato metoda volána při spuštění nebo ukončení procedury.

EndParameters(TextSpan)

EndParameter se volá na konci datového, IE. ")".

MatchMultiple(TextSpan[], Int32)

K zvýraznění tučného příkazu je použita shoda násobek. Například jazyk může definovat konstrukci, například if... elif... elif... jinak... je také možné předávat prioritu, aby bylo možné určit prioritu více překrývajících párů pro párování složených závorek. Dvojice párování s nejvyšší prioritou (největší celočíselnou hodnotou) WINS.

MatchPair(TextSpan, TextSpan, Int32)

Pokaždé, když se analyzuje párové páry, např. {a}, tato metoda se zavolá s textem v rozsahu levé i pravé položky. Tyto informace se používají, když uživatel zadá "CTRL-]" v sadě VS k nalezení odpovídajícího složené závorky a když je povolen automatický zvýrazňování závorek. Lze také určit prioritu, aby bylo možné určit prioritu více překrývajících párů pro párování složených závorek. Dvojice párování s nejvyšší prioritou (největší celočíselnou hodnotou) WINS.

MatchTriple(TextSpan, TextSpan, TextSpan, Int32)

Pro zvýraznění tučného příkazu je použita shoda tripples. Například při psaní uzavírací závorky v příkazu foreach VS zvýrazní tučně příkaz, který byl zavřen. První dva kontexty zdroje jsou začátek a konec příkazu, který otevírá blok (například rozpětí "foreach (...)". {"a třetí zdrojový kontext je pravá složená závorka pro blok (např."} "). Lze také určit prioritu, aby bylo možné určit prioritu více překrývajících párů pro párování složených závorek.
Dvojice párování s nejvyšší prioritou (největší celočíselnou hodnotou) WINS.

NextParameter(TextSpan)

NextParameter se volá po StartParameters na začátku každého nového parametru, IE. ",".

QualifyName(TextSpan, TextSpan, String)

Je volána možnost kvalifikovat pro každou kvalifikaci s použitím textového rozpětí selektoru (např. "."). a textovým rozsahem názvu ("WriteLine").

StartName(TextSpan, String)

V rámci podpory výběru členů, CompleteWord, QuickInfo, MethodTip a Autos jsou volány metody Start a kvalifikovat. Pro každý analyzovaný identifikátor (např. "Console") je volána metoda Start.

StartParameters(TextSpan)

Metody StartParameters, Parameter a EndParameter jsou volány v rámci podpory metody Tip technologie IntelliSense (ECMD_PARAMINFO). [StartParameters] je volána při spuštění parametrů metody, IE. "(". [Parameter] se volá na začátku nového parametru, IE. ",". [EndParameter] je volána na konci datového, IE. ")".

Platí pro