番号 | 記号 | 初期キー | 機能 |
---|---|---|---|
#67 | - | ^KR | リードオンリーモードの制御 |
リードオンリーモードの制御を行う。
戻り値 r:常に 0
編集中のファイルをリードオンリーモードに変更する。リードオンリーファイルで実行すると編集モードに戻せる。ビューモードの解除にも使用される。
リードオンリーモードでも編集テキストの変更は可能である。ただし,編集内容は記憶媒体上のファイルに反映しない。テキストのクローズ時に問い合わせをせず,いきなり閉じてしまうのでファイルのセーブができないからだ。完全に編集操作を受け付けないのはビューモードである。
ビューモードの解除も#67で実行可能だが,通常モードからビューモードに戻すコマンドはない。
編集中のファイルと同じパス名であっても,リードオンリーモードであればオープンすることが可能である。このためリードオンリーでオープンしたテキストの離れた位置を参照しながら編集するということが可能となっている。そのための「テキストの二重化」というマクロが標準で導入されている。(ただし,このコマンド#67とは関係なく,#71を使うサンプルと考えられる。)
#67と関連が深い編集テキスト変数は,mr(テキスト修正フラグ)である。
mrの値 | ビット表示 | テキスト修正フラグの状態 |
---|---|---|
0 | 0000 0000 0000 0000 | Edit mode(修正なし) |
1 | 0000 0000 0000 0001 | Edit mode(修正あり) |
128($80) | 0000 0000 1000 0000 | View mode |
254($FE) | 0000 0000 1111 1110 | Read Only(修正あり) |
255($FF) | 0000 0000 1111 1111 | Read Only(修正なし) |
※修正した部分をディスク上のファイルに反映させないようにするには mr=3 を使う。mr3 は mr$ff と異なり profile に mr を保存しないので,リードオンリーでクローズした場合は,再びファイルをオープンするとリードオンリーになってしまうが,mr3 とした場合は,ファイルをオープンしても修正モードでオープンできる。(PK/15/00475/Hiro.T)
※mr3(mr2-127($$7f))は #] mr-, と同じ動作になる。(DC/15/02929/m.gann)
※mr2 はリードオンリー($ff)と同じ閉じ方をする。(DC/15/05869/Emmett)
RO | ビューモード |
#71(#R) | リードオンリーでオープン |
無効
無効
無効
無効
コマンド#67とは直接の関連はない。#67でビューモードを解除したのちに再度ビューモードに戻すコマンドがないことは既に述べたとおりだが,それをマクロで補う例である。製品版で初期導入されているサンプルマクロ「Viewモード」は編集スイッチROを切り替える機能のみ有するが,シフトキーを押しながら実行したときは,編集中のファイルを開き直すことでビューモードに変更する(と見せかける)機能を付加したものである。
6 ^QV "View mode[\]" ;edit file [\] View mode
(ks&1)??{ ro[, ro$80!=mr, &> ro],. } ; call Undo Edit
am[,
(ro!)?{ am5, &m("View mode") }
?{ &m("Edit mode") }
am],
7 [ESC]U "Undo Edit" ;ikuo+m.gann ;view mode の直後に置く
?. (wn)??. ;consoleでは何もしない
#] (mr==1)?{ &a(37) (r<1)?. } ;?. &a(37) (wn&&r>0)??.
mr-, ht[, we[, ly[, ln[, ;mr3, == #] mr-,
&s #L #P #m ;#L:マクロ中では入力窓固定
&#J(r]) ky], we], ht], &d ;ky代入後&d必要