Completor Klasse

Definition

Wichtig

Diese API ist nicht CLS-kompatibel.

Dient zum Einbinden und Anwenden mehrerer Änderungen auf eine Textansicht als Einzelvorgang.

public ref class Completor : IDisposable
[System.CLSCompliant(false)]
public class Completor : IDisposable
[<System.CLSCompliant(false)>]
type Completor = class
    interface IDisposable
Public Class Completor
Implements IDisposable
Vererbung
Completor
Attribute
Implementiert

Beispiele

Dieses Beispiel zeigt eine einfache Vervollständigungs Operation mithilfe der- Completor Klasse in einer abgeleiteten Version der- Declarations Klasse. Mit diesem Vorgang wird der jeweilige Text in Anführungszeichen eingeschlossen.

namespace MyLanguagePackage  
{  
    class MyDeclarations : Declarations  
    {  
        LanguageService m_languageService;  

        MyDeclarations(LanguageService service) : base()  
        {  
            m_languageService = service;  
        }  

        public override char OnAutoComplete(IVsTextView view,  
                                            string committedText,  
                                            char commitChar,  
                                            int index)  
        {  
            if (committedText != null && view != null && m_languageService != null)  
            {  
                bool fHasCommitChar = commitChar != '\0' && commitChar != '\r';  
                // If user completes word with single quotes, use single quotes;  
                // Otherwise, always use double quotes.  
                char quoteChar = (commitChar == '\'') ? '\'' : '"';  

                Completor completor = new Completor(m_languageService,  
                                                    view,  
                                                    "Add Quotes");  
                // All edits are applied when the completor object is disposed off.  
                using (completor)  
                {  
                    int delta = fHasCommitChar ? 1 : 0;  
                    completor.TypeLeft(committedText.Length + delta);  
                    completor.TypeChar(quoteChar);  
                    completor.TypeRight(committedText.Length + delta);  
                    if (commitChar != quoteChar)  
                    {  
                        completor.TypeChar(quoteChar);  
                    }  
                }  
            }  

            return '\0';    // No further operations needed  
        }  
    }  
}  

Hinweise

Diese Hilfsklasse wird verwendet, um Änderungen an der aktuellen Zeile aufgrund von Abschlussaktionen zu verwalten. Das heißt, Aktionen, die dazu führen, dass Text automatisch eingefügt wird.

Diese Klasse sammelt Zeichen und Cursor Aktionen und wendet Sie auf die aktuelle Position der Einfügemarke als einzelne Verbund Aktion an. Dadurch können alle Zeichen in einem einzelnen Vorgang rückgängig gemacht werden. Diese Klasse unterstützt das Einfügen eines beliebigen Text Zeichens, das Verschieben der Einfügemarke nach links und rechts sowie das Löschen und Rückraum (diese werden durch Aufrufen einer anderen Methode für diese Klasse angewendet).

Außerdem werden alle eingefügten Zeichen und Cursor Bewegungen einer Makro Aufzeichnung hinzugefügt, wenn eine solche Aufzeichnung aktiviert ist.

Diese Klasse verwaltet einen internen Puffer, der alle einzufügenden Zeichen enthält. Dieser Puffer wird als ein Datenstrom behandelt. beliebige Zeichen können in diesen Puffer eingefügt werden, sogar Steuerzeichen, wie z. b. Zeilen Trennzeichen. Nur nach dem Einfügen der Zeichen werden alle Steuerzeichen behandelt. Wenn Sie diese Klasse beispielsweise verwenden, um die Zeichenfolge " Hello\nThere " in eine leere Quelldatei einzufügen, enthält die Quelldatei zwei Zeilen. Die Einfügemarke wird jedoch sechs Zeichen nach dem Wort " Hello " in der ersten Zeile (fünf Buchstaben in " There " und einem Zeilenumbruch Zeichen für insgesamt sechs Zeichen) positioniert. Diese Klasse versteht in dieser Situation nicht mehrere Zeilen. alles, was Sie sehen, ist ein Datenstrom, der eingefügt werden soll.

Hinweise für Vererber

Diese Klasse ist eigenständig, und es gibt in der Regel keinen Grund, von dieser Klasse abzuleiten.

Hinweise für Aufrufer

Instanziieren und verwenden Sie diese Klasse, wenn Sie eine Reihe von Zeichen orientierten Einfügungen an der aktuellen Position der Einfügemarke einschließen müssen.


Da diese Klasse in der Regel in einem Abschluss Vorgang verwendet wird, wurde das Commit oder das Abschluss Zeichen möglicherweise bereits der Zeile hinzugefügt, bevor diese Klasse Änderungen anwendet. Wenn Sie das Commitzeichen ersetzen müssen, müssen Sie die- TypeBackspace(Int32) Methode als ersten Vorgang zum Löschen des Commit-Zeichens aus der Zeile aufzurufen.

Konstruktoren

Completor(LanguageService, IVsTextView, String)

Initialisiert eine neue Instanz der Completor-Klasse.

Eigenschaften

AtEndOfLine

Bestimmt, ob die interne Position der Einfügemarke am Ende der aktuellen Zeile ist.

IsExpansionActive

Bestimmt, ob ein Codeausschnitt bearbeitet wird.

Methoden

Apply()

Wendet alle Änderungen, die durch das Completor-Objekt vorgenommen werden an.

Dispose()

Bereinigt jede gemachte Speicherbelegung, bevor das Objekt zerstört wird.

RefreshLine()

Ruft die aktuelle Textzeile vom Source-Objekt ab.

TypeBackspace(Int32)

Führt die angegebene Anzahl von Rücktasten in der Zeile aus, die bearbeitet wird, und aktualisiert die interne Position der Einfügemarke.

TypeChar(Char)

Fügt das angegebene Zeichen ein und aktualisiert die interne Position der Einfügemarke.

TypeChars(String)

Fügt die angegebene Zeichenfolge ein und aktualisiert interne Position der Einfügemarke.

TypeDelete(Int32)

Führt die angegebene Anzahl von Löschvorgängen in der Zeile aus, die bearbeitet wird.

TypeLeft(Int32)

Verschiebt die interne Position der Einfügemarke um die angegebene Anzahl von Positionen nach links.

TypeRight(Int32)

Verschiebt die interne Position der Einfügemarke um die angegebene Anzahl von Positionen nach rechts.

Gilt für