[添付ファイル一覧]
[全ページの添付ファイル一覧]
- TransposeLine.ppa
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F323030_5472616E73706F73654C696E652E707061
- ページ:Macro/投稿/200
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F323030_5472616E73706F73654C696E652E707061
- MD5ハッシュ値:e1c0830fe2192b6e1df91bb2eb74e806
- サイズ:1.4KB (1450 bytes)
- Content-type:application/octet-stream
- 登録日時:2009/04/20 04:37:32
- アクセス数:469
- MD5ハッシュ値:e1c0830fe2192b6e1df91bb2eb74e806
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| | // (Tab=8)
// [概要]
// カーソルのある行と、上の行を入れ替えます。
// 行入れ替え後のカーソル位置は、上の行の先頭に移動します。
// (emacsの transpose-lines (C-x C-t)、
// VCの LineTranspose (Alt+Shift+T)の様な機能です。)
// [変更履歴]
// 2009/04/17 範囲選択中なら取り消し。
// 2004/08/24 新規
var
y : Integer;
s : String;
begin
s := S_ExpandParameter('${R?r$:$:$}'); // '${R?読み取り専用$:上書き禁止$:いずれでもない$}'
if s = 'r' then Exit; // 読み取り専用
//y := S_ExpandParameter('$y'); // (これでもOKだったが)
y := StrToInt( S_ExpandParameter('$y') ); // カーソル行(改行単位)
if y <= 1 then Exit; // カーソル行が、1行目
if y >= S_GetLineCount(0) then begin
s := S_GetLineStr(y);
if (Pos(#13, s) = 0) and (Pos(#10, s) = 0) then Exit;
// カーソル行に、改行が無い。(EOF行)
end;
S_CancelMode(); // 範囲選択中なら取り消し。
// 入れ替えた文字列
s := S_GetLineStr( y ) + S_GetLineStr( y - 1 );
// 上の行(改行単位)へ
S_GoLineTop(9);
S_Up();
S_GoLineTop(9);
// 上の行から、2行選択
S_BeginSelect();
while( StrToInt(S_ExpandParameter('$y')) <= y ) do begin
S_Down();
end;
// 入れ替えた文字列を挿入
S_InsText( s );
// 上の行(改行単位)へ
S_Up();
S_GoLineTop(9);
S_Up();
S_GoLineTop(9);
// S_InsText() の後は、
// 再描画しないと更新状態にならない。([ファイル名(更新)] のようにならない。)
// カーソル位置も更新されない。
S_ReDraw();
end;
|