示例#1
0
        public OutlineSettings GetStorableData(ITextSnapshot snapshot)
        {
            OutlineSettings settings = new OutlineSettings();

            foreach (var trackingSpan in this.regions)
            {
                SnapshotSpan span = trackingSpan.GetSpan(snapshot);
                if (!span.IsEmpty)
                {
                    settings.Regions.Add(new Tuple <int, int>(span.Start, span.Length));
                }
            }
            return(settings);
        }
示例#2
0
 public void LoadStoredData(ITextSnapshot snapshot, OutlineSettings settings)
 {
     foreach (var region in settings.Regions)
     {
         int start = region.Item1;
         int len   = region.Item2;
         if (start >= snapshot.Length || (start + len) > snapshot.Length)
         {
             continue;
         }
         SnapshotSpan span = new SnapshotSpan(snapshot, start, len);
         this.Add(span);
     }
 }
示例#3
0
        public void CanWrite()
        {
            var writer = new StringWriter();

            using (var jw = new JsonTextWriter(writer)) {
                OutlineSettings os = new OutlineSettings();
                os.Regions.Add(new Tuple <int, int>(10, 32));
                os.Regions.Add(new Tuple <int, int>(27, 15));
                os.Save(jw);
            }
            var jo = JObject.Parse(writer.ToString());

            Assert.Equal(10, (int)jo["regions"][0]["start"]);
            Assert.Equal(15, (int)jo["regions"][1]["length"]);
        }
示例#4
0
        public void CanRead()
        {
            String json = @"
        { 'regions': [
          { 'start': 10, 'length': 20 },
          { 'start': 45, 'length': 30 }
        ]}";

            using (var reader = NewReader(json)) {
                OutlineSettings os = new OutlineSettings();
                os.Read(reader);
                Assert.Equal(2, os.Regions.Count);
                Assert.Equal(10, os.Regions[0].Item1);
                Assert.Equal(30, os.Regions[1].Item2);
            }
        }
示例#5
0
        private void LoadRegions(ITextBuffer buffer)
        {
            var sus = VsSolution.GetUserSettings();

            if (sus == null)
            {
                return;
            }
            String filename = TextEditor.GetFileName(buffer);

            if (String.IsNullOrEmpty(filename))
            {
                return;
            }
            filename = VsSolution.MakeRelativePath(filename);
            OutlineSettings settings = sus.Load <OutlineSettings>(filename);

            if (settings != null)
            {
                this.Regions.LoadStoredData(buffer.CurrentSnapshot, settings);
            }
        }