「行頭に移動」の版間の差分
スペースからタブに変更、空白の除去 |
変数にvarの宣言を追加 |
||
| (同じ利用者による、間の5版が非表示) | |||
| 1行目: | 1行目: | ||
このマクロは[https://www.haijin-boys.com/software/mery/mery-3-6-0#17 Mery Ver 3.6.1]で追加されたコマンド「行頭へ移動」「行頭またはテキストの開始位置へ移動」および[https://www.haijin-boys.com/software/mery/mery-3-6-0#16 Mery Ver 3.6.2]で追加されたコマンド「論理行の行頭へ移動」と同機能です。 | このマクロは[https://www.haijin-boys.com/software/mery/mery-3-6-0#17 Mery Ver 3.6.1]で追加されたコマンド「行頭へ移動」「行頭またはテキストの開始位置へ移動」および[https://www.haijin-boys.com/software/mery/mery-3-6-0#16 Mery Ver 3.6.2]で追加されたコマンド「論理行の行頭へ移動」と同機能です。 | ||
== | == Kuro 版 == | ||
行頭またはインデント位置に移動します。Homeキーに割り当てると良いかもしれません。Shift + Homeキーに割り当てる場合は「shift」変数を「true」に設定してください(shift = true の場合、選択しながら移動します)。 | |||
<syntaxhighlight lang="javascript" copy> | |||
<syntaxhighlight lang="javascript"> | |||
// ----------------------------------------------------------------------------- | // ----------------------------------------------------------------------------- | ||
// 行頭に移動 | // 行頭に移動 | ||
| 20行目: | 17行目: | ||
// インデントとして認識する文字(半角空白、全角空白、タブ) | // インデントとして認識する文字(半角空白、全角空白、タブ) | ||
var indent = new RegExp(" | |\t"); | var indent = new RegExp(" | |\t"); | ||
// Selection オブジェクトを取得 | |||
var sel = document.selection; | |||
// 現在位置取得 | // 現在位置取得 | ||
var x1 = | var x1 = sel.GetActivePointX(mePosView); | ||
var y1 = | var y1 = sel.GetActivePointY(mePosView); | ||
// 選択終了位置取得 | // 選択終了位置取得 | ||
var x2 = | var x2 = sel.GetBottomPointX(mePosView); | ||
var y2 = | var y2 = sel.GetBottomPointY(mePosView); | ||
// カーソルを行末に移動 | // カーソルを行末に移動 | ||
sel.EndOfLine(false); | |||
// カーソルを行頭に移動(これで1行選択) | // カーソルを行頭に移動(これで1行選択) | ||
sel.StartOfLine(true); | |||
var s = | var s = sel.Text; | ||
var i = 0; | var i = 0; | ||
// 行頭からタブの数を確認 | // 行頭からタブの数を確認 | ||
for (var j = 0; j < s.length; j++) { | for (var j = 0; j < s.length; j++) { | ||
c = s.charAt(j); | var c = s.charAt(j); | ||
if (indent.test(c)) { | if (indent.test(c)) { | ||
i++; | i++; | ||
| 50行目: | 50行目: | ||
// シフトオンの場合、選択終了位置に移動 | // シフトオンの場合、選択終了位置に移動 | ||
if (shift) { | if (shift) { | ||
sel.SetActivePoint(mePosView, x2, y2, false); | |||
} | } | ||
// 現在位置が1より大きくてタブの数以下の場合は行頭に移動 | // 現在位置が1より大きくてタブの数以下の場合は行頭に移動 | ||
if (x1 > 1 && x1 <= i + 1) { | if (x1 > 1 && x1 <= i + 1) { | ||
sel.StartOfLine(shift); | |||
// それ以外の場合はタブの数だけ進める | // それ以外の場合はタブの数だけ進める | ||
} else { | } else { | ||
sel.SetActivePoint(mePosView, i + 1, y1, shift); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == masme 版 == | ||
* 論理行単位の移動に対応しました。「logic」変数を「true」に書き換えてください。 | * 論理行単位の移動に対応しました。「logic」変数を「true」に書き換えてください。 | ||
* 折り返し行頭の空白をインデントとみなさない設定を追加する予定でしたが、一筋縄ではいかなかったため見送りました。 | * 折り返し行頭の空白をインデントとみなさない設定を追加する予定でしたが、一筋縄ではいかなかったため見送りました。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
//■行頭に移動(インデント対応) | //■行頭に移動(インデント対応) | ||
// 2014/02/08 | // 2014/02/08 | ||
| 92行目: | 92行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == noonworks 版 == | ||
* masmeさんのコードを参考に、折り返し行頭の空白をインデントとみなさない設定を追加してみました。 | * masmeさんのコードを参考に、折り返し行頭の空白をインデントとみなさない設定を追加してみました。 | ||
* 元から行頭にいた場合に前の行の行末に移動する設定を追加しました。 | * 元から行頭にいた場合に前の行の行末に移動する設定を追加しました。 | ||
* [https://github.com/noonworks/my-mery-util github] | * [https://github.com/noonworks/my-mery-util github] | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title = "行頭に移動" | #title = "行頭に移動" | ||
// 行頭に移動 | // 行頭に移動 | ||
| 149行目: | 149行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == isari 版 == | ||
* | * Kuroさん版以外がうまく動かないようでしたので、sukemaruさんの「[[行頭か行末 または 選択範囲の始点か終点]]」を参考に、トグルなしの移動のみを行う簡易版として書き直してみました。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title = "行頭に移動" | #title = "行頭に移動" | ||
スポンサーリンク