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 | |
---|---|---|
Completor | Initialise une nouvelle instance de la classe Completor. |
Début
Propriétés
Nom | Description | |
---|---|---|
AtEndOfLine | Détermine si l'emplacement du signe insertion interne est à la fin de la ligne active. | |
IsExpansionActive | Détermine si un extrait de code est modifié. |
Début
Méthodes
Nom | Description | |
---|---|---|
Apply | Implémente toutes les modifications apportées à l'objet d'Completor. | |
Dispose | Nettoie toutes les allocations faites juste avant que l'objet soit détruit. | |
Equals | Détermine si l'objet Object spécifié est égal à l'objet Object actuel. (Hérité de Object.) | |
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.) | |
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.) | |
RefreshLine | Obtient la ligne active de texte de l'objet d'Source. | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) | |
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. | |
TypeChar | Insère le personnage spécifié et met à jour l'emplacement du signe insertion interne. | |
TypeChars | Insère la chaîne spécifiée des personnages et met à jour l'emplacement du signe insertion interne. | |
TypeDelete | Exécute le nombre spécifié d'opérations de suppression sur la ligne étant modifiée. | |
TypeLeft | Déplace l'emplacement du signe insertion interne le nombre spécifié de positions vers la gauche. | |
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.