「読み取り専用」属性のファイルと「バックアップ」機能について

  1. お休み中のところ失礼します。
    「バックアップ」機能についてなので、ベータ版 2.6.9 のコメント欄に投稿するべきなのかもしれませんが、こちらで。

    状況は以下。
    ①「読み取り専用」属性のファイルの場合にも「書き換え禁止」フラグを解除でき、変更を加えると未保存の「*」マークつきになって、閉じるさいには『変更を保存しますか?』のダイアログが出ます。
    ②『はい』を押してもこのファイルの上書き保存はされませんが、
     「バックアップ」を ☑有効、かつ一世代かぎり(同名のファイルが... のオプションを ☐無効)
    にしている場合は、バックアップフォルダに「読み取り禁止」属性の同名バックアップファイルが作られます。

    ③-1. エクスプローラで元のファイルの「読み取り専用」属性を解除してから Mery で開きなおし、編集後に上書き保存しようとすると、先のバックアップファイルへの上書きができず『バックアップを作成できませんでした』のエラーになります。
    ③-2. あるいは「読み取り専用」属性のファイルに「名前をつけて保存」で同一ファイル名のまま別フォルダに保存して「読み取り専用」属性なしの同名・別ファイルにしてから、変更をくわえて上書き保存しようとした場合にも『バックアップを作成できませんでした』のエラーになります。

    「読み取り専用」属性のバックアップファイルが作られないようにするか、『バックアップを作成できませんでした』のエラーのあと自動的にエクスプローラでバックアップフォルダを開く仕組みがあるとよいのではないでしょうか? (「バックアップ」機能がまだベータ機能といういうことをかんがみると、さすがに後者はいらない気もしますが)

    余談ですが、通常操作では「無題」ドキュメントを「書き換え禁止」にはできませんが、マクロからだと document.ReadOnly = true/false; を適用することができますね。
    編集中の「無題」ドキュメントにマクロで「✓書き換え禁止」を誤爆させてしまうと、ステータスバーのダブルクリックや編集メニューからでは解除できないので、最初にやらかしたときは「なにごとぞ?」と焦りました。 :)
    (※編集モードで判別して「書き換え禁止」を適用するイベントマクロに、「カスタマイズ」で余計なイベントを付与してしまい、「無題」ドキュメントに「✓書き換え禁止」を誤爆させたときのことです)

     |  sukemaru  |  返信
  2. > お休み中のところ失礼します。
    休日はプログラミングがはかどりますね。って、Mery 以外のプログラミングがやりたかったのに、不本意ながら Mery 関連のプログラミングで 1 日終わってしまいました。

    > 「バックアップ」機能についてなので、ベータ版 2.6.9 のコメント欄に投稿するべきなのかもしれませんが、こちらで。
    フォーラムのほうがレスが付けやすいですし <pre> タグも使えるので、技術的な話題はフォーラムのほうがありがたいです。

    > 「読み取り専用」属性のバックアップファイルが作られないようにするか、『バックアップを作成できませんでした』のエラーのあと自動的にエクスプローラでバックアップフォルダを開く仕組みがあるとよいのではないでしょうか?

    現象を再現することができました。
    バックアップ機能だけを見ると、確かにそういった仕様も考えられますね。

    ちょっと別の視点からですが、メモ帳の動作を見てみたところ、「読み取り専用」のファイルに上書き保存しようとすると、「名前を付けて保存」のダイアログが表示されますので、この仕様に準拠すれば解決しそうな気がします。

    つまり、「読み取り専用」のファイルに上書き保存しようとした場合、バックアップも作成しないし、アクセス拒否のエラーも出さない。単純に「名前を付けて保存」のダイアログが開くだけ。というかたちですね。

    > 編集中の「無題」ドキュメントにマクロで「✓書き換え禁止」を誤爆させてしまうと、ステータスバーのダブルクリックや編集メニューからでは解除できないので、最初にやらかしたときは「なにごとぞ?」と焦りました。 :)

    そう言われてみると、「書き換え禁止」って無題のファイルには適用できませんし、編集中のファイルだと「変更を破棄して続行しますか?」で、ファイルを読み直して書き換え禁止にする仕様になっていますが、特にファイルのプロパティの「読み取り専用」と連動しているわけでもないので、この仕様自体に意味がない気がしてきました。

    普通に「無題」であろうが編集中であろうが、単純にエディタ上では書き換え禁止にするだけで、「読み直し」が発生する必要もないのではなかろうかと…。

     |  Kuro  |  返信
  3. ご返信ありがとうございます。
    > 休日はプログラミングがはかどりますね。って、Mery 以外のプログラミングがやりたかったのに、不本意ながら Mery 関連のプログラミングで 1 日終わってしまいました。
    いえいえ、Mery ユーザーからすると「Kuro さん、よくやった」と嬉しくなるような話じゃないですか。 :D
    きっと私のようなオジサンだけでなく、きっと女性ファンの方々も「モチベーションの高い Kuro さんステキです」ってモニターのあちら側でニッコリ。

    > ちょっと別の視点からですが、メモ帳の動作を見てみたところ、「読み取り専用」のファイルに上書き保存しようとすると、「名前を付けて保存」のダイアログが表示されますので、この仕様に準拠すれば解決しそうな気がします。
    > つまり、「読み取り専用」のファイルに上書き保存しようとした場合、バックアップも作成しないし、アクセス拒否のエラーも出さない。単純に「名前を付けて保存」のダイアログが開くだけ。というかたちですね。
    賛成です。 ノシ
    というか、私も書き込みのあとでそれに気がつきました…。
    読み取り専用ファイルに「保存の確認」のダイアログが出るから、ついつい『はい』を試してみたくなっちゃって(← コラ)おかしなことになってしまうのではないかって。『つい、じゃねぇだろ』とおこられそうですが、まあこれもベータテストの一環ということで。 :P
    それはさておき、私のようにむやみやたらにイベントマクロでアレやコレやを「書き換え禁止」で開く人はほとんどいないでしょうし、「書き換え禁止」を解除する時点で『このファイルは読み取り専用』とわかっているのがふつうですから、「読み取り専用」ファイルにたいしての「上書き保存」のアイコン/コマンドで「名前をつけて保存」のダイアログが開くというのは、とても親切な仕組みだとおもいます。

    > そう言われてみると、「書き換え禁止」って無題のファイルには適用できませんし、編集中のファイルだと「変更を破棄して続行しますか?」で、ファイルを読み直して書き換え禁止にする仕様になっていますが、特にファイルのプロパティの「読み取り専用」と連動しているわけでもないので、この仕様自体に意味がない気がしてきました。
    > 普通に「無題」であろうが編集中であろうが、単純にエディタ上では書き換え禁止にするだけで、「読み直し」が発生する必要もないのではなかろうかと…。
    これにも、はげしく賛成です!
    寝落ちしそうなときや編集作業を一休みして他のアプリで息抜きする前に誤操作で編集中のドキュメントを書き換えてしまわないように「書き換え禁止」にしたいようなときがあるので、編集中の仮ロック機能として気軽に「書き換え禁止」を利用できるようになるのでしたら大変ありがたいことです。
    マクロのメンテの途中で保存するまえに寝落ちして、変なところに一文字打ってしまっていたり、マウスの左チルトに仕込んだ Backspace で何文字か消してしまったりして、復元に手間取った経験が…。 X(
    イベントマクロ設定の「アイドル状態」(どんな状況?)や「フォーカスを失ったとき」(遅延設定ができない)は今まで使ったことないのですが、そのあたりのイベントで「読み直し」なしのロックができるようになったら安全かもしれませんね(個人的に)。

    ところで、「アクティブな文書が変更されたとき」というのが「別のタブをアクティブにしたとき」という意味だとおもうのですが、上にあげたイベントやこのイベントをはじめ「ファイルを開いた」「文書を閉じた」などの "編集操作以外でのイベント" にも遅延設定をつけ加えるのは、仕様的に難しいのでしょうか?
    先だって作った「タブのリスト」を作るコードや「閉じたファイルのリスト」を作るコードが(うちのPCですら)おもった以上に高速に動作してくれるので、タブ上でホイールを転がしたときにマクロが何回も走ることなしに、アクティブなタブが確定したぐらいのタイミングでイベントマクロを一発だけ実行させたいです。

     |  sukemaru  |  返信
スポンサーリンク