Completor 类

换行和应用于文本视图的多个更改以单个操作。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 [None]。

继承层次结构

System.Object
  Microsoft.VisualStudio.Package.Completor

命名空间:  Microsoft.VisualStudio.Package
程序集:   Microsoft.VisualStudio.Package.LanguageService.11.0(在 Microsoft.VisualStudio.Package.LanguageService.11.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.10.0(在 Microsoft.VisualStudio.Package.LanguageService.10.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.9.0(在 Microsoft.VisualStudio.Package.LanguageService.9.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService(在 Microsoft.VisualStudio.Package.LanguageService.dll 中)

语法

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

Completor 类型公开以下成员。

构造函数

  名称 说明
公共方法 Completor 初始化 Completor 类的新实例。

页首

属性

  名称 说明
公共属性 AtEndOfLine 确定内部插入符号位置是否在当前行的末尾。
公共属性 IsExpansionActive 确定代码段是否编辑。

页首

方法

  名称 说明
公共方法 Apply 应用通过 Completor 对象所做的任何更改。
公共方法 Dispose ,在销毁之前,清理所做的任何分配对象。
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 RefreshLine 获取文本当前行从 Source 对象的。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)
公共方法 TypeBackspace 执行 backspace 指定数目的在编辑的行并更新内部插入符号位置。
公共方法 TypeChar 插入内部插入符号确定的指定字符和更新。
公共方法 TypeChars 插入指定的字符串和更新内部插入符号标识。
公共方法 TypeDelete 执行删除操作的指定数目在编辑的行的。
公共方法 TypeLeft 移动内部插入符号位置位置指定数目的左移。
公共方法 TypeRight 移动内部插入符号位置位置指定数目的右侧。

页首

备注

此帮助程序类用于管理对当前行的更改由于完成事件;即生成文本的自动插入的事件。

此类收集字符和光标事件并将它们应用于当前脱字号位置为一个复合事件。这在单个操作允许所有字符被取消。此类支持所有文本字符,左右将脱字号以及删除和 backspace (调用此类的一个方法将每一个)。

此外,; 如果该记录器会启动,所有插入的字符和光标将添加到宏记录器。

此类维护包含要插入的所有字符的内部缓冲区。此缓冲区将字符流;所有字符可插入到此缓冲区,即使控制字符 (如换行符。在插入字符是已处理后的任何控制字符。例如,如果您使用的是,此类插入该字符串 “Hello\nThere”为空的源文件中,源文件将包含两行。但是,插入符号位于单词 “Hello” after 确定六个字符在第一行 (在 “There”五个字母和总共六个字符的一个换行符)。在这种情况下该类不知道多行;它会看到的是字符流插入。

对实现者的说明

此类是独立的,并且通常不会从此类派生。

对调用者的说明

,在需要包装字符集面向的插入到当前脱字号位置时,请实例化和使用该类。

说明说明

因为该类通常用于完成此操作,提交或完成字符可能已添加到行,此类应用任何更改之前。如果需要进行替换字符,需要调用 TypeBackspace 方法作为第一个操作从行删除进行字符。

示例

此示例演示简单的完成操作使用 Completor 类在 Declarations 类的派生版本。此操作换行引用任何文本进行了。

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

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.VisualStudio.Package 命名空间