Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/06/15 12:44:09 (9 years ago)
Author:
jkarder
Message:

#2077: merged r11807:11811, r11816, r11819, r11822, r11825, r11834, r11835, r11836, r11933 and r11936 into stable

Location:
stable
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.CodeEditor/3.4/CodeEditor.cs

    r11804 r11937  
    6161
    6262    private AssemblyLoader assemblyLoader;
    63     private ILanguageFeatures languageFeatures;
    6463    private TextMarkerService textMarkerService;
    6564
     
    7978        if (value == null) value = string.Empty;
    8079        if (prefix == value) return;
    81         if (prefixMarker != null) textMarkerService.Remove(prefixMarker);
     80        if (prefixMarker != null) prefixMarker.Delete();
    8281        Doc.Remove(0, prefix.Length);
    8382        prefix = value;
     
    9796        if (value == null) value = string.Empty;
    9897        if (suffix == value) return;
    99         if (suffixMarker != null) textMarkerService.Remove(suffixMarker);
     98        if (suffixMarker != null) suffixMarker.Delete();
    10099        Doc.Remove(Doc.TextLength - suffix.Length, suffix.Length);
    101100        suffix = value;
     
    191190      TextEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
    192191      TextEditor.TextArea.TextView.Services.AddService(typeof(ITextMarkerService), textMarkerService);
    193 
    194192      #endregion
    195193
     
    244242
    245243      TextEditor.TextChanged += (sender, args) => {
    246         textMarkerService.RemoveAll(x => x != prefixMarker && x != suffixMarker);
     244        foreach (var marker in textMarkerService.TextMarkers) {
     245          if (marker == prefixMarker || marker == suffixMarker) continue;
     246          if (marker.Length != (int)marker.Tag)
     247            marker.Delete();
     248          else {
     249            int caretOffset = TextEditor.CaretOffset;
     250            var line = Doc.GetLineByOffset(marker.StartOffset);
     251            int lineEndOffset = line.EndOffset;
     252            if (caretOffset == lineEndOffset) // special case for markers beyond line length
     253              marker.Delete();
     254          }
     255        }
    247256        OnTextEditorTextChanged();
    248257      };
     
    383392          int offset = line.Offset;
    384393          if (TextUtilities.GetLeadingWhitespace(Doc, line).Length > 0)
    385             offset = TextUtilities.GetNextCaretPosition(Doc, offset, LogicalDirection.Forward, CaretPositioningMode.WordStart);
     394            offset = TextUtilities.GetNextCaretPosition(Doc, offset, LogicalDirection.Forward, CaretPositioningMode.WordBorder);
    386395          TextEditor.CaretOffset = offset;
    387396        }
     
    408417      marker.MarkerTypes = TextMarkerTypes.SquigglyUnderline;
    409418      marker.MarkerColor = error.IsWarning ? WarningColor : ErrorColor;
     419      marker.Tag = segment.Length;
    410420    }
    411421
     
    429439      switch (TextEditorSyntaxHighlighting) {
    430440        case "XML":
    431           languageFeatures = new XmlLanguageFeatures(this);
     441          XmlLanguageFeatures.Apply(this);
    432442          break;
    433443        default:
    434           languageFeatures = new CSharpLanguageFeatures(this);
     444          CSharpLanguageFeatures.Apply(this);
    435445          break;
    436446      }
Note: See TracChangeset for help on using the changeset viewer.