/// <include file='doc\Source.uex' path='docs/doc[@for="Completor.Dispose"]/*' /> /// <summary>This method calls Apply() if you have not already done it.</summary> public void Dispose() { if (this.ca != null) { Apply(); } // DO NOT DISPOSE THE LANGUAGE SERVICE HERE -- WE DON'T OWN IT!!! this.langsvc = null; this.macro = null; this.view = null; }
/// <include file='doc\Source.uex' path='docs/doc[@for="Completor.Completor"]/*' /> public Completor(LanguageService langsvc, IVsTextView view, string description) { this.langsvc = langsvc; this.view = view; this.src = langsvc.GetSource(view); this.sb = new StringBuilder(); this.caret = 0; // current position within StringBuilder. this.ca = CompoundActionFactory.GetCompoundAction(null, this.src, description); this.ca.FlushEditActions(); // make sure we see a consistent coordinate system. // initialize span representing what we are removing from the buffer. NativeMethods.ThrowOnFailure(view.GetCaretPos(out span.iStartLine, out span.iStartIndex)); this.span.iEndLine = span.iStartLine; this.span.iEndIndex = span.iStartIndex; RefreshLine(); macro = this.langsvc.GetIVsTextMacroHelperIfRecordingOn(); }