Programming

Emacs Lisp 시작하기

steloflute 2013. 11. 27. 01:12
0. An Introduction to Programming in Emacs Lisp
이것은 Emacs에도 내장되어 있습니다. (Help -> More Manuals -> Introduction to Emacs Lisp)

1. IELM: Inferior Emacs Lisp Mode


IELM은 Emacs Lisp REPL입니다.

emacs 실행 후,
M-x ielm RET

*** Welcome to IELM ***  Type (describe-mode) for help.
ELISP> (+ 1 2)
3
ELISP> (setq a 3)
3


2. Emacs 시작시 바로 IELM을 띄우고 싶다

shell prompt에서:
emacs -f ielm

3. Emacs Lisp script를 shell에서 바로 실행하고 싶다

예제: Project Euler Problem 1
$ emacs --script euler1.el
233168

$ cat euler1.el
(setq sum 0
      i 1)
(while (< i 1000)
  (if (or (= 0 (% i 3)) (= 0 (% i 5))) (setq sum (+ sum i)))
  (setq i (1+ i)))
(princ sum)


4. Emacs Buffer에서 일부분 evaluation

(꼭 *scratch* 버퍼가 아니어도 됩니다.)

(+ 1 2)_

_ 자리에 커서를 놓고 C-x C-e를 누르면 메시지창(화면 하단)에 결과값 3이 나온다.
_ 자리에 커서를 놓고 C-j를 누르면 바로 아랫줄에 결과값 3과 개행문자 2개가 삽입된다.


5. 간혹 에러가 뜨면 당황하지 말자

(+ 1 "a")
를 실행했더니,

Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p "a")
  +(1 "a")
  eval((+ 1 "a") nil)
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)


이때는 침착하게 q를 한번 눌러주면 된다. (과거에 저는 Esc를 세번 눌렀습니다.)



'Programming' 카테고리의 다른 글

Three algorithms for converting color to grayscale  (0) 2013.12.02
(Emacs Lisp) url-retrieve  (0) 2013.11.28
(C) fibonacci number  (0) 2013.11.24
BUFSIZ  (0) 2013.11.24
C: Linux Socket Programming, TCP, a simple HTTP client  (0) 2013.11.23