public async System.Threading.Tasks.Task <int> CMNextSymbol(JToken arg) { CMNextSymbolParams request = arg.ToObject <CMNextSymbolParams>(); Document document = CheckDoc(request.TextDocument); int pos = request.Pos; bool forward = request.Forward; if (trace) { System.Console.Error.WriteLine("<-- CMNextSymbol"); System.Console.Error.WriteLine(arg.ToString()); (int, int)bs = LanguageServer.Module.GetLineColumn(pos, document); System.Console.Error.WriteLine(""); } IEnumerable <Location> r = LanguageServer.Module.GetDefs(document); List <object> symbols = new List <object>(); int next_sym = forward ? int.MaxValue : -1; foreach (Location s in r) { if (forward) { if (s.Range.Start.Value > pos && s.Range.Start.Value < next_sym) { next_sym = s.Range.Start.Value; } } else { if (s.Range.Start.Value < pos && s.Range.Start.Value > next_sym) { next_sym = s.Range.Start.Value; } } } if (next_sym == int.MaxValue) { next_sym = -1; } if (trace) { System.Console.Error.Write("returning "); System.Console.Error.WriteLine(next_sym); } return(next_sym); }
public int CMNextSymbolSendServer(string ffn, int pos, bool forward) { try { if (_rpc == null) { return(-1); } CMNextSymbolParams p = new CMNextSymbolParams(); Uri uri = new Uri(ffn); p.TextDocument = uri; p.Pos = pos; p.Forward = forward; int result = _rpc.InvokeAsync <int>("CMNextSymbol", p).Result; return(result); } catch (Exception) { } return(-1); }