◀マクロトップへ
  • 115 doxygenコメント挿入マクロ
    • 116 Re:doxygenコメント挿入マクロ(単語分割部分)
    • 117 Re:doxygenコメント挿入マクロ(挿入部分)
    • 118 Re:doxygenコメント挿入マクロ
  • [115] doxygenコメント挿入マクロ nary 2004年11月14日 01:08

    ついでに投稿していきます。

    Doxygen用のコメントを挿入します。

    int append(const char *text, int bbb);

    のどこでもいいのでカーソルを置いて実行してください。

    /**
    *
    **
    * @param text :
    * @param bbb :
    **
    * @return
    **/
    int append(const char *text, int bbb);

    こんな感じになります。インデントは顧慮されていますが、
    引数に改行が入っているとうまくいきません。
    また、JSの正規表現が???な動作をするので力技です


    • [116] Re:doxygenコメント挿入マクロ(単語分割部分) nary 2004年11月14日 01:10

      /////////////////////////////////////////////////
      /**
      * ドキュメントコメントを挿入する
      **/
      var jumpToY = parseInt(Editor.ExpandParameter("$y"));
      var curLineText = Editor.GetLineStr(jumpToY);
      Editor.Jump(jumpToY, 0);

      curLineText = curLineText.replace(/,/g, " , ");
      var strs = curLineText.split("");
      var i;
      // alert(curLineText);
      curLineText = "";
      var iscomment = 0;
      var isparse = 0;
      var isTop = 1;
      var indent = "";
      var isFunc = 0;


      for(i = 0; i < strs.length; i++)
      {
      if(isTop)
      {
      if(strs[i] == " " || strs[i] == " ")
      {
      indent += strs[i];
      }
      else
      isTop = 0;
      }

      if(strs[i] == '/' && i + 1 < strs.length && strs[++i] == '*')
      {
      iscomment = 1;
      }
      else if(iscomment)
      {

      if(strs[i] == '*' && i + 1 < strs.length && strs[++i] == '/')
      {
      curLineText += " ";
      iscomment = 0;
      }
      continue;
      }
      else if(!isparse)
      {
      if(strs[i] == '(')
      isparse = 1;
      }
      else if(strs[i] == ')')
      break;
      else if(strs[i] == "*" || strs[i] == '&')
      continue;
      else
      {
      curLineText += strs[i];
      }
      }

      strs = curLineText.split(/[ \t]+/);
      // alert(strs);


      var isVoid = 0;
      var space = " ";
      var buffer = indent + "/**\r\n";
      buffer += indent + " *\r\n" + indent + " **\r\n";
      var ins = 0;
      var hasParam = 0;
      for(i = 0; i < strs.length; i++)
      {
      if(strs[i] == "void")
      {
      isVoid = 1;
      }
      else if((strs[i] == "," || strs[i] == '=') && 0 < i)
      {
      hasParam++;
      ins = strs[i - 1].length;
      // " "
      buffer += indent;
      buffer += " * @param\t" + strs[i - 1];
      if(ins < 15)
      buffer += space.substr(0, 15 - ins);
      buffer += ": \r\n";
      }
      }


    • [117] Re:doxygenコメント挿入マクロ(挿入部分) nary 2004年11月14日 01:11

      //if(i != 0)
      {
      if(i - 1 > 0)
      {
      hasParam++;
      // buffer = i;
      ins = strs[i - 1].length;
      // " "
      buffer += indent;
      buffer += " * @param\t" + strs[i - 1];
      if(ins < 15)
      buffer += space.substr(0, 15 - ins);
      buffer += ": \r\n";
      }


      if(!isVoid)
      {
      if(hasParam)
      buffer += indent + " **\r\n";
      buffer += indent + " * @return\r\n";
      }

      buffer += indent + "**/\r\n";

      if(jumpToY - 1 > 0)
      {
      var s = Editor.GetLineStr(jumpToY - 1);
      s += "";
      if(s.search(/template/) != -1)
      {
      Editor.Jump(--jumpToY);
      }
      }
      // alert(buffer);
      Editor.InsText(buffer);
      //alert(buffer);

      Editor.Jump(jumpToY, 0);
      }

      ///////////////////////////////////////////

      今のところ void の判定がうまくいっていないはずです。
      再読み込みするにチェックを入れておいてください。
    • [118] Re:doxygenコメント挿入マクロ nary 2004年11月14日 01:28

      過去ログを見てたら既出でしたね。
      かぶった(^_^,;