bravo's blog

マルチプラットフォームGUIツールキット+軽量言語であるPyQtのプログラミングとか

PyQtクラスを追加しやすくするEmacs Lisp

Emacs LispPyQtのクラスを作る部分を省力化

PyQtプログラミングをやっていると、クラスを追加するのに毎回同じような記述をするのが非常にかったるくなってきます。普通にコピペでも良いのですが、以下のようなEmacs lispでもう少しEmacsらしく使えるようにしてみました。

  1. .emacsに以下のコードを追記してEmacsを再起動などで.emacsをリロードします。
  2. py-modeの状態でM-x pyqt-new-classで呼び出すとミニバッファにNew Qt class:と表示されますので、新しいクラスの名前を入力してEnterを押します。
  3. 次にミニバッファにBase Qt class:と表示されますので、直前に入力したクラスの親クラスを入力してEnterを押します。
  4. 追加したいクラスの__init__()まで含めたコードが入力されます。

この状態でも特に不自由はしてないのですが、インデント幅が固定だったりと改善の余地はあります。

.emacsに追記するコード

(add-hook 'py-mode-hook
          '(lambda ()
             (defun pyqt-new-class
               (class-name base-class-name)
               (interactive "sNew Qt class: \nsBase Qt class: ")
               (insert
                (format "class %s(%s):\n    def __init__(self, parent=None):\n        super(%s, self).__init__(parent)\n"
                        class-name base-class-name class-name)))
             ))

実行画面

関数を呼び出し
f:id:bravo:20160207015506p:plain

追加クラス名を入力
f:id:bravo:20160207015508p:plain

追加クラスの親クラス名を入力
f:id:bravo:20160207015507p:plain

このように入力されます。
f:id:bravo:20160207015509p:plain

PR