예제 #1
0
파일: KagUtility.cs 프로젝트: mryp/kkde
        /// <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);
        }
예제 #2
0
        /// <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);
        }