長門有希Pythonプロンプト Ver.2

以前長門有希Pythonプロンプト - yuyarinの日記という記事で長門有希Pythonプロンプトを紹介したが、先日少し改良したので報告を。

思想

前回はプロンプトの入力を"YUKI.N>"としたが、それは何か違うと。やっぱろ長門有希と対話したいよね!ってことで。

手順

Pythonのインストールディレクトリ下のLib\idlelib\にあるファイルを次の手順で書き換える。注意:コードを書き換えてから2回再起動しないと変更が反映されないようです。


1.PyShell.pyの2行目(空行)にエンコード指定を書いてutf-8で保存。

# -*- coding: utf-8 -*-

2.PyShell.pyの700行目にあるウィンドウタイトルを書き換える。

    shell_title = "Nagato Python Shell"

3.PyShell.pyの807, 820、1208行目の">>> "を"YUYA.K> "など自分の名前に書き換える(コメントは変更前の行)。

# line 807
            #sys.ps1 = ">>> "
            sys.ps1 = "YUYA.K> "
# line 820
            #sys.ps1 = "[DEBUG ON]\n>>> "
            sys.ps1 = "[DEBUG ON]\nYUYA.K> "
#line 1208
        #sys.ps1 = '>>> '
        sys.ps1 = "YUYA.K> "

4.PyShell.pyの895行目(バージョン情報表示部の下)に長門から起動メッセージを追加する(コメントは前後の行)。前回は"self.console.write"としていたが、今回は"self.stdout.write"とする。これがポイント。

#line892=self.write("Python %s on %s\n%s\nIDLE %s      %s\n" %
#line893=           (sys.version, sys.platform, self.COPYRIGHT,
#line894=            idlever.IDLE_VERSION, nosub))
        self.stdout.write(u'YUKI.N> みえてる?\nYUKI.N> うまく言語化できない。情報の伝達に齟齬が発生するかもしれない。でも、聞いて。')
#line896=self.showprompt()

5.Pythonのインストールディレクトリ下のLib\idlelib\にnagato.gifを保存する。

6.EditorWindow.pyの162行目以降に以下を追加(コメントは前後の行)。

#line161=text_frame.pack(side=LEFT, fill=BOTH, expand=1)
        self.nagato = PhotoImage(file='C:\\Python23\\Lib\\idlelib\\nagato.gif')
        text.image_create('1.0', image=self.nagato)
        text.pack(side=TOP, fill=BOTH, expand=1)
#line165=text.focus_set()

7.run.pyのruncode()内247行目に"sys.stdout.write("YUKI.N> ")"を追加する。

#line244=def runcode(self, code):
        try:
            self.usr_exc_info = None
            sys.stdout.write("YUKI.N> ")
            exec code in self.locals

8.PyShall.pyの940行目付近、Ctrl+Cの中断処理を書き換える。

            self.stdout.write("YUKI.N> ")
            self.interp.write(u"処理は中断された。あなたの指示。\n")

実行

長門プロンプトできあがりっ

おはようって言ったらおはようって返してくれるよ!

課題など

  • 複数行の結果を表示する場合1行目だけ "YUKI.N> " が表示される。
  • エラーメッセージをそれっぽく書き換える。
  • 'おはよう有希' と言っても 'おはようゆうやりん' と返してくれない。
  • というかエコーしかしてくれない。
  • defしたときに「わかった」とか言ってくれたら嬉しいよね。