« また買っちゃった、Python教科書 「初めてのPython 3版」 | トップページ | エディタ スペースと改行の表示編 その2 »

2009年5月29日 (金)

エディタ スペースと改行の表示編 その1

2009-05-29(金)雨/曇り/晴れ がめまぐるしく変わっている

 またまた、役に立つのか?と言うようなことを、こまごまとやっています。

 最近、簡単なテキストエディタを作ってますが、スクリプトを実際に入力しているのはPCのエディタです。当然頭の中では比較してしまいます、特にスクリプトの入力時の見やすさをです。 そのなかで、作っているテキストエディタで気になったのは、インデントとキーワード間のスペースの問題です。

 即ち、携帯電話でリストを見たときに
  (1)インデントされていても、いくつスペースが入っているのか分からない。
  (2)インデント用のスペースだけが入力されている行(注1)では、スペースが入って
     いるのか改行だけされているのか分からない。

    注1:挿入メニューでキーワードを挿入すると、それに続く行もインデントされた
       状態で入力されるため。

という点です。これは、スペースも改行も表示されないからです。下図を見て、どういう風に入力されているか分かりますか?

Sscx0489 これでは、スペースや改行の位置が、ちょっと分かりませんよね。
 

 PCのエディタは改行が表示されていますし、上部にはルーラー(桁数のゲージとなる目盛りのバー)がありますから、大体分かります。

 ということで、何か手はないかと考えてみました。
    (1)改行を表示する。
    (2)スペースを表示する。

あたりが思い浮かびます。

今回は、(1)の改行表示についてです。

 今使っているフォントは、以前にいくつかパターンをを追加したもの(注2)で、改行コードに相当するところ(0x2029)に鍵矢印フォントを入れてあります。が、表示されていません。    通常の状態では、改行(コントロールコード)は表示されないようです(注3)。また、実際は無駄ですが、試しに0x0a(LF)にも入れてみましたが、やはり関係ないですね。無駄というのは、Pythonで画面に表示している時の文字はunicodeで、改行は0x2029に変換されているからです。

   注2:以前フォントを追加したのは0x2029と0x2028です。0x2028は
      line separator、0x2029はparagraph separatorです。

   注3:リスト表示(appuifw.listboxの表示データ)にしたときは、各データは1行表示
      しますが、その中に改行があれば、0x2029の鍵矢印が表示されます。

 下の画像は、試しに0x0aに鍵矢印を入れてみたところです。

 Font_add0a1

 さて苦肉の策として、読み込んで画面表示するときに、改行の前に特別なコードを挿入してその文字を改行と見なすことです。今回は0x21b2(down arrow with left tip 下左向き鍵矢印)を使用してみました。
 画面からこれを入力する手段はないので、コントロールコードみたいな感じで代用できるかなと思ったわけです。
ファイルに戻すときは、そのコードを削除します。

この方法の長所は
 ・特別なフォントは不要である
短所は
 ・対応したエディタだけしか表示できない
という点です。

 これを考えるにあたっては、Pythonで小さなスクリプトを書いて、読み込み直後、コード変換後、画面表示後などの各状態のコードを16進表示で見て検討しました。

Sscx0500 これはまともに表示させた時です。
   

 Sscx0501  Sscx0499

  左は16進表示させたときです。unicodeに変換した直後は、改行は0x0aですが、画面表示させたときに0x2029に変換されます。右は、改行の直前に0x21b2(下向き左向き鍵矢印)を入れてやったときです。

 とりあえず、PyMyEditorには入れてみることにしました。

 Sscx0494   Sscx0496

 これがPyMyEditorには入れて表示させてみたところです。これだと、改行の位置が見えるから、前よりは良いように思います。ただ、煩わしいときもあるかもしれないので、今のところオプションで指定できるようにしています。

 

|

« また買っちゃった、Python教科書 「初めてのPython 3版」 | トップページ | エディタ スペースと改行の表示編 その2 »

Python」カテゴリの記事

アプリケーション」カテゴリの記事

携帯電話」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« また買っちゃった、Python教科書 「初めてのPython 3版」 | トップページ | エディタ スペースと改行の表示編 その2 »