差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
javascript:ace [2019/09/08 20:57] – ともやん | javascript:ace [2020/06/15 19:46] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 非ログインユーザー | ||
---|---|---|---|
行 87: | 行 87: | ||
==== ソースコードからのインストール ==== | ==== ソースコードからのインストール ==== | ||
- | Ace をソースからビルドするには [[javascript: | + | Ace をソースからビルドするには [[javascript: |
\\ | \\ | ||
ソースを取得する。 | ソースを取得する。 | ||
行 114: | 行 114: | ||
$ make build | $ make build | ||
</ | </ | ||
+ | |||
+ | ===== //#region [リージョンの説明] 〜 //# | ||
+ | 実際のデモは以下にある。\\ | ||
+ | [[javascript: | ||
+ | <code javascript> | ||
+ | //#region [Ace Editor fold all region] | ||
+ | isCommentFold = (line) => { | ||
+ | var isAFold = false; | ||
+ | if (/ | ||
+ | if (/ | ||
+ | return isAFold; | ||
+ | } | ||
+ | ace.EditSession.prototype.foldAllRegion = function(startRow, | ||
+ | if (depth == undefined) | ||
+ | depth = 100000; // JSON.stringify doesn' | ||
+ | var foldWidgets = this.foldWidgets; | ||
+ | if (!foldWidgets) | ||
+ | return; // mode doesn' | ||
+ | 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] != " | ||
+ | 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(" | ||
+ | if (fold) | ||
+ | fold.collapseChildren = depth; | ||
+ | } catch(ex) {} | ||
+ | } | ||
+ | } | ||
+ | }; | ||
+ | //# | ||
+ | | ||
+ | jQuery(function($) { | ||
+ | const editor = ace.edit(" | ||
+ | editor.setTheme(" | ||
+ | editor.session.setMode(" | ||
+ | const lines = editors[i].getSession().getDocument().getLength(); | ||
+ | editor.setOptions({maxLines: | ||
+ | | ||
+ | // #region をデフォルトで折り畳む | ||
+ | editor.session.foldAllRegion(); | ||
+ | }); | ||
+ | </ | ||
+ |