コード例 #1
0
        public EditorWrapper(String contentType)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var serviceProvider = (IServiceProvider)ServiceProvider.GlobalProvider.GetService(typeof(IServiceProvider));
            var componentModel  = (IComponentModel)ServiceProvider.GlobalProvider.GetService(typeof(SComponentModel));

            if (componentModel == null)
            {
                throw new InvalidOperationException("SComponentModel service is not available");
            }
            var service = componentModel.GetService <EditorServices>();

            var message = "";
            var type    = service.ContentTypeRegistryService.GetContentType(contentType);

            // var CSharpLanguageServiceId = new Guid("694dd9b6-b865-4c5b-ad85-86356e9c88dc");
            // var VisualBasicLanguageServiceId = new Guid("e34acdc0-baae-11d0-88bf-00a0c9110049");

            VsTextLines = (IVsTextLines)service.VsEditorAdaptersFactoryService.CreateVsTextBufferAdapter(serviceProvider, type);
            VsTextLines.InitializeContent(message, message.Length);
            // vsTextBuffer.SetLanguageServiceID(ref CSharpLanguageServiceId);

            var textRoles = service.TextEditorFactoryService.CreateTextViewRoleSet(
                PredefinedTextViewRoles.Analyzable,
                PredefinedTextViewRoles.Document,
                PredefinedTextViewRoles.Editable,
                PredefinedTextViewRoles.Interactive,
                //PredefinedTextViewRoles.PrimaryDocument,
                PredefinedTextViewRoles.Structured,
                PredefinedTextViewRoles.Zoomable
                );

            VsTextView = service.VsEditorAdaptersFactoryService.CreateVsTextViewAdapter(serviceProvider, textRoles);

            var initFlags =
                (UInt32)TextViewInitFlags.VIF_HSCROLL |
                (UInt32)TextViewInitFlags.VIF_SET_DRAGDROPMOVE |
                // (uint)TextViewInitFlags.VIF_SET_VISIBLE_WHITESPACE |
                (UInt32)TextViewInitFlags.VIF_VSCROLL |
                (UInt32)TextViewInitFlags3.VIF_NO_HWND_SUPPORT
            ;

            var initView = new INITVIEW[] {
                new INITVIEW {
                    fSelectionMargin = 0, // original: 0
                    fWidgetMargin    = 0, // original: 0
                    fVirtualSpace    = 0,
                    fDragDropMove    = 1,
                }
            };

            VsTextView.Initialize(VsTextLines, IntPtr.Zero, initFlags, initView);

            WpfTextViewHost = service.VsEditorAdaptersFactoryService.GetWpfTextViewHost(VsTextView);
            WpfTextViewHost.TextView.Options.SetOptionValue("Appearance/Category", "text");
            WpfTextViewHost.TextView.Options.SetOptionValue("TextView/UseVisibleWhitespace", true);
            WpfTextViewHost.TextView.Options.SetOptionValue("TextViewHost/LineNumberMargin", true);
        }
コード例 #2
0
        public void Select(Int32 startPos, Int32 endPos)
        {
            if (ErrorHandler.Failed(VsTextView.GetLineAndColumn(startPos, out var startLine, out var startColumn)))
            {
                return;
            }

            if (ErrorHandler.Failed(VsTextView.GetLineAndColumn(endPos, out var endLine, out var endColumn)))
            {
                return;
            }

            if (ErrorHandler.Failed(VsTextView.SetSelectionMode(TextSelMode.SM_STREAM)))
            {
                return;
            }

            VsTextView.SetSelection(startLine, startColumn, endLine, endColumn);
        }
コード例 #3
0
        public void Scroll(Int32 startPos)
        {
            if (ErrorHandler.Failed(VsTextView.GetLineAndColumn(startPos, out var startLine, out var startColumn)))
            {
                return;
            }

            var span = new TextSpan()
            {
                iStartIndex = startColumn,
                iStartLine  = startLine,
                iEndIndex   = startColumn,
                iEndLine    = startLine,
            };

            VsTextView.EnsureSpanVisible(span);

            // VsTextView.SetTopLine(startLine);
        }
コード例 #4
0
        private void InsertCharacter(string match, int currentPosition, ITextSnapshotLine line, int column)
        {
            ITextSnapshot snapshot = TextView.TextBuffer.Insert(currentPosition, match);

            VsTextView.SetCaretPos(line.LineNumber, column);
        }
コード例 #5
0
ファイル: ViewFilter.cs プロジェクト: hesam/SketchSharp
 public virtual void OnSetFocus(VsTextView view){
   // just in case another file we were dependent on has changed while we were
   // inactive, this will force us to sync up.
   this.source.SetDirty();
 }
コード例 #6
0
ファイル: ViewFilter.cs プロジェクト: hesam/SketchSharp
 public virtual void OnSetBuffer(VsTextView view, IVsTextLines buffer){
 }
コード例 #7
0
ファイル: ViewFilter.cs プロジェクト: hesam/SketchSharp
 public virtual void OnKillFocus(VsTextView view){
 }
コード例 #8
0
ファイル: ViewFilter.cs プロジェクト: hesam/SketchSharp
 public virtual void OnChangeScrollInfo(VsTextView view, int iBar, int iMinUnit, int iMaxUnits, int iVisibleUnits, int iFirstVisibleUnit) {
 }
コード例 #9
0
ファイル: ViewFilter.cs プロジェクト: hesam/SketchSharp
 public virtual void OnChangeCaretLine(VsTextView view, int line, int col) {
 }
コード例 #10
0
 public virtual void OnNewView(VsTextView newView) {      
   this.viewFilters.Add(this.service.CreateViewFilter(this.source, (IVsTextView)newView));
 }
コード例 #11
0
 public virtual void OnNewView(VsTextView newView)
 {
     this.viewFilters.Add(this.service.CreateViewFilter(this.source, (IVsTextView)newView));
 }
コード例 #12
0
ファイル: ViewFilter.cs プロジェクト: Plankankul/SpecSharp
 public virtual void OnSetFocus(VsTextView view)
 {
     // just in case another file we were dependent on has changed while we were
     // inactive, this will force us to sync up.
     this.source.SetDirty();
 }
コード例 #13
0
ファイル: ViewFilter.cs プロジェクト: Plankankul/SpecSharp
 public virtual void OnSetBuffer(VsTextView view, IVsTextLines buffer)
 {
 }
コード例 #14
0
ファイル: ViewFilter.cs プロジェクト: Plankankul/SpecSharp
 public virtual void OnKillFocus(VsTextView view)
 {
 }
コード例 #15
0
ファイル: ViewFilter.cs プロジェクト: Plankankul/SpecSharp
 public virtual void OnChangeScrollInfo(VsTextView view, int iBar, int iMinUnit, int iMaxUnits, int iVisibleUnits, int iFirstVisibleUnit)
 {
 }
コード例 #16
0
ファイル: ViewFilter.cs プロジェクト: Plankankul/SpecSharp
 public virtual void OnChangeCaretLine(VsTextView view, int line, int col)
 {
 }