「自動箇条書き」の版間の差分
ナビゲーションに移動
検索に移動
見出しの修正 |
箇条書きの順番を変更 |
||
| 75行目: | 75行目: | ||
== 変更履歴 == | == 変更履歴 == | ||
* 2013/03/15 | |||
** 空行があったときの動作を修正。 | |||
* 2013/03/07 | |||
** 数字の加算時にインデントのチェックをするようにした。 | |||
** その他こまかい動作の修正。 | |||
* 2013/03/06 | * 2013/03/06 | ||
** 全角数字に対応。 | ** 全角数字に対応。 | ||
** 箇条書きが一行しかないとエラーになるのを修正。 | ** 箇条書きが一行しかないとエラーになるのを修正。 | ||
2024年9月2日 (月) 05:37時点における版
概要
- 箇条書きの行頭記号や数字を自動的に挿入します。
- Shift+Enterに登録して便利に使っています。
- 行末で実行する場合とインデントをずらして実行する場合を考えました。
ソースコード
#language = "JScript"
#title = "箇条書き"
// itemizer.js
// 2013/03/15
var firstitem = "・";
var reg = /^([\t ]*)(?:([((]*)([a-zA-Z]+|[0-9]+|[0-9]+)([))\.. ]+)|([--・・**■□]))/;
var ty = Editor.ActiveDocument.Selection.GetActivePointY(mePosLogical);
var trymax = 5;
var tyend = (ty - trymax > 0) ? ty - trymax : 1;
var line = "";
var result;
var resultary = [];
var thisline = Editor.ActiveDocument.GetLine(ty, 0);
var indent = thisline.replace(/^([ \t]*).*/, "$1");
for (var i = ty; i >= tyend; i--) {
line = Editor.ActiveDocument.GetLine(i, 0);
var linechk = line.replace(/^([ \t]*).*/, "$1");
if (i < ty && linechk.length < indent.length) {
break;
}
result = reg.exec(line);
if (result != null) {
if (result[1] == indent) {
resultary.unshift(result.slice(0));
} else if (result[1] < indent) {
break;
}
} else if (resultary.length > 0) {
break;
}
}
Editor.ActiveDocument.Write(bulletSucc(resultary, thisline));
function bulletSucc(resultary, thisline) {
if (resultary.length == 0) {
return firstitem;
}
var chklast = resultary.pop();
var chklastlast = resultary.pop();
var i = (chklastlast == null || isNaN(chklast[3]) || isNaN(chklastlast[3])) ? 1 : chklast[3] - chklastlast[3];
var s = "", r3 = (chklast == null) ? 0 : chklast[3];
if (r3) {
if (isNaN(r3)) {
if (r3 == "9") {
s = 10;
} else {
i = (r3 == "z" || r3 == "Z") ? -25 : 1;
s = String.fromCharCode(r3.charCodeAt(r3.length - 1) + i);
}
} else {
s = Number(r3) + i;
s = (s > 0) ? s : 0;
if (r3.charAt(0) == "0") {
s = ("0000" + s).slice(-r3.length);
}
}
}
if (thisline.replace(/^[ \t]+/, "").length == 0) {
return chklast[2] + s + chklast[4] + chklast[5];
} else {
return "\n" + chklast[1] + chklast[2] + s + chklast[4] + chklast[5];
}
}
変更履歴
- 2013/03/15
- 空行があったときの動作を修正。
- 2013/03/07
- 数字の加算時にインデントのチェックをするようにした。
- その他こまかい動作の修正。
- 2013/03/06
- 全角数字に対応。
- 箇条書きが一行しかないとエラーになるのを修正。
スポンサーリンク