(defun hello nil (message "Hello!!!")) ;; ここの))まで入力した後C-jを打つ hello ;; これがその結果表示される. (hello) ;; 次にこれを入力すると "Hello!!!" ;; これが表示され, ;; ミニメッセージバッファにHello!!!が表意される次に,helloの定義の最初のところでinteractiveという関数を 実行しておくと,M-x helloという具合にEmacsのコマンドとして 定義したことになる.
(defun hello nil (interactive) (message "Hello!!!")) hello (hello) "Hello!!!"たとえば,ファイルの中の丸をピリオドにすべて変換するコマンドを 定義したい場合の例として,次のようにmaru-piriというコマンド名の 定義を行い,
(defun maru-piri () (interactive) (let ((pos (point))) (goto-line 1) (replace-string "。" "." nil) (goto-char pos)))M-x maru-piriと実行するとバッファの中のすべての丸をピリオドへ変換する. interactive,point, goto-line, replace-string, goto-charなどはEmacs 用にすでに定義されている関数である. letについてはLisp標準の関数で局所変数を定義するためのもので, posという変数に(point)の計算結果を初期値として代入します. このようにEmacs Lispを用いることができると,便利なコマンドを各自で 定義して機能を拡張してゆくことができます. Clispを Emacs のコマンドとして利用できるように,
(defun clisp () (interactive) (switch-to-buffer (make-comint "lisp" "c:/cygwin/usr/local/clisp-2.28/lisp" nil "-M" "c:/cygwin/usr/local/clisp-2.28/lispinit.mem")))という記述を.emacsに記述しておくと, M-x clispというコマンドによって,
i i i i i i i ooooo o ooooooo ooooo ooooo I I I I I I I 8 8 8 8 8 o 8 8 I \ `+' / I 8 8 8 8 8 8 \ `-+-' / 8 8 8 ooooo 8oooo `-__|__-' 8 8 8 8 8 | 8 o 8 8 o 8 8 ------+------ ooooo 8ooooo ooo8ooo ooooo 8 Copyright (c) Bruno Haible, Michael Stoll 1992, 1993 Copyright (c) Bruno Haible, Marcus Daniels 1994-1997 Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998 Copyright (c) Bruno Haible, Sam Steingold 1999-2002 [1]>という具合にバッファが表示される.