◀ANSI版開発トップへ
  • 3239 最終行(空行時)の行番号表示
    • 3249 RE: 最終行(空行時)の行番号表示
      • 3251 RE2: 最終行(空行時)の行番号表示
      • 3252 Re2: 最終行(空行時)の行番号表示
        • 3258 Re3: 最終行(空行時)の行番号表示
          • 3262 Re4: 最終行(空行時)の行番号表示
            • 3264 Re5: 最終行(空行時)の行番号表示
              • 3265 Re6: 最終行(空行時)の行番号表示
            • 3266 Re5: 最終行(空行時)の行番号表示
      • 3269 Re2: 最終行(空行時)の行番号表示
  • [3239] 最終行(空行時)の行番号表示 げんた 2003年10月13日 04:55

    以前から何度も指摘されてきた最終行の空行に行番号が付かない件→新規画面で1行目の行番号がない件に取り組んでみました.

    一応それらしく動く物ができましたのでパッチ+バイナリを置いておきます.
    http://members.at.infoseek.co.jp/sakura_editor/snapshot/lastline_2003-10-13_from_1.4.3.2.zip
    すいさん(となぜか指名してみる)がOKを出したら取り込もうかと思っております.

    [方向性]
    ・バッファ末尾の空行=全体が空 or 最終行に改行がある 場合に空文字列のバッファを確保して最後に加える
    ・そのために最終行を付加する関数をCDocLineMgrの行加工部分の末尾で呼びだす.
    当初はこれだけで動くと思ったのですが,レイアウト構築部分と画面表示部分で文字列長=0の場合の考慮が抜けていて行が消えたり無限ループしたりしたので,以下の2点を追加しました.
    ・レイアウト構築時に文字列長=0の場合を追加する.
    ・描画時に文字列長=0の場合を考慮してoffset==0なら描画ループに入れるようにする.
    • [3249] RE: 最終行(空行時)の行番号表示 すい 2003年10月15日 00:02

      >http://members.at.infoseek.co.jp/sakura_editor/snapshot/lastline_2003-10-13_from_1.4.3.2.zip
      >すいさん(となぜか指名してみる)がOKを出したら取り込もうかと思っております.

      指名されてしまった。指名料とらなくては。(笑)
      指名料として1ジョークお支払いください。
      支払われたジョークは私が個人的に笑いのある楽しい人生を送るために利用させていただきますので。
      簡単・短いジョークで、駄洒落 可、ローカルな内輪ネタ不可、風化し易そうなネタ不可、
      オヤジギャグは極力お控えください、な方向で。

      という冗談は さておき、早速 NG を。(え゛)

      ★1
      内容が全く同じファイルを2個開き、「検索(S)」→「ファイル内容比較(@)」すると、
      全く同じファイルなのに「異なる箇所が見つかりました。」と虚偽報告されて
      ファイル末尾へ移動します。

      ★2
      「ファイル(F)」→「開き直す(W)」を実行すると、

      ・そのエディタのウィンドウがハングアップ(フリーズ)する事がある。
       タスクマネージャ(Windows2000)で見ると、CPU処理能力を喰いまくっている。

      ・そのエディタのウィンドウがエラーで落ちる事がある。(↓Windows2000の場合)
       |----------------------------------------|
       |アプリケーション エラー |
       |----------------------------------------|
       |   エラーが発生したため、sakura.exe を終了します。プログラムをもう一度開始す |
       | ! る必要があります。 |
       |   エラー ログを作成しています。 |
       |  [ OK ] |
       |----------------------------------------|

      適当なファイルを開いて、[Alt]キー押しっぱなしで [F] → [W] → [F] → [W] → [F] → [W] .... と
      何度も(回数は不定ですが50回くらい?)操作を繰り返すとか。。。

      どうも「ファイルを開く」処理の中で異常が発生する事があるみたいに思えます。
      一度だけ、「最近使ったファイル(F)」→「0 hogehoge.txt」 でファイルを開こうとした時にも
      ハングアップしましたので。

      上記両者共
      ・lastline_2003-10-13_from_1_4_3_2.zip でのみ発生します。
      ・sakura_2003-10-13.zip では発生しないようです。


      ★★
      あと、そもそも、これ要望の動作と違うんじゃないでしょうか?
      要望は「空のファイルを開いた時にも常に1行目だけは行番号表示する。他の場合の動作は現状通り。」
      じゃぁありませんでしたっけ? (;^^A
      つまり
      ・“空のファイルを開いている場合”のみの特化処理。
      ・1行目だけはファイル内容が空であろうが何であろうが、常に1行目のみ行番号を表示する。
      みたいな。(違いました?)
      この、「10行目までしかないファイルを開いた時、11行目まで行番号が表示されてしまう」のって、
      なんか使っていて違和感あり過ぎなんですけれど。 (;^^;)
      • [3251] RE2: 最終行(空行時)の行番号表示 すい 2003年10月15日 01:33

        >★2
        >「ファイル(F)」→「開き直す(W)」を実行すると、
        >
        >・そのエディタのウィンドウがハングアップ(フリーズ)する事がある。
        > タスクマネージャ(Windows2000)で見ると、CPU処理能力を喰いまくっている。
        >
        >・そのエディタのウィンドウがエラーで落ちる事がある。(↓Windows2000の場合)
           チョキチョキチョキ
            "(V)..(V)"
             ミ( 略 )ミ
        >適当なファイルを開いて、[Alt]キー押しっぱなしで [F] → [W] → [F] → [W] → [F] → [W] .... と
        >何度も(回数は不定ですが50回くらい?)操作を繰り返すとか。。。

        http://www.egroups.co.jp/files/sakura-editor/Junk/CODE_TXT.LZH
        ↑この CODE.TXT (Shift_JIS) のファイルを開いて、「SJISで開き直す」「EUCで開き直す」を
        ツールバーに登録して交互にボタン押して実行したりすると再現する確率が高いみたいです。
        編集中のファイルの内容や操作方法(メニューから操作するか、ツールバーに登録して
        ボタンを押すか、キー割り当てしてキー操作するか...)によって再現する確率が色々変わるみたい。
        なんか不安定です。
      • [3252] Re2: 最終行(空行時)の行番号表示 wmlhq 2003年10月15日 12:19

        メッセージボックスが表示されたときに、Ctrl+Cを押すと、その内容がテキストとしてクリップボードにコピーされます。コピーされた後、他のアプリに貼り付けできます。結構使えるのでお忘れなく。

        # 内部ではFormatMessageが呼ばれているらしい。
        • [3258] Re3: 最終行(空行時)の行番号表示 すい 2003年10月16日 00:34

          >メッセージボックスが表示されたときに、Ctrl+Cを押すと、その内容がテキストとしてクリップボードにコピーされます。

          すみません、これ何を言っているのか わからないのですが?
          少なくとも Windows 標準にはそんな機能ありませんよね。
          Windows XP ではそんな機能が付いたという噂を聞いた事はありますが。
          # あいにく WindowsXP の環境は身近にありませんので。
          念のため試すだけ試してみましたけど、そのような機能はありませんでした。(Windows2000)

          別に全然困っていないですけどね。
          ダイアログなどの文字列を取得する事が出来るフリーソフトの類は世の中たくさんありますから。
          簡単に自作する事もできますし。HSPとかで。
          • [3262] Re4: 最終行(空行時)の行番号表示 wmlhq 2003年10月16日 11:17

            >そのような機能はありませんでした。(Windows2000)
            ふうん、それじゃ君の環境には何かフックが引っかかってたんだね。ダイアログが表示されたらポインタが勝手に動くようなアプリか。普通のWindowsなら、どこでもできるんですけど。
            Wn9x/2kでも成功
            ---------------------------
            名前を付けて保存
            ---------------------------
            C:\a.txt は既に存在します。
            上書きしますか?
            ---------------------------
            はい(Y) いいえ(N)
            ---------------------------
            • [3264] Re5: 最終行(空行時)の行番号表示 sage 2003年10月16日 23:31

              ▼ wmlhqさん
              > >そのような機能はありませんでした。(Windows2000)
              > ふうん、それじゃ君の環境には何かフックが引っかかってたんだね。ダイアログが表示されたらポインタが勝手に動くようなアプリか。普通のWindowsなら、どこでもできるんですけど。
              > Wn9x/2kでも成功

              ポインタが勝手に動いたりするものを入れてない WinMeですが、
              うちでも、コピー&ペーストできませぬ・・・
              • [3265] Re6: 最終行(空行時)の行番号表示 ZONE 2003年10月17日 00:28

                ▼ sageさん
                > ポインタが勝手に動いたりするものを入れてない WinMeですが、
                > うちでも、コピー&ペーストできませぬ・・・
                WinXPProです。Sakura(Ver1.4.3.2)で名前を付けて保存で、上書き保存のダイアログを表示し、秀丸やメモ帳にコピペしたら成功しました。
                エクスプローラのファイル削除ダイアログはだめでした(当たり前ですか?)。
            • [3266] Re5: 最終行(空行時)の行番号表示 すい 2003年10月17日 04:39

              この件について、蒔田さん からアドバイスのメールを頂きました。(ありがとうございます>蒔田さん)

              大雑把な内容は

              MsgBox "メッセージ"
              という1行だけのファイルを作成してWSHのファイル( hoge.vbs )として保存して
              マウスで突ついて実行。ダイアログが現れたらCTRL+Cで取れます。

              という感じで、やってみたら確かに取れました。

              で、そこからさらに色々調べてみたり、あちこちのダイアログで試してみましたが、、、
              う~ん、確かにクリップボードに取れるダイアログも一部ありますが、
              日常的に見かけるダイアログの殆どは駄目ですね。

              感じとしては、
              “本当に MessageBox でプログラマーが(手抜き的な感じに)簡単・お気楽に表示しているようなダイアログ”
              だけが取得可能。つまり
              ・絵が無い確認だけのダイアログ
              ・赤い○の中に白い× の絵のダイアログ
              ・白い吹き出しの中に青い? の絵のダイアログ
              ・黄色い△の中に黒い! の絵のダイアログ
              ・白い吹き出しの中に青いi の絵のダイアログ
              といったダイアログでのみ取り込み可能。他は駄目。

              例えば「ファイル削除」とか「同名ファイルの上書き確認」とかの
              よく見かけるような凝った( (--;)ダイアログ中の絵とかが独自でしょ?)
              確認ダイアログのような様な物はもちろん駄目。
              # MessageBox じゃぁない。

              身近な例だと、このエディタの PPA マクロで MessageBox で表示
              出来るような物だけ。(って、それ、身近な例として適切かぁ? > 私 (;^^;) )

              で、残念ながら私が普段目にするダイアログでは、クリップボードに
              取れるダイアログは皆無に等しい状況です。 (;_;)

              ちなみに今回のアプリケーションが落ちた時のエラーダイアログは、
              一見、見た目は MessageBox っぽいのですけが、これもCTRL+Cでの
              クリップボード取り込みは出来ないヤツですね。

              >---------------------------
              >名前を付けて保存
              >---------------------------
              >C:\a.txt は既に存在します。
              >上書きしますか?
              >---------------------------
              >はい(Y) いいえ(N)
              >---------------------------
              ↑この手の普通に使っている限りは、まずお目にかかる事が無い
              ダイアログだけみたいですね、取れるのは。 (--;)
              残念ながら使い道(使える時)が殆ど無さそうです。 (;_;)

              あと、引用前後しますが
              >Wn9x/2kでも成功

              Win2k の方は分かったのですけど、9x の方とは?
              具体的に何で試されたのでしょうか?(Win95/98/Meのどれ?)
              実際 Windows 95 では無理でしたし、
              http://homepage2.nifty.com/winfaq/w2k/hints.html#1236
              ↑とか見る限りこの機能は Windows 2000 以降の機能のようなのですが。。。

              あと、私はこの手の動作確認時は常駐アプリの類は全て
              停止してやっております。念のため。(当然ですが)
      • [3269] Re2: 最終行(空行時)の行番号表示 げんた 2003年10月18日 16:20

        >あと、そもそも、これ要望の動作と違うんじゃないでしょうか?
        >この、「10行目までしかないファイルを開いた時、11行目まで行番号が表示されてしまう」のって、
        >なんか使っていて違和感あり過ぎなんですけれど。 (;^^;)
        わたしが要望を誤解していたようです.とりあえずこれは参考例として放置しておきます.

        1行目だけというのであれば先日wmlhqさんの書かれた方法がBESTかもしれません.
        左側の幅を変えるだけでも1文字目の入力で右にずれることは無くなりますから違和感は減るでしょうし.