次のページ 前のページ 目次へ

Emacs-Lisp HOWTO

Yoshio Shimamura <yoshios@green.ocn.ne.jp>

v1.0, 29 July 2000
この文書は、Emacs-Lisp についての簡易リファレンスです。 この文書の最新版は http://hp.vector.co.jp/authors/VA004572/index.html から入手可能です。

Emacs-Lisp HOWTO Index

1 概要

2 数値

3 変数

4 関数

5 制御構造

6 実行とデバッグ


1 概要

お約束
------
1 ファイルの一行目
;;; -*- Emacs-Lisp -*-

2 タイトルとコピーライトメッセージを入れる

3 ファイルの拡張子を.elにする



基礎
----
ファイルの先頭に次のように記述する。
; -*- mode: lisp-interaction; syntax: elisp -*-
; title
; Copyright

拡張子を.elにする。

2 数値

数値
----
1234 整数
3.14 小数
?c cの文字コード
?8 8進数
?x16 16進数

3 変数

変数
----
defvar var-name &optional "変数の説明"
グローバル変数は、必ずdefvarで宣言する
グローバル変数は、必ずパッケージ固有の接頭辞を付ける

set シンボルへの値の代入
setq クォートしたシンボルへの値の代入

バッファローカル変数
(let (変数リスト)
     実行部)

letにより同名の変数は隠蔽される。





(set 'girls '(jana dana judy))

(setq cars '(bmw porsche audi))

4 関数

4.1 メジャーモード

メジャーモードが備えるべきもの
1モード名の設定
(setq major-mode 'mode-name)
(setq mode-name "モード名")

2キーマップの設定
グローバルマップ
(define-key global-map "\C-helo" 'hello-world)

ローカルマップ
;a-local-mapというローカルマップ作成
(setq a-local-map (make-keymap))
;キー定義
(define-key a-local-map "s" 'sort-lines)
;使用宣言
(use-local-map a-local-map)

3動作に必要な変数や関数の設定
メジャーモードの中心関数
(defun a-mode()
       (interactive)
       モード名の設定
       キーマップの設定)

4.2 関数定義

(defun func-name (args, ...)
       "Comments"
       body)

引数リストで使えるもの
任意個の仮引数
&optional 以降の引数は省略可能
&rest 以降の引数を1つのリストとして扱う

関数定義のフォーマット
(defun FUNC-NAME (ARGUMENTS...)
  "COMMENTS"
  (interactive 引き数に関する情報);
  BODY...)

例 7倍する関数
定義
(defun multiply-by-seven (number)
  "Multiply NUMBER by seven."
  (* 7 number))

呼び出し
(multiply-by-seven (+ 3 3))


4.3 算術関数

+ 加算
- 減算
* 乗算
/ 除算
% 剰余
1+ インクリメント
1- デクリメント

4.4 文字列関数

文字の連結
(concat "I like " "to drive a car !")

メッセージの表示
(message "Hello Emacs-Lisp!")

5 制御構造

(if 式 Form1 Form2 ...)

(and Form1 Form2 ...)

(or Form1 Form2 ...)

(cond
	(式1 真の場合)
	(式2 真の場合))

(while 式 実行部)

(progn 式1 式2 ... 式n)
次のように条件を満たしたときに複数の処理を行う場合に使われる
(if (CONDITION)
  (progn proc1 proc2 ...)
  PROC)

(error "エラーメッセージ")
関数の実行をストップしトップレベルに戻る。

6 実行とデバッグ

ファイル全体のS式を評価するには、
M-x load-file
または
M-x eval-current-buffer

次のページ 前のページ 目次へ