/// <summary> /// KAGタグの情報をエディタドキュメント情報から取得し返す /// </summary> /// <param name="document">エディタのドキュメント情報</param> /// <param name="lineNumber">行番号</param> /// <param name="colNumber">カーソル位置を表す桁番号</param> /// <returns>KAGタグ情報(見つからなかったときはnullを返す)</returns> public static KagTagKindInfo GetTagKind(IDocument document, int lineNumber, int colNumber) { if (document == null) { return(null); //ドキュメントがないとき } LineSegment lineSeg = document.GetLineSegment(lineNumber); if (lineSeg == null) { return(null); //情報が無いとき } string lineText = document.GetText(lineSeg); if (colNumber < lineText.Length) { lineText = lineText.Substring(0, colNumber); } if (KagUtility.ExistLineHead(lineText, ';')) { return(null); //コメント行のとき } if (KagUtility.ExistLineHead(lineText, '*')) { return(null); //ラベル行のとき } KagTagKindInfo info = KagUtility.GetTagKind(lineText); return(info); }
/// <summary> /// ツールチップで表示するテキストを取得する /// </summary> /// <param name="document"></param> /// <param name="lineNumber"></param> /// <param name="colNumber"></param> /// <returns></returns> public static string GetText(IDocument document, int lineNumber, int colNumber) { if (document == null) { return(null); //ドキュメントがないとき } string tip = ""; string word = TextUtilities.GetWordAt(document, document.PositionToOffset(new Point(colNumber, lineNumber))); KagTagKindInfo info = KagUtility.GetTagKind(document, lineNumber, colNumber); if (info == null) { return(""); //取得できなかった } switch (info.Kind) { case KagCompletionData.Kind.KagTagName: tip = getTagComment(word); break; case KagCompletionData.Kind.AttrName: tip = getTagAttrComment(word, info); break; default: break; //不明とか属性値は何もしない } return(tip); }