emacs lisp 시작하기
이맥스 설정파일은 이맥스 리스프 소스코드로 이루어져있습니다. 이맥스 리스프의 기초를 알고 있으면 설정을 할 때 도움이 됩니다.
함수의 호출
리스프는 (fun-name arg0 arg1)
형태로 함수를 호출합니다. 다른 언어와
다르게 모든 언어의 구성 요소가 함수입니다. 조건문, 반복문, 함수 정의,
변수 선언 등의 모든 문법이 함수 호출 문법을 따릅니다.
;; + 함수는 인자를 여러개 받아서 다 더한 값을 리턴합니다.
(+ 1 2)
(+ 1 2 3)
;; message 함수는 c의 printf 함수와 비슷합니다.
;; 포맷 스트링과 인자를 받아 포매팅한 뒤 메세지 버퍼에 출력합니다.
(message "hello world")
(message "%s %s" 2 4)
설정파일의 일부분만 실행하기
이맥스 설정파일 혹은 아무 텍스트 버퍼에서 (+ 1 2)
를 입력한 뒤 커서를
닫는 괄호 )
뒤에 두고 Ctrl-x Ctrl-e 를 입력해 보세요. 이맥스의 아래
조그만 박스에 결과 값인 3
이 나오는 것을 볼 수 있습니다. 이맥스를
설졍할 때에는 이렇게 일부 설정 코드만 실행하는 일이 자주 있습니다.
주석
emacs lisp는 ;
글자부터 라인의 끝까지를 주석으로 인식하고
무시합니다. 잠시 특별한 설정값을 무시하게 만들거나 설정에 대한 설명을
쓰기 위해서 사용합니다.
자료구조
리스트
()
는 함수를 호출하는 문법이었습니다. 앞에 작은 따옴표를 붙이면 '()
리스트 자료구조가 됩니다. '(1 2 3)
은 1, 2, 3을 포함하는
리스트입니다. 설정할 때 여러 값을 입력해야 하는 경우 자주 사용합니다.
페어
리스트는 원소를 0개부터 n개까지 가질 수 있습니다. 두 개의 원소를
표현하고 싶을 때 종종 페어를 사용합니다. 두 개의 원소 사이에 . 을
집어넣어 pair를 만들 수 있습니다. '(1 . 3)
는 1과 3을 가진
페어입니다. 키 밸류 형식의 설정을 하거나 값이 두개가 필요한 설정을
만들 때 자주 사용합니다.
페어와 리스트는 알고 보면 같은 걸 의미하지만 설정파일을 만드는 입장에서 자세한 내용을 알 필요 없습니다.
함수와 변수의 구분
emacs lisp는 함수와 변수의 영역을 구분합니다. 함수를 다른 함수의
인자로 보낼 때는 작은 따옴표를 함수 이름 앞에 붙여주어야 합니다. 언제
'
를 붙여야 하는지 이해할 필요는 없습니다. 다른 예시코드를을 보고
'
를 붙이고 있다면 따라서 붙여주고, '
가 안붙어 있다면 따라서 안
붙여주면 됩니다.
;; 아래 설정을 통해
;; f5 키를 누르면 build-project 함수가 호출되게 만들 수 있습니다.
(global-set-key (kbd "<f5>") 'build-project)
:config :foo 같이 콜론 뒤에 글자가 오는 행태는 심볼을 만듭니다
emacs lisp 설정에 사용되는 함수들을 보다 보면 python의 keyword
인자같은 문법을 볼 때가 있습니다. 뒤에서 사용할 use-package
함수가
바로 그런 함수입니다.