Vz Resources
Commands
2019-10-28T21:05:28+09:00

コマンド拡張で学ぶVZマクロ入門 #67

番号記号初期キー機能
#67-^KRリードオンリーモードの制御

s==0(編集モード)

リードオンリーモードの制御を行う。

戻り値 r:常に 0

編集中のファイルをリードオンリーモードに変更する。リードオンリーファイルで実行すると編集モードに戻せる。ビューモードの解除にも使用される。

リードオンリーモードでも編集テキストの変更は可能である。ただし,編集内容は記憶媒体上のファイルに反映しない。テキストのクローズ時に問い合わせをせず,いきなり閉じてしまうのでファイルのセーブができないからだ。完全に編集操作を受け付けないのはビューモードである。

ビューモードの解除も#67で実行可能だが,通常モードからビューモードに戻すコマンドはない。

編集中のファイルと同じパス名であっても,リードオンリーモードであればオープンすることが可能である。このためリードオンリーでオープンしたテキストの離れた位置を参照しながら編集するということが可能となっている。そのための「テキストの二重化」というマクロが標準で導入されている。(ただし,このコマンド#67とは関係なく,#71を使うサンプルと考えられる。)

#67と関連が深い編集テキスト変数は,mr(テキスト修正フラグ)である。

mrの値とテキストの編集状態
mrの値ビット表示テキスト修正フラグの状態
00000 0000 0000 0000Edit mode(修正なし)
10000 0000 0000 0001Edit mode(修正あり)
128($80)0000 0000 1000 0000View mode
254($FE)0000 0000 1111 1110Read Only(修正あり)
255($FF)0000 0000 1111 1111Read Only(修正なし)

#67関連のアレコレ

※修正した部分をディスク上のファイルに反映させないようにするには 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)リードオンリーでオープン

s==1(文字列入力モード)

無効

s==2(コマンドラインモード)

無効

s==3(ファイラーモード)

無効

s==4(メニュー)

戻り値rの内容

s==4(1文字入力モード)

無効

マクロによる拡張

拡張View Modeの例

コマンド#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必要

コマンド拡張で学ぶVZマクロ入門 #67
The VZ resources, valid XHTML 1.0 Strict. ©2007-2019 by mezala.