Completor Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Importante
Esta API não está em conformidade com CLS.
Quebra e aplica várias alterações a uma exibição de texto como uma única operação.
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
- Herança
-
Completor
- Atributos
- Implementações
Exemplos
Este exemplo mostra uma operação de conclusão simples usando a Completor classe em uma versão derivada da Declarations classe. Esta operação encapsula entre aspas o texto que foi confirmado.
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
}
}
}
Comentários
Essa classe auxiliar é usada para gerenciar alterações na linha atual devido a ações de conclusão; ou seja, as ações que resultam na inserção automática de texto.
Essa classe reúne caracteres e ações de cursor e os aplica à posição atual do cursor como uma única ação composta. Isso permite que todos os caracteres sejam desfeitos em uma única operação. Essa classe dá suporte à inserção de qualquer caractere de texto, movendo o cursor para a esquerda e para a direita, bem como Delete e Backspace (cada um deles é aplicado chamando um método diferente nessa classe).
Além disso, todos os caracteres inseridos e movimentos do cursor serão adicionados a um gravador de macro se tal gravador estiver ativado.
Essa classe mantém um buffer interno que contém todos os caracteres a serem inseridos. Esse buffer é tratado como um fluxo de caracteres; qualquer caractere pode ser inserido nesse buffer, até mesmo caracteres de controle, como nova linha. Somente depois que os caracteres são inseridos, quaisquer caracteres de controle são manipulados. Por exemplo, se você usar essa classe para inserir a cadeia de caracteres " Hello\nThere " em um arquivo de origem vazio, o arquivo de origem conterá duas linhas. No entanto, o cursor é posicionado seis caracteres após a palavra " Hello " na primeira linha (cinco letras em " There " e um caractere de nova linha para um total de seis caracteres). Essa classe não compreende várias linhas nessa situação; Tudo o que ele vê é um fluxo de caracteres a ser inserido.
Notas aos Herdeiros
Essa classe é independente e, em geral, não há motivo para derivar dessa classe.
Notas aos Chamadores
Crie uma instância e use essa classe quando precisar encapsular um conjunto de inserções orientadas a caracteres na posição atual do cursor.
Como essa classe é normalmente usada em uma operação de conclusão, o caractere de confirmação ou de conclusão pode já ter sido adicionado à linha antes que essa classe se aplique a qualquer alteração. Se precisar substituir o caractere de confirmação, você precisará chamar o TypeBackspace(Int32) método como a primeira operação para excluir o caractere de confirmação da linha.
Construtores
| Completor(LanguageService, IVsTextView, String) |
Inicializa uma nova instância da classe Completor. |
Propriedades
| AtEndOfLine |
Determina se a posição do cursor interno está no final da linha atual. |
| IsExpansionActive |
Determina se um trecho de código está sendo editado. |
Métodos
| Apply() |
Aplica todas as alterações feitas por meio do Completor objeto. |
| Dispose() |
Limpa todas as alocações feitas logo antes de o objeto ser destruído. |
| RefreshLine() |
Obtém a linha atual de texto do Source objeto. |
| TypeBackspace(Int32) |
Executa o número especificado de backspaces na linha que está sendo editada e atualiza a posição do cursor interno. |
| TypeChar(Char) |
Insere o caractere especificado e atualiza a posição do cursor interno. |
| TypeChars(String) |
Insere a cadeia de caracteres especificada e atualiza a posição do cursor interno. |
| TypeDelete(Int32) |
Executa o número especificado de operações de exclusão na linha que está sendo editada. |
| TypeLeft(Int32) |
Move a posição do cursor interno para o número especificado de posições para a esquerda. |
| TypeRight(Int32) |
Move a posição do cursor interno para o número especificado de posições à direita. |