EmacsLisp書いてみた
30分プログラム、その603。EmacsLispでマイナーモードとか書けたらかっこいいなーと思ったので、EmacsLispを始めてみました。
とりあえず練習ということで、スペースを挿入して強調するstrongという関数を書いてみた。
hogehoge
という単語にキャレットを重ねてM-x strongとすると
h o g e h o g e
になる。
簡単にできると思いきや、結構大変だった。基本副作用バリバリなのはしょうがないんだろうね、たぶん。
使い方
下記のコードを評価するか、strong.elという名前で保存したあと
(require 'strong)
とする。
あとは、単語にキャレットを重ねてM-x strongを呼び出す。
ソースコード
;;; strong.el ---strong.el (defun strong-insert (sep str) (mapconcat 'char-to-string str sep)) (defun strong () (interactive) (save-excursion (let* ((from (re-search-backward "\\b")) (to (progn (forward-char) (re-search-forward "\\b")))) (save-restriction (narrow-to-region from to) (let* ((text (filter-buffer-substring (point-min) (point-max) t t)) (stronged (strong-insert " " text))) (insert stronged)))))) (provide 'strong) ;;; strong.el ends here