Condividi tramite


Classe Completor

Va a capo e applica le modifiche più a una visualizzazione di testo come una sola operazione.

Questa API non è conforme a CLS. L'alternativa conforme a CLS è [None].

Gerarchia di ereditarietà

System.Object
  Microsoft.VisualStudio.Package.Completor

Spazio dei nomi:  Microsoft.VisualStudio.Package
Assembly:   Microsoft.VisualStudio.Package.LanguageService.11.0 (in Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (in Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (in Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (in Microsoft.VisualStudio.Package.LanguageService.dll)

Sintassi

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

Il tipo Completor espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico Completor Inizializza una nuova istanza di Completor classe.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica AtEndOfLine Determina se la posizione interna del cursore si trova alla fine della riga corrente.
Proprietà pubblica IsExpansionActive Determina se un frammento di codice viene modificato.

In alto

Metodi

  Nome Descrizione
Metodo pubblico Apply Applica tutte le modifiche apportate con Completor oggetto.
Metodo pubblico Dispose Cancella tutte le allocazioni effettuate prima di tale oggetto verrà eliminato.
Metodo pubblico Equals Determina se l'oggetto specificato equivale all'oggetto corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico RefreshLine Ottiene la riga di testo da Source oggetto.
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblico TypeBackspace Esegue il numero specificato di spazi indietro sulla riga modificata e aggiorna la posizione interna del cursore.
Metodo pubblico TypeChar Inserire il carattere specificato e aggiorna la posizione interna del cursore.
Metodo pubblico TypeChars Inserire la stringa specificata di posizione interna del cursore di aggiornamenti e di caratteri.
Metodo pubblico TypeDelete Esegue il numero specificato di operazioni delete nella riga modificata.
Metodo pubblico TypeLeft Consente di spostare la posizione interna del cursore il numero specificato di percorsi a sinistra.
Metodo pubblico TypeRight Consente di spostare la posizione interna del cursore il numero specificato di posizioni verso destra.

In alto

Note

Questa classe di supporto viene utilizzata per gestire le modifiche nella riga corrente a causa delle azioni di completamento, ovvero azioni che comporta l'inserimento automatico di testo.

Questa classe vengono raccolti i caratteri e le azioni del cursore e li applica alla posizione corrente del cursore come una sola azione composta.In questo modo tutti i caratteri da null in una sola operazione.Questa classe supporta l'inserimento di qualsiasi carattere del testo, spostati sui sinistra e a destra del cursore nonché l'eliminazione e lo spazio finale (ognuno di questi viene applicata la chiamata di un metodo diverso in questa classe).

Inoltre, tutti i caratteri e movimenti immessi del punto di inserimento vengono aggiunti a una macro controllare se tale registrazione è attivato.

questa classe gestisce un buffer interno che contiene tutti i caratteri da inserire.Questo buffer viene considerato come flusso dei caratteri, qualsiasi carattere può essere inserito nel buffer, anche caratteri di controllo come nuova riga.solo dopo che i caratteri sono inseriti sono tutti i caratteri di controllo gestiti.Ad esempio, se si utilizza questa classe per inserire la stringa “Hello\nThere“in un file di origine vuoto, il file di origine conterrà due righe.Tuttavia, il cursore viene posizionato sei caratteri dopo la parola “Hello“nella prima riga (cinque lettere in„There“e un carattere di nuova riga per intero sei caratteri).Questa classe non riconosce più righe in questa situazione, le funzionalità offerte da visualizzare è un flusso di caratteri da inserire.

Note per gli implementatori

Questa classe è indipendente e non è in genere motivo derivare da questa classe.

Note per i chiamanti

Creare un'istanza di e utilizzare questa classe per eseguire il wrapping di un set degli inserimenti orientati al carattere nella posizione corrente del cursore.

[!NOTA]

Poiché questa classe viene in genere utilizzata in un'operazione di completamento, il carattere di terminazione o di commit è già essere aggiunti alla riga prima che questa classe non tutte le modifiche.Se è necessario sostituire il carattere di commit, è necessario chiamare TypeBackspace metodo come prima operazione per eliminare il carattere di commit dalla riga.

Esempi

In questo esempio viene illustrata un'operazione di completamento semplice tramite Completor classe in una versione derivata di Declarations classe.Wrapping di questa operazione in istanze qualsiasi testo è stato eseguito il commit.

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Package