Partager via


Completor, classe

Elle se poursuit et applique de plusieurs modifications à un affichage de texte comme opération unique.

Cette API n'est pas conforme CLS. L'alternative conforme CLS est [None].

Hiérarchie d'héritage

System.Object
  Microsoft.VisualStudio.Package.Completor

Espace de noms :  Microsoft.VisualStudio.Package
Assemblys :   Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)

Syntaxe

'Déclaration
<CLSCompliantAttribute(False)> _
Public Class Completor _
    Implements IDisposable
[CLSCompliantAttribute(false)]
public class Completor : IDisposable

Le type Completor expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique Completor Initialise une nouvelle instance de la classe Completor.

Début

Propriétés

  Nom Description
Propriété publique AtEndOfLine Détermine si l'emplacement du signe insertion interne est à la fin de la ligne active.
Propriété publique IsExpansionActive Détermine si un extrait de code est modifié.

Début

Méthodes

  Nom Description
Méthode publique Apply Implémente toutes les modifications apportées à l'objet d'Completor.
Méthode publique Dispose Nettoie toutes les allocations faites juste avant que l'objet soit détruit.
Méthode publique Equals Détermine si l'objet Object spécifié est égal à l'objet Object actuel. (Hérité de Object.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publique RefreshLine Obtient la ligne active de texte de l'objet d'Source.
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique TypeBackspace Effectue le nombre spécifié de retour arrière de la ligne étant modifiée et met à jour l'emplacement du signe insertion interne.
Méthode publique TypeChar Insère le personnage spécifié et met à jour l'emplacement du signe insertion interne.
Méthode publique TypeChars Insère la chaîne spécifiée des personnages et met à jour l'emplacement du signe insertion interne.
Méthode publique TypeDelete Exécute le nombre spécifié d'opérations de suppression sur la ligne étant modifiée.
Méthode publique TypeLeft Déplace l'emplacement du signe insertion interne le nombre spécifié de positions vers la gauche.
Méthode publique TypeRight Déplace l'emplacement du signe insertion interne le nombre spécifié de positions vers la droite.

Début

Remarques

Cette classe d'assistance est utilisée pour gérer des modifications à la ligne en cours en raison des actions d'achèvement ; autrement dit, actions qui provoquent l'insertion automatique du texte.

Cette classe rassemble des personnages et des actions de curseur et s'applique les à l'emplacement du signe insertion actuel comme une action composite unique.Cela permet l'ensemble des personnages à annuler dans une opération unique.Cette classe prend en charge insérer n'importe quel caractère de texte, déplaçant le signe insertion à gauche et à droite et de suppression et retour arrière (chacune de ces derniers est appliquée en appelant une méthode différente sur cette classe).

En outre, tous des personnages et déplacements insérés de curseur sont ajoutés à un enregistreur de macros si un tel enregistreur est activé.

Cette classe maintient une mémoire tampon interne qui contient tous les personnages à insérer.Cette mémoire tampon est traitée comme flux de données des personnages ; tout personnage peut être inséré dans cette mémoire tampon, même caractères de contrôle tels que le saut de ligne.Uniquement après que les personnages sont insérés sont les caractères de contrôle gérés.Par exemple, si vous utilisez cette classe pour insérer la chaîne « Hello\nThere » dans un fichier source vide, le fichier source contiendra deux lignes.Toutefois, le signe insertion est positionné six personnages après le mot « Hello » sur la première ligne (cinq lettres dans « There » et un caractère de saut de ligne pour un total de six personnages).Cette classe n'inclut pas de plusieurs entrées ligne cette situation ; tous les éléments dont il voit est un flux de données des personnages à insérer.

Remarques à l'attention des implémenteurs

Cette classe est autonome et il n'existe en général aucune raison de dériver de cette classe.

Remarques à l'attention des appelants

Instanciez et utilisez cette classe lorsque vous devez encapsuler un jeu de insertions à caractères à l'emplacement du signe insertion actuel.

[!REMARQUE]

Étant donné que cette classe est en général utilisée dans une opération d'achèvement, le personnage de validation ou d'achèvement peut avoir été déjà ajouté à la ligne avant que cette classe implémente toutes les modifications.Si vous devez remplacer le personnage de validation, vous devez appeler la méthode d'TypeBackspace comme première opération pour supprimer le personnage de validation de la ligne.

Exemples

Cet exemple montre une opération simple d'achèvement à l'aide de la classe d'Completor dans une version dérivée de la classe d'Declarations.Cette opération s'encapsule dans les guillemets le texte a été validé.

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
        }
    }
}

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.VisualStudio.Package, espace de noms