差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
javascript:ace [2019/09/08 20:57] ともやんjavascript:ace [2020/06/15 19:46] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 非ログインユーザー
行 87: 行 87:
  
 ==== ソースコードからのインストール ==== ==== ソースコードからのインストール ====
-Ace をソースからビルドするには [[javascript:node_js|node.js]] が必要です。\\+Ace をソースからビルドするには [[javascript:nodejs|node.js]] が必要です。\\
 \\ \\
 ソースを取得する。 ソースを取得する。
行 114: 行 114:
 $ make build $ make build
 </code> </code>
 +
 +===== //#region [リージョンの説明] 〜 //#endregion までをデフォルトで折り畳む方法 =====
 +実際のデモは以下にある。\\
 +[[javascript:ide|IDE Labo - 総合開発環境の実験的実装]]\\
 +<code javascript>
 +  //#region [Ace Editor fold all region]
 +  isCommentFold = (line) => {
 +    var isAFold = false;
 +    if (/^\s*(\/\*|\/\/)#?region\b/.test(line)) { isAFold = true; }
 +    if (/\/\/(.*)\{/.test(line)) { isAFold = true; }
 +    return isAFold;
 +  }
 +  ace.EditSession.prototype.foldAllRegion = function(startRow, endRow, depth) {
 +    if (depth == undefined)
 +      depth = 100000; // JSON.stringify doesn't hanle Infinity
 +    var foldWidgets = this.foldWidgets;
 +    if (!foldWidgets)
 +      return; // mode doesn't support folding
 +    endRow = endRow || this.getLength();
 +    startRow = startRow || 0;
 +    for (var row = startRow; row < endRow; row++) {
 +      if (foldWidgets[row] == null)
 +        foldWidgets[row] = this.getFoldWidget(row);
 +      if (foldWidgets[row] != "start")
 +        continue;
 +      if (!isCommentFold(this.getLine(row))) continue
 +      var range = this.getFoldWidgetRange(row);
 +      // sometimes range can be incompatible with existing fold
 +      // TODO change addFold to return null istead of throwing
 +      if (range && range.isMultiLine()
 +          && range.end.row <= endRow
 +          && range.start.row >= startRow) {
 +        row = range.end.row;
 +        try {
 +          // addFold can change the range
 +          var fold = this.addFold("...", range);
 +          if (fold)
 +            fold.collapseChildren = depth;
 +        } catch(ex) {}
 +      }
 +    }
 +  };
 +  //#endregion
 +  
 +  jQuery(function($) {
 +    const editor = ace.edit("ace_editor");
 +    editor.setTheme("ace/theme/chrome");
 +    editor.session.setMode("ace/mode/javascript");
 +    const lines = editors[i].getSession().getDocument().getLength();
 +    editor.setOptions({maxLines: lines});
 +    
 +    // #region をデフォルトで折り畳む
 +    editor.session.foldAllRegion();
 +  });
 +</code>
 +
  • javascript/ace.1567943869.txt.gz
  • 最終更新: 2019/09/08 20:57
  • by ともやん