ちょいと理解すっとばしてpython用のelispの関数を書いた
以下のようなの
(add-hook 'python-mode-hook (function (lambda () (local-set-key "\"" 'electric-pair) (local-set-key "\'" 'electric-pair) (local-set-key "(" 'electric-pair) (local-set-key "[" 'electric-pair) (local-set-key "{" 'electric-pair) (local-set-key "," 'py-comma) (local-set-key "=" 'py-equal) (local-set-key "+" (lambda () (interactive)(insert " + "))) ))) (defun py-comma () (interactive) (let ((assign-len (length ", "))) (if (and (save-excursion (backward-char assign-len) (looking-at ", "))) (progn (delete-backward-char assign-len) (insert ",")) (delete-horizontal-space) (insert ", ")))) (defun py-equal () (interactive) (let ((assign-len (length " = "))) (if (and (save-excursion (backward-char assign-len) (looking-at " = "))) (progn (delete-backward-char assign-len) (insert " == ")) (delete-horizontal-space) (insert " = "))))
electric-pairっつーのはemacs wikiにのってるからそっち見てちょ。
py-commaっつーのは一回目の,押下ではカンマの後にスペース入れる。で二回目押下だと普通のカンマ。
py-eqaulっつーのは一回目の=押下では"スペース=スペース"。で二回目押下だと"スペース==スペース"。
pythonで絶対イコール前後の空白を入れる人とかには共感してもらえるんではなかろーか。
添削歓迎。というか添削して。