Next: 2.3 プログラムのロード
Up: 2 Emacs
Previous: 2.1 Emacs Lisp
ユーザはhelloという関数を定義することができる.
*scratch*バッファの中で
(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]>
という具合にバッファが表示される.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日