AutoHotKeyで変数代入を自動インデント

  • タグ:
  • タグはありません
Pause::
	cb_bk = %ClipboardAll%
	
	Clipboard =
	Send, ^c
	ClipWait, 2
	
	Sleep, 50
	tmp = %Clipboard%
	tmp2 = `r`n
	
	; 改行しかなかったら終了
	if tmp = %tmp2%
	{
		content =
	} else if ErrorLevel <> 0
	{
		; Error
		content =
	} else {
		; 改行記号で分割。\r\nで分割出来ないみたいなので\nで分割。\rは残る。あとで\n付け足す。
		AutoTrim, off
		content = %Clipboard%
		StringSplit, OutputArray, content, `n
		
		; 30行以上だったら中止
		if (OutputArray0 > 29) {
			Clipboard = %cb_bk%
			MsgBox, ごめん30行くらいまでしか無理
			exit
		}
		
		; 全部の行の【=】記号の位置を取得
		cnt := 1
		Loop 30 {
			StringGetPos, EQPos%cnt%, OutputArray%cnt%, =
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}
		
		; 一番右側にある【=】記号の位置を取得
		cnt := 1
		max := 0
		Loop 30 {
			if (EQPos%cnt% > max) {
				max := EQPos%cnt%
			}
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}
		
		; 一番右側にある【=】記号の位置に合わせて他の行でも右に移動
		cnt := 1
		Loop 30 {
			i := max - EQPos%cnt%
			Loop %i% {
			
				StringReplace, OutputArray%cnt%, OutputArray%cnt%, =, %A_Space%=
			}
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}
		
		; 全部の行をバッファにまとめてクリップボードに貼り付け
		buff = 
		cnt := 1
		Loop 30 {
			
			; 最後の行に【\r】記号があったら【\n】をつけたす。なかったら付けない。
			if (OutputArray0 == cnt) {
				StringGetPos, Decision, OutputArray%OutputArray0%, `r
				if ( Decision = -1 ) {
					buff := buff . OutputArray%cnt%
				} else {
					buff := buff . OutputArray%cnt% . "`n"
				}
			} else {
				buff := buff . OutputArray%cnt% . "`n"
			}
			
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}
		
		
		Clipboard = %buff%
		
		Send, ^v
		Sleep, 20
		
	}
Sleep, 200
Clipboard = %cb_bk%

return